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.
- data/.gitignore +13 -0
- data/History.rdoc +17 -2
- data/License.txt +1 -1
- data/README.rdoc +17 -6
- data/Rakefile +6 -4
- data/TODO.txt +5 -5
- data/VERSION.yml +3 -3
- data/examples/i18n/pt/person_spec.rb +117 -12
- data/lib/spec-i18n/command_line/language_help_formatter.rb +67 -14
- data/lib/spec-i18n/command_line/options.rb +18 -17
- data/lib/spec-i18n/dsl/main.rb +1 -1
- data/lib/spec-i18n/example/before_and_after_hooks.rb +14 -9
- data/lib/spec-i18n/example/example_group_methods.rb +1 -1
- data/lib/spec-i18n/example/subject.rb +29 -0
- data/lib/spec-i18n/example.rb +2 -1
- data/lib/spec-i18n/expectations/extensions/kernel.rb +1 -1
- data/lib/spec-i18n/languages.yml +40 -3
- data/lib/spec-i18n/matchers/be.rb +19 -0
- data/lib/spec-i18n/matchers/method_missing.rb +25 -0
- data/lib/spec-i18n/matchers/register_all_matchers.rb +10 -0
- data/lib/spec-i18n/matchers/translate_basic_matchers.rb +28 -0
- data/lib/spec-i18n/matchers.rb +6 -0
- data/lib/spec-i18n/parser/natural_language.rb +19 -27
- data/lib/spec-i18n/runner/configuration.rb +3 -0
- data/lib/spec-i18n/spec_language.rb +3 -0
- data/lib/spec-i18n.rb +2 -1
- data/rspec-i18n.gemspec +57 -18
- data/spec/spec-i18n/command_line/language_help_formatter_spec.rb +73 -4
- data/spec/spec-i18n/dsl/main_spec.rb +1 -1
- data/spec/spec-i18n/example/subject_spec.rb +125 -0
- data/spec/spec-i18n/expectations/kernel_spec.rb +1 -0
- data/spec/spec-i18n/matchers/be_close_spec.rb +40 -0
- data/spec/spec-i18n/matchers/be_instance_of_spec.rb +32 -0
- data/spec/spec-i18n/matchers/be_kind_of_spec.rb +37 -0
- data/spec/spec-i18n/matchers/be_spec.rb +61 -0
- data/spec/spec-i18n/matchers/eql_spec.rb +33 -0
- data/spec/spec-i18n/matchers/equal_spec.rb +26 -0
- data/spec/spec-i18n/matchers/exist_spec.rb +45 -0
- data/spec/spec-i18n/matchers/have_spec.rb +61 -0
- data/spec/spec-i18n/matchers/include_spec.rb +34 -0
- data/spec/spec-i18n/matchers/match_spec.rb +36 -0
- data/spec/spec-i18n/matchers/raise_error_spec.rb +25 -0
- data/spec/spec-i18n/matchers/register_all_matchers_spec.rb +17 -0
- data/spec/spec-i18n/matchers/satisfy_spec.rb +28 -0
- data/spec/spec-i18n/parser/natural_language_spec.rb +42 -58
- data/spec/spec-i18n/spec_examples/pt/pessoa_spec.rb +153 -0
- data/spec/spec-i18n/spec_language_spec.rb +6 -0
- data/spec/spec.opts +1 -1
- data/spec/spec_helper.rb +44 -0
- metadata +66 -13
- data/pkg/rspec-i18n-0.1.0.gem +0 -0
- data/pkg/rspec-i18n-0.2.0.gem +0 -0
- data/spec/spec-i18n/example_spec.rb +0 -47
data/.gitignore
ADDED
data/History.rdoc
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
=== Version 1.0.0
|
2
|
+
|
3
|
+
* enhancements
|
4
|
+
* Support for rspec 1.3
|
5
|
+
* Add the translation of following matchers: be_close, be_instance_of,
|
6
|
+
be_kind_of, eql, equal, exist, have(have_exactly), have_at_least,
|
7
|
+
have_at_most, include, match, raise_error(raise_exception), satisfy
|
8
|
+
* Add the translation of subject keywords(subject, its, should and should_not)
|
9
|
+
* Add the matchers and hooks in executable list keywords
|
10
|
+
* Removing the cucumber dependency and add term-ansicolor and
|
11
|
+
terminal-table dependency
|
12
|
+
* Add the be predicates for the rspec 1.3
|
13
|
+
* Refactoring Parser::NaturalLanguage.get(SpecI18n.spec_language)
|
14
|
+
duplications
|
15
|
+
|
1
16
|
=== Version 0.2.1
|
2
17
|
|
3
18
|
This release has some bugfixes in the command_line executable
|
@@ -14,8 +29,8 @@ This release has improvements to the commandline and some fixes internals
|
|
14
29
|
|
15
30
|
This is the first preview release of Rspec-i18n, a Internacionalization Development library for Ruby.
|
16
31
|
|
17
|
-
* Added translation to all the base keywords(describe, it, should, should_not,
|
32
|
+
* Added translation to all the base keywords(describe, it, should, should_not,
|
18
33
|
before(:each), before(:all), before(:suite), after(:each), after(:all),
|
19
34
|
after(:suite))
|
20
35
|
* Added a languages.yml. Will be translated to all languages.
|
21
|
-
* Added a simple parser for the read the languages in languages.yml.
|
36
|
+
* Added a simple parser for the read the languages in languages.yml.
|
data/License.txt
CHANGED
data/README.rdoc
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
= Rspec-i18n
|
2
2
|
|
3
|
+
* http://github.com/tomas-stefano/rspec-i18n/wikis
|
4
|
+
* http://gemcutter.org/gems/rspec-i18n
|
5
|
+
* http://rspec-i18n.lighthouseapp.com
|
6
|
+
|
3
7
|
== Description
|
4
8
|
|
5
9
|
The Rspec-i18n gem provide a easy way to write specs in any language you
|
@@ -11,8 +15,9 @@ But if you don't prefer that, you'll like the Rspec-i18n.
|
|
11
15
|
|
12
16
|
== Synopsis
|
13
17
|
|
14
|
-
Rspec-i18n will supports any language you want
|
15
|
-
|
18
|
+
Rspec-i18n will supports any language you want
|
19
|
+
(See http://github.com/tomas-stefano/rspec-i18n/blob/master/lib/spec-i18n/languages.yml file).
|
20
|
+
This is Portuguese(Brazil):
|
16
21
|
|
17
22
|
require 'spec'
|
18
23
|
require 'spec-i18n'
|
@@ -26,7 +31,7 @@ Portuguese(Brazil):
|
|
26
31
|
|
27
32
|
# In spec/pessoa_spec.rb
|
28
33
|
|
29
|
-
|
34
|
+
require 'spec_helper'
|
30
35
|
|
31
36
|
descreva Pessoa do
|
32
37
|
antes(:de_cada) do
|
@@ -41,11 +46,17 @@ Portuguese(Brazil):
|
|
41
46
|
|
42
47
|
== Examples
|
43
48
|
|
44
|
-
See more examples in
|
49
|
+
See more examples in http://github.com/tomas-stefano/rspec-i18n/blob/master/examples/i18n
|
45
50
|
|
46
51
|
== Listing the available languages
|
47
52
|
|
48
|
-
|
53
|
+
rspec-i18n --language help
|
54
|
+
|
55
|
+
== Listing the available keywords for the language
|
56
|
+
|
57
|
+
rspec-i18n --language pt
|
58
|
+
|
59
|
+
rspec-i18n --language es
|
49
60
|
|
50
61
|
== Adding a new language or completing a existing one(based on Cucumber implementation)
|
51
62
|
|
@@ -53,7 +64,7 @@ See more examples in the examples folder
|
|
53
64
|
2. Add your language keywords to languages.yml
|
54
65
|
3. Commit and push your changes - then send a pull request at Github
|
55
66
|
|
56
|
-
|
67
|
+
** OBS: Hints for better words in languages.yml are Welcome =D.
|
57
68
|
|
58
69
|
== Install
|
59
70
|
|
data/Rakefile
CHANGED
@@ -12,7 +12,7 @@ POST_MESSAGE = <<-POST_INSTALL_MESSAGE
|
|
12
12
|
|
13
13
|
Thank you for installing rspec-i18n-#{SpecI18n::VERSION}
|
14
14
|
Please be sure to read http://wiki.github.com/tomas-stefano/rspec-i18n/upgrading
|
15
|
-
for
|
15
|
+
for information about this release.
|
16
16
|
|
17
17
|
Remember: 'TDD is a muscle. You have to exercise it.' =) (Brian Liles)
|
18
18
|
|
@@ -29,11 +29,13 @@ begin
|
|
29
29
|
gemspec.homepage = "http://github.com/tomas-stefano/rspec-i18n"
|
30
30
|
gemspec.authors = ["Tomas D'Stefano"]
|
31
31
|
|
32
|
-
gemspec.add_dependency('rspec', '>= 1.
|
33
|
-
gemspec.add_dependency('
|
32
|
+
gemspec.add_dependency('rspec', '>= 1.3.0')
|
33
|
+
gemspec.add_dependency('terminal-table', '>= 1.4.2')
|
34
|
+
gemspec.add_dependency('term-ansicolor', '1.0.4')
|
34
35
|
|
35
36
|
gemspec.add_development_dependency('rspec', '>= 1.2.9')
|
36
|
-
gemspec.add_development_dependency('
|
37
|
+
gemspec.add_development_dependency('terminal-table', '>= 1.4.2')
|
38
|
+
gemspec.add_development_dependency('term-ansicolor', '1.0.4')
|
37
39
|
|
38
40
|
gemspec.post_install_message = POST_MESSAGE
|
39
41
|
end
|
data/TODO.txt
CHANGED
@@ -1,25 +1,24 @@
|
|
1
1
|
== Refactoring
|
2
2
|
|
3
|
-
* The SpecI18n::Parser::NaturalLanguage.get(SpecI18n.spec_language) is duplicated in
|
4
|
-
some places - check a better way to implement this
|
5
3
|
* Simplified more and more tests!
|
6
4
|
* Find the right module for the example group specs(it/example) (I think =>
|
7
5
|
Spec::Example::ExampleGroupMethods but I think I was wrong)
|
6
|
+
* Need better hints for the 'its' word
|
8
7
|
|
9
8
|
== Future
|
10
9
|
|
11
|
-
* Translate all matchers
|
12
|
-
* Translate subjects
|
13
10
|
* Translate shared examples
|
11
|
+
* Translate nil, true, false and empty.
|
14
12
|
* Put a #language header in the spec_helper file (Cucumber Style) instead load from config(maintain the two options)
|
15
13
|
* Create the directory features to test with Cucumber
|
14
|
+
* Verifying if it's possible to translate error and success messages
|
16
15
|
* Make the describe/it i18n available from a class
|
17
16
|
|
18
17
|
Example:
|
19
18
|
# class PilhaSpec < Spec::ExampleGroup
|
20
19
|
# descreva Pilha, "sem nenhum elemento"
|
21
20
|
#
|
22
|
-
# antes
|
21
|
+
# antes do
|
23
22
|
# @pilha = Pilha.new
|
24
23
|
# end
|
25
24
|
#
|
@@ -30,3 +29,4 @@
|
|
30
29
|
# end
|
31
30
|
|
32
31
|
* Check a better way to manipulating the mocks and stubs for i18n (What do you think?)
|
32
|
+
* Verify the following matchers: simple_matcher, wrap_expectation, respond_to, change and match_unless_raises.
|
data/VERSION.yml
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require 'spec'
|
3
2
|
require 'spec-i18n'
|
4
3
|
|
5
4
|
Spec::Runner.configure do |config|
|
@@ -7,23 +6,40 @@ Spec::Runner.configure do |config|
|
|
7
6
|
end
|
8
7
|
|
9
8
|
class Pessoa
|
10
|
-
|
11
|
-
def initialize(nome, sobrenome,
|
9
|
+
attr_accessor :idade
|
10
|
+
def initialize(nome, sobrenome, opcoes={})
|
12
11
|
@nome = nome
|
13
12
|
@sobrenome = sobrenome
|
14
|
-
@idade = idade
|
13
|
+
@idade = opcoes[:idade]
|
15
14
|
end
|
16
15
|
|
17
16
|
def nome_completo
|
18
17
|
"#{@nome} #{@sobrenome}"
|
19
18
|
end
|
19
|
+
|
20
|
+
def maior_de_idade?
|
21
|
+
return true if @idade >= 18
|
22
|
+
false
|
23
|
+
end
|
24
|
+
|
25
|
+
def pronto_para_votar?
|
26
|
+
maior_de_idade?
|
27
|
+
end
|
28
|
+
|
29
|
+
def pronto_para_dirigir?
|
30
|
+
maior_de_idade?
|
31
|
+
end
|
32
|
+
|
33
|
+
def autorizado_a_beber?
|
34
|
+
maior_de_idade?
|
35
|
+
end
|
20
36
|
end
|
21
37
|
|
22
|
-
# Silly Tests
|
38
|
+
# Silly Tests for show to you how to use this library in portuguese language
|
23
39
|
descreva Pessoa do
|
24
40
|
|
25
41
|
antes(:de_todos) do
|
26
|
-
@pessoa = Pessoa.new("
|
42
|
+
@pessoa = Pessoa.new("Homer", "Simpson")
|
27
43
|
end
|
28
44
|
|
29
45
|
antes(:de_cada) do
|
@@ -37,13 +53,102 @@ descreva Pessoa do
|
|
37
53
|
depois(:de_cada) do
|
38
54
|
@outras_pessoas = []
|
39
55
|
end
|
40
|
-
|
41
|
-
|
42
|
-
@
|
56
|
+
|
57
|
+
depois(:suite) do
|
58
|
+
@pessoas = []
|
43
59
|
end
|
44
|
-
|
45
|
-
|
46
|
-
|
60
|
+
|
61
|
+
exemplo 'deve ser uma instancia da classe Pessoa' do
|
62
|
+
@pessoa.deve ser_instancia_de(Pessoa)
|
63
|
+
end
|
64
|
+
|
65
|
+
exemplo 'deve incluir uma pessoa' do
|
66
|
+
@pessoas.deve incluir(@pessoa)
|
67
|
+
end
|
68
|
+
|
69
|
+
exemplo 'deve ser do tipo Pessoa' do
|
70
|
+
@pessoa.deve ser_do_tipo(Pessoa)
|
71
|
+
end
|
72
|
+
|
73
|
+
exemplo 'deve ter pelo menos uma pessoa' do
|
74
|
+
@pessoas.deve ter_no_minimo(1).items
|
75
|
+
end
|
76
|
+
|
77
|
+
exemplo 'deve ter exatamente duas pessoas' do
|
78
|
+
@pessoas << @pessoa
|
79
|
+
@pessoas.deve ter_exatamente(2).items
|
80
|
+
end
|
81
|
+
|
82
|
+
exemplo 'deve ter no maximo tres pessoas' do
|
83
|
+
@pessoas = []
|
84
|
+
@pessoas.deve ter_no_maximo(3).items
|
47
85
|
end
|
48
86
|
|
87
|
+
contexto "Nome completo" do
|
88
|
+
|
89
|
+
antes(:de_cada_exemplo) do
|
90
|
+
@pessoa = Pessoa.new("Tomás", "D'Stefano")
|
91
|
+
end
|
92
|
+
|
93
|
+
exemplo "deve retornar o nome completo" do
|
94
|
+
@pessoa.nome_completo.deve ==("Tomás D'Stefano")
|
95
|
+
end
|
96
|
+
|
97
|
+
exemplo 'nome completo não pode ser nulo' do
|
98
|
+
@pessoa.nome_completo.nao_deve ser_igual_a(nil)
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
contexto "a idade" do
|
104
|
+
|
105
|
+
antes(:de_todos_exemplos) do
|
106
|
+
@pessoa = Pessoa.new("Aaromn", "Monkey", :idade => 20)
|
107
|
+
end
|
108
|
+
|
109
|
+
especificar "deve ser opcional" do
|
110
|
+
@pessoa.idade.deve ser_igual_a(20)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
contexto 'maior de idade' do
|
115
|
+
assunto { Pessoa.new('Aaron', 'Monkey', :idade => 18) }
|
116
|
+
|
117
|
+
exemplo "deve estar pronto para votar" do
|
118
|
+
deve estar_pronto_para_votar
|
119
|
+
end
|
120
|
+
|
121
|
+
exemplo "deve ser maior de idade" do
|
122
|
+
deve ser_maior_de_idade
|
123
|
+
end
|
124
|
+
|
125
|
+
exemplo "deve estar pronto para dirigir" do
|
126
|
+
assunto.deve estar_pronto_para_dirigir
|
127
|
+
end
|
128
|
+
|
129
|
+
exemplo "deve estar autorizado para beber =D" do
|
130
|
+
assunto.deve estar_autorizado_a_beber
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
contexto 'menor de idade' do
|
135
|
+
assunto { Pessoa.new('Aaron', 'Monkey', :idade => 17) }
|
136
|
+
|
137
|
+
exemplo "nao deve estar pronto para votar" do
|
138
|
+
nao_deve estar_pronto_para_votar
|
139
|
+
end
|
140
|
+
|
141
|
+
exemplo "nao deve ser maior de idade" do
|
142
|
+
nao_deve ser_maior_de_idade
|
143
|
+
end
|
144
|
+
|
145
|
+
exemplo "nao deve estar pronto para votar" do
|
146
|
+
assunto.nao_deve estar_pronto_para_votar
|
147
|
+
end
|
148
|
+
|
149
|
+
exemplo "nao deve estar autorizado para beber =(" do
|
150
|
+
assunto.nao_deve estar_autorizado_a_beber
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
49
154
|
end
|
@@ -1,7 +1,5 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
3
|
-
require 'cucumber/formatter/unicode'
|
4
|
-
require 'cucumber/cli/language_help_formatter'
|
1
|
+
require 'term/ansicolor'
|
2
|
+
require 'terminal-table/import'
|
5
3
|
require 'spec-i18n/parser'
|
6
4
|
|
7
5
|
module SpecI18n
|
@@ -9,26 +7,81 @@ module SpecI18n
|
|
9
7
|
class LanguageHelpFormatter
|
10
8
|
|
11
9
|
class << self
|
10
|
+
include SpecI18n::Parser
|
11
|
+
include Term::ANSIColor
|
12
|
+
|
13
|
+
String.class_eval do
|
14
|
+
include Term::ANSIColor
|
15
|
+
end
|
12
16
|
|
13
17
|
# Cucumber print table is loading
|
14
18
|
# because I don't want reiventing the wheel
|
15
19
|
#
|
16
20
|
def list_languages_and_exit(io)
|
17
|
-
|
18
|
-
|
21
|
+
languages = list_languages
|
22
|
+
|
23
|
+
languages_table = table do
|
24
|
+
self.headings = ['Language', 'Name', 'Native']
|
25
|
+
languages.each do |language|
|
26
|
+
add_row language
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
print_table io, languages_table, :exit => true
|
19
31
|
end
|
20
32
|
|
21
33
|
def list_keywords_and_exit(io, lang)
|
22
|
-
|
23
|
-
|
24
|
-
|
34
|
+
|
35
|
+
language = NaturalLanguage.get(lang)
|
36
|
+
|
37
|
+
keywords = list_basic_keywords(language)
|
38
|
+
|
39
|
+
print_table io, table(nil, *keywords)
|
40
|
+
|
41
|
+
advanced_keywords = list_advanced_keywords(io, language)
|
42
|
+
|
43
|
+
print_table io, advanced_keywords, :exit => true
|
44
|
+
end
|
45
|
+
|
46
|
+
def list_languages
|
47
|
+
languages = SpecI18n::SPEC_LANGUAGES.keys.sort.map do |lang|
|
48
|
+
[ lang, grep_value(lang, 'name'), grep_value(lang, 'native') ]
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def grep_value(lang, key)
|
53
|
+
SpecI18n::SPEC_LANGUAGES[lang][key]
|
54
|
+
end
|
55
|
+
|
56
|
+
def list_basic_keywords(language)
|
57
|
+
NaturalLanguage::BASIC_KEYWORDS.map do |keyword|
|
58
|
+
words = language.keywords[keyword]
|
59
|
+
[ keyword, words.split('|').join(' / ')]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def list_advanced_keywords(io, language)
|
64
|
+
NaturalLanguage::ADVANCED_KEYWORDS.map do |keyword|
|
65
|
+
language_keywords = [keyword]
|
66
|
+
language.keywords[keyword].map do |key, values|
|
67
|
+
language_keywords << [key, values.to_s.split('|').join(' / ')]
|
68
|
+
end
|
69
|
+
|
70
|
+
keywords_table = table do
|
71
|
+
self.headings = [language_keywords.shift]
|
72
|
+
language_keywords.each do |keywords|
|
73
|
+
add_row keywords
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
keywords_table
|
78
|
+
|
79
|
+
end
|
25
80
|
end
|
26
81
|
|
27
|
-
def print_table(io, raw, options)
|
28
|
-
|
29
|
-
|
30
|
-
Cucumber::Ast::TreeWalker.new(nil, [formatter]).visit_multiline_arg(table)
|
31
|
-
Kernel.exit(0)
|
82
|
+
def print_table(io, raw, options={})
|
83
|
+
io.puts raw.to_s.send(options[:color] || :green).bold
|
84
|
+
Kernel.exit(0) if options[:exit]
|
32
85
|
end
|
33
86
|
end
|
34
87
|
|
@@ -13,34 +13,35 @@ module SpecI18n
|
|
13
13
|
def parse!(args)
|
14
14
|
@args = args
|
15
15
|
@args.extend(::OptionParser::Arguable)
|
16
|
-
|
17
16
|
@args.options do |opts|
|
18
|
-
opts.banner = [ "Usage: rspec-i18n [options] [LANGUAGE]", "",
|
19
|
-
"
|
20
|
-
|
21
|
-
"rspec-i18n --language pt"].join("\n")
|
22
|
-
|
23
|
-
opts.on("-l LANGUAGE", "--language LANGUAGE",
|
24
|
-
"List keywords for a particular language",
|
17
|
+
opts.banner = [ "Usage: rspec-i18n [options] [LANGUAGE]", "", "Examples:",
|
18
|
+
"rspec-i18n --language help", "rspec-i18n --language pt"].join("\n")
|
19
|
+
opts.on("-l LANGUAGE", "--language LANGUAGE", "List keywords for a particular language",
|
25
20
|
%{Run with "--language help" to see all languages}) do |language|
|
26
|
-
|
27
|
-
LanguageHelpFormatter.list_languages_and_exit(@output_stream)
|
28
|
-
else
|
29
|
-
LanguageHelpFormatter.list_keywords_and_exit(@output_stream, language)
|
30
|
-
end
|
21
|
+
print_languages(language)
|
31
22
|
end
|
32
23
|
opts.on_tail("-v", "--version", "Show version.") do
|
33
|
-
|
34
|
-
Kernel.exit(0)
|
24
|
+
print_and_exit(SpecI18n::VERSION)
|
35
25
|
end
|
36
26
|
opts.on_tail("-h", "--help", "You're looking at it.") do
|
37
|
-
|
38
|
-
Kernel.exit(0)
|
27
|
+
print_and_exit(opts.help)
|
39
28
|
end
|
40
29
|
end.parse!
|
41
30
|
self
|
42
31
|
end
|
43
32
|
|
33
|
+
def print_languages(language)
|
34
|
+
if language == 'help'
|
35
|
+
LanguageHelpFormatter.list_languages_and_exit(@output_stream)
|
36
|
+
else
|
37
|
+
LanguageHelpFormatter.list_keywords_and_exit(@output_stream, language)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def print_and_exit(message)
|
42
|
+
@output_stream.puts message
|
43
|
+
Kernel.exit(0)
|
44
|
+
end
|
44
45
|
end
|
45
46
|
end
|
46
47
|
end
|
data/lib/spec-i18n/dsl/main.rb
CHANGED
@@ -8,7 +8,7 @@ module Spec
|
|
8
8
|
#
|
9
9
|
# Register alias for the language specified
|
10
10
|
def register_adverbs
|
11
|
-
language = SpecI18n
|
11
|
+
language = SpecI18n.natural_language
|
12
12
|
@adverbs = language.dsl_keywords
|
13
13
|
@adverbs.each do |key, values|
|
14
14
|
values.map { |value| alias_method value, key }
|
@@ -3,17 +3,16 @@ module Spec
|
|
3
3
|
module BeforeAndAfterHooks
|
4
4
|
|
5
5
|
def register_hooks
|
6
|
-
language = SpecI18n
|
6
|
+
language = SpecI18n.natural_language
|
7
7
|
language.before_and_after_keywords.each do |key, values|
|
8
8
|
values.map { |value| alias_method value, key }
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
12
|
def before_parts(scope)
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
end
|
13
|
+
|
14
|
+
scope = grep_language_and_scope(scope) || scope
|
15
|
+
|
17
16
|
case scope
|
18
17
|
when :each; before_each_parts
|
19
18
|
when :all; before_all_parts
|
@@ -22,16 +21,22 @@ module Spec
|
|
22
21
|
end
|
23
22
|
|
24
23
|
def after_parts(scope)
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
end
|
24
|
+
|
25
|
+
scope = grep_language_and_scope(scope) || scope
|
26
|
+
|
29
27
|
case scope
|
30
28
|
when :each; after_each_parts
|
31
29
|
when :all; after_all_parts
|
32
30
|
when :suite; after_suite_parts
|
33
31
|
end
|
34
32
|
end
|
33
|
+
|
34
|
+
def grep_language_and_scope(scope)
|
35
|
+
if SpecI18n.spec_language
|
36
|
+
language = SpecI18n.natural_language
|
37
|
+
scope = grep_the_scope(scope, language.hooks_params_keywords)
|
38
|
+
end
|
39
|
+
end
|
35
40
|
|
36
41
|
# Receive a String Scope and return the scope in english for
|
37
42
|
# the rspec run the right method
|
@@ -3,7 +3,7 @@ module Spec
|
|
3
3
|
module ExampleGroupMethods
|
4
4
|
|
5
5
|
def self.register_example_adverbs
|
6
|
-
language = SpecI18n
|
6
|
+
language = SpecI18n.natural_language
|
7
7
|
@adverbs = language.example_group_keywords
|
8
8
|
@adverbs.each do |key, values|
|
9
9
|
values.map do |value|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Spec
|
2
|
+
module Example
|
3
|
+
module Subject
|
4
|
+
module ExampleGroupMethods
|
5
|
+
# TODO: Removing Duplications
|
6
|
+
class << self
|
7
|
+
def register_subjects
|
8
|
+
language = SpecI18n.natural_language
|
9
|
+
subject_and_its_keywords = language.subject_keywords.merge(language.its_keywords)
|
10
|
+
subject_and_its_keywords.each do |key, values|
|
11
|
+
values.map { |value| alias_method value, key }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
module ExampleMethods
|
17
|
+
class << self
|
18
|
+
def register_subjects
|
19
|
+
language = SpecI18n.natural_language
|
20
|
+
subject_and_expectation_keywords = language.subject_keywords.merge(language.expectation_keywords)
|
21
|
+
subject_and_expectation_keywords.each do |key, values|
|
22
|
+
values.map { |value| alias_method value, key }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/spec-i18n/example.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Kernel
|
2
2
|
def register_expectations_keywords
|
3
|
-
language = SpecI18n
|
3
|
+
language = SpecI18n.natural_language
|
4
4
|
@adverbs = language.expectation_keywords
|
5
5
|
@adverbs.each do |key, values|
|
6
6
|
values.map { |value| alias_method value, key }
|