Module: Spec::Matchers
- Defined in:
- lib/spec-i18n/matchers/be.rb,
lib/spec-i18n/matchers/method_missing.rb,
lib/spec-i18n/matchers/register_all_matchers.rb,
lib/spec-i18n/matchers/translate_basic_matchers.rb
Defined Under Namespace
Classes: Be
Constant Summary
collapse
- RSPEC_MATCHERS =
[ :be_close, :be_an_instance_of, :be_a_kind_of,
:eql, :equal, :exist, :have, :have_at_least,
:have_at_most, :have_exactly, :include, :match,
:raise_error, :satisfy ]
- MATCHERS_WITH_QUESTIONS =
[ :eql, :equal ]
Class Method Summary
collapse
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args, &block) ⇒ Object
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# File 'lib/spec-i18n/matchers/method_missing.rb', line 3
def method_missing(sym, *args, &block)
begin
language = SpecI18n.natural_language
be_word = language.keywords['matchers']['be']
sym = be_to_english(sym, be_word)
end
return Matchers::BePredicate.new(sym, *args, &block) if sym.to_s =~ /^be_/
return Matchers::Has.new(sym, *args, &block) if sym.to_s =~ /^have_/
super
end
|
Class Method Details
.register_all_matchers ⇒ Object
4
5
6
7
8
9
10
11
12
|
# File 'lib/spec-i18n/matchers/register_all_matchers.rb', line 4
def self.register_all_matchers
Spec::Matchers::Be.register_be_matcher
["true", "false", "nil", "empty"].each do |matcher|
class_eval <<-BE_WORD
translate_be_#{matcher}
BE_WORD
end
translate_basic_matchers
end
|
.translate_basic_matchers ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/spec-i18n/matchers/translate_basic_matchers.rb', line 12
def translate_basic_matchers
language = SpecI18n.natural_language
RSPEC_MATCHERS.each do |rspec_matcher|
matcher = language.keywords['matchers'][rspec_matcher.to_s]
next unless matcher
matcher.split('|').map do |matcher_value|
alias_method "#{matcher_value}?", "#{rspec_matcher}?" if MATCHERS_WITH_QUESTIONS.include?(rspec_matcher)
alias_method matcher_value, rspec_matcher
end
end
end
|
Instance Method Details
#be_to_english(sym, be_word) ⇒ Object
:ser_matcher == :be_matcher :be_true == :be_true
19
20
21
22
23
|
# File 'lib/spec-i18n/matchers/method_missing.rb', line 19
def be_to_english(sym, be_word)
be_word = be_word || 'be'
sym.to_s.gsub(/#{be_word}/, 'be').to_sym
end
|
#matcher_be_some(options = {}) ⇒ Object
62
63
64
65
|
# File 'lib/spec-i18n/matchers/be.rb', line 62
def matcher_be_some(options={})
option = options.keys.select { |key| options[key] != nil }
language.word_be(option.to_s).map { |word| word.to_sym}
end
|
#translate_be_empty ⇒ Object
52
53
54
55
56
57
58
59
60
|
# File 'lib/spec-i18n/matchers/be.rb', line 52
def translate_be_empty
matcher_be_some(:empty => true).each do |matcher|
Spec::Matchers.define matcher do
match do |actual|
actual.empty?
end
end
end
end
|
#translate_be_false ⇒ Object
32
33
34
35
36
37
38
39
40
|
# File 'lib/spec-i18n/matchers/be.rb', line 32
def translate_be_false
matcher_be_some(:false => true).each do |matcher|
Spec::Matchers.define matcher do
match do |actual|
!actual
end
end
end
end
|
#translate_be_nil ⇒ Object
42
43
44
45
46
47
48
49
50
|
# File 'lib/spec-i18n/matchers/be.rb', line 42
def translate_be_nil
matcher_be_some(:nil => true).each do |matcher|
Spec::Matchers.define matcher do
match do |actual|
actual.nil?
end
end
end
end
|
#translate_be_true ⇒ Object
22
23
24
25
26
27
28
29
30
|
# File 'lib/spec-i18n/matchers/be.rb', line 22
def translate_be_true
matcher_be_some(:true => true).each do |matcher|
Spec::Matchers.define matcher do
match do |actual|
!!actual
end
end
end
end
|