rspec-i18n 0.2.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/.gitignore +13 -0
  2. data/History.rdoc +17 -2
  3. data/License.txt +1 -1
  4. data/README.rdoc +17 -6
  5. data/Rakefile +6 -4
  6. data/TODO.txt +5 -5
  7. data/VERSION.yml +3 -3
  8. data/examples/i18n/pt/person_spec.rb +117 -12
  9. data/lib/spec-i18n/command_line/language_help_formatter.rb +67 -14
  10. data/lib/spec-i18n/command_line/options.rb +18 -17
  11. data/lib/spec-i18n/dsl/main.rb +1 -1
  12. data/lib/spec-i18n/example/before_and_after_hooks.rb +14 -9
  13. data/lib/spec-i18n/example/example_group_methods.rb +1 -1
  14. data/lib/spec-i18n/example/subject.rb +29 -0
  15. data/lib/spec-i18n/example.rb +2 -1
  16. data/lib/spec-i18n/expectations/extensions/kernel.rb +1 -1
  17. data/lib/spec-i18n/languages.yml +40 -3
  18. data/lib/spec-i18n/matchers/be.rb +19 -0
  19. data/lib/spec-i18n/matchers/method_missing.rb +25 -0
  20. data/lib/spec-i18n/matchers/register_all_matchers.rb +10 -0
  21. data/lib/spec-i18n/matchers/translate_basic_matchers.rb +28 -0
  22. data/lib/spec-i18n/matchers.rb +6 -0
  23. data/lib/spec-i18n/parser/natural_language.rb +19 -27
  24. data/lib/spec-i18n/runner/configuration.rb +3 -0
  25. data/lib/spec-i18n/spec_language.rb +3 -0
  26. data/lib/spec-i18n.rb +2 -1
  27. data/rspec-i18n.gemspec +57 -18
  28. data/spec/spec-i18n/command_line/language_help_formatter_spec.rb +73 -4
  29. data/spec/spec-i18n/dsl/main_spec.rb +1 -1
  30. data/spec/spec-i18n/example/subject_spec.rb +125 -0
  31. data/spec/spec-i18n/expectations/kernel_spec.rb +1 -0
  32. data/spec/spec-i18n/matchers/be_close_spec.rb +40 -0
  33. data/spec/spec-i18n/matchers/be_instance_of_spec.rb +32 -0
  34. data/spec/spec-i18n/matchers/be_kind_of_spec.rb +37 -0
  35. data/spec/spec-i18n/matchers/be_spec.rb +61 -0
  36. data/spec/spec-i18n/matchers/eql_spec.rb +33 -0
  37. data/spec/spec-i18n/matchers/equal_spec.rb +26 -0
  38. data/spec/spec-i18n/matchers/exist_spec.rb +45 -0
  39. data/spec/spec-i18n/matchers/have_spec.rb +61 -0
  40. data/spec/spec-i18n/matchers/include_spec.rb +34 -0
  41. data/spec/spec-i18n/matchers/match_spec.rb +36 -0
  42. data/spec/spec-i18n/matchers/raise_error_spec.rb +25 -0
  43. data/spec/spec-i18n/matchers/register_all_matchers_spec.rb +17 -0
  44. data/spec/spec-i18n/matchers/satisfy_spec.rb +28 -0
  45. data/spec/spec-i18n/parser/natural_language_spec.rb +42 -58
  46. data/spec/spec-i18n/spec_examples/pt/pessoa_spec.rb +153 -0
  47. data/spec/spec-i18n/spec_language_spec.rb +6 -0
  48. data/spec/spec.opts +1 -1
  49. data/spec/spec_helper.rb +44 -0
  50. metadata +66 -13
  51. data/pkg/rspec-i18n-0.1.0.gem +0 -0
  52. data/pkg/rspec-i18n-0.2.0.gem +0 -0
  53. data/spec/spec-i18n/example_spec.rb +0 -47
