rspec_sequel_matchers 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/.document +5 -0
  2. data/.gitignore +5 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +47 -0
  5. data/Rakefile +46 -0
  6. data/lib/rspec_sequel/association.rb +30 -0
  7. data/lib/rspec_sequel/base.rb +33 -0
  8. data/lib/rspec_sequel/matchers/have_column.rb +35 -0
  9. data/lib/rspec_sequel/matchers/have_many_to_many.rb +22 -0
  10. data/lib/rspec_sequel/matchers/have_many_to_one.rb +22 -0
  11. data/lib/rspec_sequel/matchers/have_one_to_many.rb +22 -0
  12. data/lib/rspec_sequel/matchers/validate_exact_length.rb +25 -0
  13. data/lib/rspec_sequel/matchers/validate_format.rb +25 -0
  14. data/lib/rspec_sequel/matchers/validate_includes.rb +25 -0
  15. data/lib/rspec_sequel/matchers/validate_integer.rb +21 -0
  16. data/lib/rspec_sequel/matchers/validate_length_range.rb +25 -0
  17. data/lib/rspec_sequel/matchers/validate_max_length.rb +25 -0
  18. data/lib/rspec_sequel/matchers/validate_min_length.rb +25 -0
  19. data/lib/rspec_sequel/matchers/validate_not_string.rb +21 -0
  20. data/lib/rspec_sequel/matchers/validate_numeric.rb +21 -0
  21. data/lib/rspec_sequel/matchers/validate_presence.rb +21 -0
  22. data/lib/rspec_sequel/matchers/validate_unique.rb +33 -0
  23. data/lib/rspec_sequel/validation.rb +77 -0
  24. data/lib/rspec_sequel_matchers.rb +9 -0
  25. data/rspec_sequel_matchers.gemspec +107 -0
  26. data/spec/have_column_matcher_spec.rb +89 -0
  27. data/spec/have_many_to_many_matcher_spec.rb +56 -0
  28. data/spec/have_many_to_one_matcher_spec.rb +55 -0
  29. data/spec/have_one_to_many_matcher_spec.rb +55 -0
  30. data/spec/migrations/001_create_items.rb +15 -0
  31. data/spec/migrations/002_create_comments.rb +17 -0
  32. data/spec/migrations/003_create_comments_items.rb +15 -0
  33. data/spec/spec_helper.rb +51 -0
  34. data/spec/validate_exact_length_matcher_spec.rb +88 -0
  35. data/spec/validate_format_matcher_spec.rb +88 -0
  36. data/spec/validate_includes_matcher_spec.rb +88 -0
  37. data/spec/validate_integer_matcher_spec.rb +77 -0
  38. data/spec/validate_length_range_matcher_spec.rb +88 -0
  39. data/spec/validate_max_length_matcher_spec.rb +88 -0
  40. data/spec/validate_min_length_matcher_spec.rb +88 -0
  41. data/spec/validate_not_string_matcher_spec.rb +77 -0
  42. data/spec/validate_numeric_matcher_spec.rb +77 -0
  43. data/spec/validate_presence_matcher_spec.rb +77 -0
  44. data/spec/validate_unique_matcher_spec.rb +79 -0
  45. metadata +153 -0
