rspec-i18n 0.2.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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