@@ -0,0 +1,153 @@
1
+ require 'spec-i18n'
2
+
3
+ Spec::Runner.configure do |config|
4
+ config.spec_language :pt
5
+ end
6
+
7
+ class Pessoa
8
+ attr_accessor :idade
9
+ def initialize(nome, sobrenome, opcoes={})
10
+ @nome = nome
11
+ @sobrenome = sobrenome
12
+ @idade = opcoes[:idade]
13
+ end
14
+
15
+ def nome_completo
16
+ "#{@nome} #{@sobrenome}"
17
+ end
18
+
19
+ def maior_de_idade?
20
+ return true if @idade >= 18
21
+ false
22
+ end
23
+
24
+ def pronto_para_votar?
25
+ maior_de_idade?
26
+ end
27
+
28
+ def pronto_para_dirigir?
29
+ maior_de_idade?
30
+ end
31
+
32
+ def autorizado_a_beber?
33
+ maior_de_idade?
34
+ end
35
+ end
36
+
37
+ # Silly Tests for specifying the library in portuguese language
38
+ descreva Pessoa do
39
+
40
+ antes(:de_todos) do
41
+ @pessoa = Pessoa.new("Homer", "Simpson")
42
+ end
43
+
44
+ antes(:de_cada) do
45
+ @pessoas = [@pessoa]
46
+ end
47
+
48
+ depois(:de_todos) do
49
+ @outras_pessoas = @pessoas.dup
50
+ end
51
+
52
+ depois(:de_cada) do
53
+ @outras_pessoas = []
54
+ end
55
+
56
+ depois(:suite) do
57
+ @pessoas = []
58
+ end
59
+
60
+ exemplo 'deve ser uma instancia da classe Pessoa' do
61
+ @pessoa.deve ser_instancia_de(Pessoa)
62
+ end
63
+
64
+ exemplo 'deve incluir uma pessoa' do
65
+ @pessoas.deve incluir(@pessoa)
66
+ end
67
+
68
+ exemplo 'deve ser do tipo Pessoa' do
69
+ @pessoa.deve ser_do_tipo(Pessoa)
70
+ end
71
+
72
+ exemplo 'deve ter pelo menos uma pessoa' do
73
+ @pessoas.deve ter_no_minimo(1).items
74
+ end
75
+
76
+ exemplo 'deve ter exatamente duas pessoas' do
77
+ @pessoas << @pessoa
78
+ @pessoas.deve ter_exatamente(2).items
79
+ end
80
+
81
+ exemplo 'deve ter no maximo tres pessoas' do
82
+ @pessoas = []
83
+ @pessoas.deve ter_no_maximo(3).items
84
+ end
85
+
86
+ contexto "Nome completo" do
87
+
88
+ antes(:de_cada_exemplo) do
89
+ @pessoa = Pessoa.new("Tomás", "D'Stefano")
90
+ end
91
+
92
+ exemplo "deve retornar o nome completo" do
93
+ @pessoa.nome_completo.deve ==("Tomás D'Stefano")
94
+ end
95
+
96
+ exemplo 'nome completo não pode ser nulo' do
97
+ @pessoa.nome_completo.nao_deve ser_igual_a(nil)
98
+ end
99
+
100
+ end
101
+
102
+ contexto "a idade" do
103
+
104
+ antes(:de_todos_exemplos) do
105
+ @pessoa = Pessoa.new("Aaromn", "Monkey", :idade => 20)
106
+ end
107
+
108
+ especificar "deve ser opcional" do
109
+ @pessoa.idade.deve ser_igual_a(20)
110
+ end
111
+ end
112
+
113
+ contexto 'maior de idade' do
114
+ assunto { Pessoa.new('Aaron', 'Monkey', :idade => 18) }
115
+
116
+ exemplo "deve estar pronto para votar" do
117
+ deve estar_pronto_para_votar
118
+ end
119
+
120
+ exemplo "deve ser maior de idade" do
121
+ deve ser_maior_de_idade
122
+ end
123
+
124
+ exemplo "deve estar pronto para dirigir" do
125
+ assunto.deve estar_pronto_para_dirigir
126
+ end
127
+
128
+ exemplo "deve estar autorizado para beber =D" do
129
+ assunto.deve estar_autorizado_a_beber
130
+ end
131
+ end
132
+
133
+ contexto 'menor de idade' do
134
+ assunto { Pessoa.new('Aaron', 'Monkey', :idade => 17) }
135
+
136
+ exemplo "nao deve estar pronto para votar" do
137
+ nao_deve estar_pronto_para_votar
138
+ end
139
+
140
+ exemplo "nao deve ser maior de idade" do
141
+ nao_deve ser_maior_de_idade
142
+ end
143
+
144
+ exemplo "nao deve estar pronto para votar" do
145
+ assunto.nao_deve estar_pronto_para_votar
146
+ end
147
+
148
+ exemplo "nao deve estar autorizado para beber =(" do
149
+ assunto.nao_deve estar_autorizado_a_beber
150
+ end
151
+ end
152
+
153
+ end
@@ -13,4 +13,10 @@ describe SpecI18n do
13
13
  spec_language.should == language