@@ -0,0 +1,79 @@
1
+ require File.dirname(__FILE__) + "/spec_helper"
2
+
3
+ describe "validate_unique_matcher" do
4
+
5
+ before do
6
+ define_model :item do
7
+ plugin :validation_helpers
8
+ def validate
9
+ validates_unique [:id, :name], :name, :message => "Hello"
10
+ end
11
+ end
12
+ end
13
+
14
+ subject{ Item }
15
+
16
+ describe "arguments" do
17
+ it "should require attribute" do
18
+ lambda{
19
+ @matcher = validate_unique
20
+ }.should raise_error(ArgumentError)
21
+ end
22
+ it "should refuse additionnal parameters" do
23
+ lambda{
24
+ @matcher = validate_unique :name, :id
25
+ }.should raise_error(ArgumentError)
26
+ end
27
+ end
28
+
29
+ describe "messages" do
30
+ describe "without option" do
31
+ it "should contain a description" do
32
+ @matcher = validate_unique :name
33
+ @matcher.description.should == "validate uniqueness of :name"
34
+ end
35
+ it "should set failure messages" do
36
+ @matcher = validate_unique :name
37
+ @matcher.matches? subject
38
+ @matcher.failure_message.should == "expected Item to " + @matcher.description
39
+ @matcher.negative_failure_message.should == "expected Item to not " + @matcher.description
40
+ end
41
+ end
42
+ describe "with options" do
43
+ it "should contain a description" do
44
+ @matcher = validate_unique :name, :message => "Hello"
45
+ @matcher.description.should == 'validate uniqueness of :name with option(s) :message => "Hello"'
46
+ end
47
+ it "should set failure messages" do
48
+ @matcher = validate_unique :price, :message => "Hello"
49
+ @matcher.matches? subject
50
+ @matcher.failure_message.should == "expected Item to " + @matcher.description
51
+ @matcher.negative_failure_message.should == "expected Item to not " + @matcher.description
52
+ end
53
+ it "should explicit used options if different than expected" do
54
+ @matcher = validate_unique :name, :message => "Hello world"
55
+ @matcher.matches? subject
56
+ explanation = ' but called with option(s) :message => "Hello" instead'
57
+ @matcher.failure_message.should == "expected Item to " + @matcher.description + explanation
58
+ @matcher.negative_failure_message.should == "expected Item to not " + @matcher.description + explanation
59
+ end
60
+ it "should warn if invalid options are used" do
61
+ @matcher = validate_unique :name, :allow_nil => true
62
+ @matcher.matches? subject
63
+ explanation = " but option :allow_nil is not valid"
64
+ @matcher.failure_message.should == "expected Item to " + @matcher.description + explanation
65
+ @matcher.negative_failure_message.should == "expected Item to not " + @matcher.description + explanation
66
+ end
67
+ end
68
+ end
69
+
70
+ describe "matchers" do
71
+ it{ should validate_unique(:name) }
72
+ it{ should validate_unique([:id, :name]) }
73
+ it{ should validate_unique(:name, :message => "Hello") }
74
+ it{ should_not validate_unique(:id) }
75
+ it{ should_not validate_unique(:price) }
76
+ it{ should_not validate_unique(:name, :allow_nil => true) }
77
+ end
78
+
79
+ end
metadata ADDED
@@ -0,0 +1,153 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rspec_sequel_matchers
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 2
8
+ - 0
9
+ version: 0.2.0
10
+ platform: ruby
11
+ authors:
12
+ - Jonathan Tron
13
+ - Joseph Halter
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-03-02 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rspec
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 2
30
+ - 0
31
+ - 0
32
+ - a
33
+ version: 2.0.0.a
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: sequel
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ segments:
44
+ - 3
45
+ - 8
46
+ - 0
47
+ version: 3.8.0
48
+ type: :runtime
49
+ version_requirements: *id002
50
+ description:
51
+ email: team@openhood.com
52
+ executables: []
53
+
54
+ extensions: []
55
+
56
+ extra_rdoc_files:
57
+ - LICENSE
58
+ - README.rdoc
59
+ files:
60
+ - .document
61
+ - .gitignore
62
+ - LICENSE
63
+ - README.rdoc
64
+ - Rakefile
65
+ - lib/rspec_sequel/association.rb
66
+ - lib/rspec_sequel/base.rb
67
+ - lib/rspec_sequel/matchers/have_column.rb
68
+ - lib/rspec_sequel/matchers/have_many_to_many.rb
69
+ - lib/rspec_sequel/matchers/have_many_to_one.rb
70
+ - lib/rspec_sequel/matchers/have_one_to_many.rb
71
+ - lib/rspec_sequel/matchers/validate_exact_length.rb
72
+ - lib/rspec_sequel/matchers/validate_format.rb
73
+ - lib/rspec_sequel/matchers/validate_includes.rb
74
+ - lib/rspec_sequel/matchers/validate_integer.rb
75
+ - lib/rspec_sequel/matchers/validate_length_range.rb
76
+ - lib/rspec_sequel/matchers/validate_max_length.rb
77
+ - lib/rspec_sequel/matchers/validate_min_length.rb
78
+ - lib/rspec_sequel/matchers/validate_not_string.rb
79
+ - lib/rspec_sequel/matchers/validate_numeric.rb
80
+ - lib/rspec_sequel/matchers/validate_presence.rb
81
+ - lib/rspec_sequel/matchers/validate_unique.rb
82
+ - lib/rspec_sequel/validation.rb
83
+ - lib/rspec_sequel_matchers.rb
84
+ - rspec_sequel_matchers.gemspec
85
+ - spec/have_column_matcher_spec.rb
86
+ - spec/have_many_to_many_matcher_spec.rb
87
+ - spec/have_many_to_one_matcher_spec.rb
88
+ - spec/have_one_to_many_matcher_spec.rb
89
+ - spec/migrations/001_create_items.rb
90
+ - spec/migrations/002_create_comments.rb
91
+ - spec/migrations/003_create_comments_items.rb
92
+ - spec/spec_helper.rb
93
+ - spec/validate_exact_length_matcher_spec.rb
94
+ - spec/validate_format_matcher_spec.rb
95
+ - spec/validate_includes_matcher_spec.rb
96
+ - spec/validate_integer_matcher_spec.rb
97
+ - spec/validate_length_range_matcher_spec.rb
98
+ - spec/validate_max_length_matcher_spec.rb
99
+ - spec/validate_min_length_matcher_spec.rb
100
+ - spec/validate_not_string_matcher_spec.rb
101
+ - spec/validate_numeric_matcher_spec.rb
102
+ - spec/validate_presence_matcher_spec.rb
103
+ - spec/validate_unique_matcher_spec.rb
104
+ has_rdoc: true
105
+ homepage: http://github.com/openhood/rspec_sequel_matchers
106
+ licenses: []
107
+
108
+ post_install_message:
109
+ rdoc_options:
110
+ - --charset=UTF-8
111
+ require_paths:
112
+ - lib
113
+ required_ruby_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ segments:
118
+ - 0
119
+ version: "0"
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ segments:
125
+ - 0
126
+ version: "0"
127
+ requirements: []
128
+
129
+ rubyforge_project:
130
+ rubygems_version: 1.3.6
131
+ signing_key:
132
+ specification_version: 3
133
+ summary: RSpec Matchers for Sequel
134
+ test_files:
135
+ - spec/have_column_matcher_spec.rb
136
+ - spec/have_many_to_many_matcher_spec.rb
137
+ - spec/have_many_to_one_matcher_spec.rb
138
+ - spec/have_one_to_many_matcher_spec.rb
139
+ - spec/migrations/001_create_items.rb
140
+ - spec/migrations/002_create_comments.rb
141
+ - spec/migrations/003_create_comments_items.rb
142
+ - spec/spec_helper.rb
143
+ - spec/validate_exact_length_matcher_spec.rb
144
+ - spec/validate_format_matcher_spec.rb
145
+ - spec/validate_includes_matcher_spec.rb
146
+ - spec/validate_integer_matcher_spec.rb
147
+ - spec/validate_length_range_matcher_spec.rb
148
+ - spec/validate_max_length_matcher_spec.rb
149
+ - spec/validate_min_length_matcher_spec.rb
150
+ - spec/validate_not_string_matcher_spec.rb
151
+ - spec/validate_numeric_matcher_spec.rb
152
+ - spec/validate_presence_matcher_spec.rb
153
+ - spec/validate_unique_matcher_spec.rb