14
14
  end
15
15
  end
16
+
17
+ it "should assign the natural language" do
18
+ language = 'pt'
19
+ Spec::Runner.configuration.spec_language(language)
20
+ natural_language.keywords.should == Parser::NaturalLanguage.get(spec_language).keywords
21
+ end
16
22
  end
data/spec/spec.opts CHANGED
@@ -1,3 +1,3 @@
1
1
  --colour
2
2
  --diff
3
- --format specdoc
3
+ --format specdoc
data/spec/spec_helper.rb CHANGED
@@ -5,6 +5,28 @@ require 'spec-i18n'
5
5
 
6
6
  $:.unshift(File.dirname(__FILE__), '../lib')
7
7
 
8
+ include SpecI18n
9
+
10
+ def portuguese_language(expected)
11
+ pt = Parser::NaturalLanguage.get("pt")
12
+ SpecI18n.stub!(:natural_language).and_return(pt)
13
+
14
+ expected['matchers']['be'] = 'ser|estar' unless expected['matchers'].nil?
15
+
16
+ predicade = pt.stub(:keywords).and_return(expected)
17
+ expected
18
+ end
19
+
20
+ def spanish_language(expected)
21
+ es = Parser::NaturalLanguage.get("es")
22
+ SpecI18n.stub!(:natural_language).and_return(es)
23
+
24
+ expected['matchers']['be'] = 'ser|estar' unless expected['matchers'].nil?
25
+
26
+ predicade = es.stub(:keywords).and_return(expected)
27
+ expected
28
+ end
29
+
8
30
  def with_sandboxed_options
9
31
  attr_reader :options
10
32
 
@@ -38,3 +60,25 @@ def with_sandboxed_config
38
60
 
39
61
  yield
40
62
  end
63
+
64
+ module Spec
65
+ module Matchers
66
+ def fail_with(message)
67
+ raise_error(Spec::Expectations::ExpectationNotMetError, message)
68
+ end
69
+ end
70
+ end
71
+
72
+ module Spec
73
+ module Example
74
+ class ExampleGroupDouble < ExampleGroup
75
+ ::Spec::Runner.options.remove_example_group self
76
+ def register_example_group(klass)
77
+ #ignore
78
+ end
79
+ def initialize(proxy=nil, &block)
80
+ super(proxy || ExampleProxy.new, &block)
81
+ end
82
+ end
83
+ end
84
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-i18n
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas D'Stefano
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-05 00:00:00 -02:00
12
+ date: 2010-01-19 00:00:00 -02:00
13
13
  default_executable: rspec-i18n
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,17 +20,27 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 1.2.9
23
+ version: 1.3.0
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
- name: cucumber
26
+ name: terminal-table
27
27
  type: :runtime
28
28
  version_requirement:
29
29
  version_requirements: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.5.3
33
+ version: 1.4.2
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: term-ansicolor
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.0.4
34
44
  version:
35
45
  - !ruby/object:Gem::Dependency
36
46
  name: rspec
@@ -43,14 +53,24 @@ dependencies:
43
53
  version: 1.2.9
44
54
  version:
45
55
  - !ruby/object:Gem::Dependency
46
- name: cucumber
56
+ name: terminal-table
47
57
  type: :development
48
58
  version_requirement:
49
59
  version_requirements: !ruby/object:Gem::Requirement
50
60
  requirements:
51
61
  - - ">="
52
62
  - !ruby/object:Gem::Version
53
- version: 0.5.3
63
+ version: 1.4.2
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: term-ansicolor
67
+ type: :development
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "="
72
+ - !ruby/object:Gem::Version
73
+ version: 1.0.4
54
74
  version:
55
75
  description: A internacionalization tool written in Ruby for the Rspec Framework
56
76
  email: tomasdestefi@gmail.com
@@ -61,6 +81,7 @@ extensions: []
61
81
  extra_rdoc_files:
62
82
  - README.rdoc
63
83
  files:
84
+ - .gitignore
64
85
  - History.rdoc
65
86
  - License.txt
66
87
  - README.rdoc
@@ -78,18 +99,22 @@ files:
78
99
  - lib/spec-i18n/example.rb
79
100
  - lib/spec-i18n/example/before_and_after_hooks.rb
80
101
  - lib/spec-i18n/example/example_group_methods.rb
102
+ - lib/spec-i18n/example/subject.rb
81
103
  - lib/spec-i18n/expectations.rb
82
104
  - lib/spec-i18n/expectations/extensions.rb
83
105
  - lib/spec-i18n/expectations/extensions/kernel.rb
84
106
  - lib/spec-i18n/languages.yml
107
+ - lib/spec-i18n/matchers.rb
108
+ - lib/spec-i18n/matchers/be.rb
109
+ - lib/spec-i18n/matchers/method_missing.rb
110
+ - lib/spec-i18n/matchers/register_all_matchers.rb
111
+ - lib/spec-i18n/matchers/translate_basic_matchers.rb
85
112
  - lib/spec-i18n/parser.rb
86
113
  - lib/spec-i18n/parser/natural_language.rb
87
114
  - lib/spec-i18n/platform.rb
88
115
  - lib/spec-i18n/runner.rb
89
116
  - lib/spec-i18n/runner/configuration.rb
90
117
  - lib/spec-i18n/spec_language.rb
91
- - pkg/rspec-i18n-0.1.0.gem
92
- - pkg/rspec-i18n-0.2.0.gem
93
118
  - rspec-i18n.gemspec
94
119
  - spec/spec-i18n/command_line/language_help_formatter_spec.rb
95
120
  - spec/spec-i18n/command_line/main_spec.rb
@@ -97,11 +122,25 @@ files:
97
122
  - spec/spec-i18n/dsl/main_spec.rb
98
123
  - spec/spec-i18n/example/before_and_after_hooks_spec.rb
99
124
  - spec/spec-i18n/example/example_group_methods_spec.rb
100
- - spec/spec-i18n/example_spec.rb
125
+ - spec/spec-i18n/example/subject_spec.rb
101
126
  - spec/spec-i18n/expectations/kernel_spec.rb
127
+ - spec/spec-i18n/matchers/be_close_spec.rb
128
+ - spec/spec-i18n/matchers/be_instance_of_spec.rb
129
+ - spec/spec-i18n/matchers/be_kind_of_spec.rb
130
+ - spec/spec-i18n/matchers/be_spec.rb
131
+ - spec/spec-i18n/matchers/eql_spec.rb
132
+ - spec/spec-i18n/matchers/equal_spec.rb
133
+ - spec/spec-i18n/matchers/exist_spec.rb
134
+ - spec/spec-i18n/matchers/have_spec.rb
135
+ - spec/spec-i18n/matchers/include_spec.rb
136
+ - spec/spec-i18n/matchers/match_spec.rb
137
+ - spec/spec-i18n/matchers/raise_error_spec.rb
138
+ - spec/spec-i18n/matchers/register_all_matchers_spec.rb
139
+ - spec/spec-i18n/matchers/satisfy_spec.rb
102
140
  - spec/spec-i18n/parser/natural_language_spec.rb
103
141
  - spec/spec-i18n/runner/configuration_spec.rb
104
142
  - spec/spec-i18n/runner/runner_spec.rb
143
+ - spec/spec-i18n/spec_examples/pt/pessoa_spec.rb
105
144
  - spec/spec-i18n/spec_language_spec.rb
106
145
  - spec/spec.opts
107
146
  - spec/spec_helper.rb
@@ -114,9 +153,9 @@ post_install_message: |
114
153
  --------------------------------------------------------------------------------
115
154
  U P G R A D I N G
116
155
 
117
- Thank you for installing rspec-i18n-0.2.1
156
+ Thank you for installing rspec-i18n-1.0.0
118
157
  Please be sure to read http://wiki.github.com/tomas-stefano/rspec-i18n/upgrading
119
- for important information about this release.
158
+ for information about this release.
120
159
 
121
160
  Remember: 'TDD is a muscle. You have to exercise it.' =) (Brian Liles)
122
161
 
@@ -152,11 +191,25 @@ test_files:
152
191
  - spec/spec-i18n/dsl/main_spec.rb
153
192
  - spec/spec-i18n/example/before_and_after_hooks_spec.rb
154
193
  - spec/spec-i18n/example/example_group_methods_spec.rb
155
- - spec/spec-i18n/example_spec.rb
194
+ - spec/spec-i18n/example/subject_spec.rb
156
195
  - spec/spec-i18n/expectations/kernel_spec.rb
196
+ - spec/spec-i18n/matchers/be_close_spec.rb
197
+ - spec/spec-i18n/matchers/be_instance_of_spec.rb
198
+ - spec/spec-i18n/matchers/be_kind_of_spec.rb
199
+ - spec/spec-i18n/matchers/be_spec.rb
200
+ - spec/spec-i18n/matchers/eql_spec.rb
201
+ - spec/spec-i18n/matchers/equal_spec.rb
202
+ - spec/spec-i18n/matchers/exist_spec.rb
203
+ - spec/spec-i18n/matchers/have_spec.rb
204
+ - spec/spec-i18n/matchers/include_spec.rb
205
+ - spec/spec-i18n/matchers/match_spec.rb
206
+ - spec/spec-i18n/matchers/raise_error_spec.rb
207
+ - spec/spec-i18n/matchers/register_all_matchers_spec.rb
208
+ - spec/spec-i18n/matchers/satisfy_spec.rb
157
209
  - spec/spec-i18n/parser/natural_language_spec.rb
158
210
  - spec/spec-i18n/runner/configuration_spec.rb
159
211
  - spec/spec-i18n/runner/runner_spec.rb
212
+ - spec/spec-i18n/spec_examples/pt/pessoa_spec.rb
160
213
  - spec/spec-i18n/spec_language_spec.rb
161
214
  - spec/spec_helper.rb
162
215
  - examples/i18n/pt/person_spec.rb
Binary file
Binary file
@@ -1,47 +0,0 @@
1
- require 'spec-i18n'
2
-
3
- Spec::Runner.configure do |config|
4
- config.spec_language :pt
5
- end
6
-
7
- class Pessoa
8
- attr_reader :idade
9
- def initialize(nome, sobrenome, idade=0)
10
- @nome = nome
11
- @sobrenome = sobrenome
12
- @idade = idade
13
- end
14
-
15
- def nome_completo
16
- "#{@nome} #{@sobrenome}"
17
- end
18
- end
19
-
20
- # Silly Tests
21
- descreva Pessoa do
22
-
23
- antes(:de_todos) do
24
- @pessoa = Pessoa.new("Tomás", "D'Stefano")
25
- end
26
-
27
- antes(:de_cada) do
28
- @pessoas = [@pessoa]
29
- end
30
-
31
- depois(:de_todos) do
32
- @outras_pessoas = @pessoas.dup
33
- end
34
-
35
- depois(:de_cada) do
36
- @outras_pessoas = []
37
- end
38
-
39
- exemplo "deve retornar o nome completo" do
40
- @pessoa.nome_completo.deve == "Tomás D'Stefano"
41
- end
42
-
43
- especificar "a idade é opcional" do
44
- Pessoa.new("Aaromn", "Monkey", 20).idade.deve == 20
45
- end
46
-
47
- end