openhood-rspec_sequel_matchers 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +47 -0
  3. data/Rakefile +48 -0
  4. data/VERSION.yml +4 -0
  5. data/lib/rspec_sequel/association.rb +30 -0
  6. data/lib/rspec_sequel/base.rb +33 -0
  7. data/lib/rspec_sequel/matchers/have_column.rb +35 -0
  8. data/lib/rspec_sequel/matchers/have_many_to_many.rb +22 -0
  9. data/lib/rspec_sequel/matchers/have_many_to_one.rb +22 -0
  10. data/lib/rspec_sequel/matchers/have_one_to_many.rb +22 -0
  11. data/lib/rspec_sequel/matchers/validate_exact_length.rb +25 -0
  12. data/lib/rspec_sequel/matchers/validate_format.rb +25 -0
  13. data/lib/rspec_sequel/matchers/validate_includes.rb +25 -0
  14. data/lib/rspec_sequel/matchers/validate_integer.rb +21 -0
  15. data/lib/rspec_sequel/matchers/validate_length_range.rb +25 -0
  16. data/lib/rspec_sequel/matchers/validate_max_length.rb +25 -0
  17. data/lib/rspec_sequel/matchers/validate_min_length.rb +25 -0
  18. data/lib/rspec_sequel/matchers/validate_not_string.rb +21 -0
  19. data/lib/rspec_sequel/matchers/validate_numeric.rb +21 -0
  20. data/lib/rspec_sequel/matchers/validate_presence.rb +21 -0
  21. data/lib/rspec_sequel/matchers/validate_unique.rb +33 -0
  22. data/lib/rspec_sequel/validation.rb +77 -0
  23. data/lib/rspec_sequel_matchers.rb +9 -0
  24. data/spec/have_column_matcher_spec.rb +89 -0
  25. data/spec/have_many_to_many_matcher_spec.rb +56 -0
  26. data/spec/have_many_to_one_matcher_spec.rb +55 -0
  27. data/spec/have_one_to_many_matcher_spec.rb +55 -0
  28. data/spec/migrations/001_create_items.rb +15 -0
  29. data/spec/migrations/002_create_comments.rb +17 -0
  30. data/spec/migrations/003_create_comments_items.rb +15 -0
  31. data/spec/spec_helper.rb +51 -0
  32. data/spec/validate_exact_length_matcher_spec.rb +88 -0
  33. data/spec/validate_format_matcher_spec.rb +88 -0
  34. data/spec/validate_includes_matcher_spec.rb +88 -0
  35. data/spec/validate_integer_matcher_spec.rb +77 -0
  36. data/spec/validate_length_range_matcher_spec.rb +88 -0
  37. data/spec/validate_max_length_matcher_spec.rb +88 -0
  38. data/spec/validate_min_length_matcher_spec.rb +88 -0
  39. data/spec/validate_not_string_matcher_spec.rb +77 -0
  40. data/spec/validate_numeric_matcher_spec.rb +77 -0
  41. data/spec/validate_presence_matcher_spec.rb +77 -0
  42. data/spec/validate_unique_matcher_spec.rb +79 -0
  43. metadata +134 -0
@@ -0,0 +1,79 @@
1
+ require File.dirname(__FILE__) + "/spec_helper"
2
+
3
+ describe "validate_unique_matcher" do
4
+
5
+ before :all 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,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: openhood-rspec_sequel_matchers
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Jonathan Tron
8
+ - Joseph Halter
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2009-08-22 00:00:00 -07:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rspec
18
+ type: :runtime
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: 1.2.3
25
+ version:
26
+ - !ruby/object:Gem::Dependency
27
+ name: sequel
28
+ type: :runtime
29
+ version_requirement:
30
+ version_requirements: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 3.1.0
35
+ version:
36
+ description:
37
+ email: team@openhood.com
38
+ executables: []
39
+
40
+ extensions: []
41
+
42
+ extra_rdoc_files:
43
+ - LICENSE
44
+ - README.rdoc
45
+ files:
46
+ - LICENSE
47
+ - README.rdoc
48
+ - Rakefile
49
+ - VERSION.yml
50
+ - lib/rspec_sequel/association.rb
51
+ - lib/rspec_sequel/base.rb
52
+ - lib/rspec_sequel/matchers/have_column.rb
53
+ - lib/rspec_sequel/matchers/have_many_to_many.rb
54
+ - lib/rspec_sequel/matchers/have_many_to_one.rb
55
+ - lib/rspec_sequel/matchers/have_one_to_many.rb
56
+ - lib/rspec_sequel/matchers/validate_exact_length.rb
57
+ - lib/rspec_sequel/matchers/validate_format.rb
58
+ - lib/rspec_sequel/matchers/validate_includes.rb
59
+ - lib/rspec_sequel/matchers/validate_integer.rb
60
+ - lib/rspec_sequel/matchers/validate_length_range.rb
61
+ - lib/rspec_sequel/matchers/validate_max_length.rb
62
+ - lib/rspec_sequel/matchers/validate_min_length.rb
63
+ - lib/rspec_sequel/matchers/validate_not_string.rb
64
+ - lib/rspec_sequel/matchers/validate_numeric.rb
65
+ - lib/rspec_sequel/matchers/validate_presence.rb
66
+ - lib/rspec_sequel/matchers/validate_unique.rb
67
+ - lib/rspec_sequel/validation.rb
68
+ - lib/rspec_sequel_matchers.rb
69
+ - spec/have_column_matcher_spec.rb
70
+ - spec/have_many_to_many_matcher_spec.rb
71
+ - spec/have_many_to_one_matcher_spec.rb
72
+ - spec/have_one_to_many_matcher_spec.rb
73
+ - spec/migrations/001_create_items.rb
74
+ - spec/migrations/002_create_comments.rb
75
+ - spec/migrations/003_create_comments_items.rb
76
+ - spec/spec_helper.rb
77
+ - spec/validate_exact_length_matcher_spec.rb
78
+ - spec/validate_format_matcher_spec.rb
79
+ - spec/validate_includes_matcher_spec.rb
80
+ - spec/validate_integer_matcher_spec.rb
81
+ - spec/validate_length_range_matcher_spec.rb
82
+ - spec/validate_max_length_matcher_spec.rb
83
+ - spec/validate_min_length_matcher_spec.rb
84
+ - spec/validate_not_string_matcher_spec.rb
85
+ - spec/validate_numeric_matcher_spec.rb
86
+ - spec/validate_presence_matcher_spec.rb
87
+ - spec/validate_unique_matcher_spec.rb
88
+ has_rdoc: false
89
+ homepage: http://github.com/openhood/rspec_sequel_matchers
90
+ licenses:
91
+ post_install_message:
92
+ rdoc_options:
93
+ - --charset=UTF-8
94
+ require_paths:
95
+ - lib
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: "0"
101
+ version:
102
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: "0"
107
+ version:
108
+ requirements: []
109
+
110
+ rubyforge_project:
111
+ rubygems_version: 1.3.5
112
+ signing_key:
113
+ specification_version: 3
114
+ summary: TODO
115
+ test_files:
116
+ - spec/have_column_matcher_spec.rb
117
+ - spec/have_many_to_many_matcher_spec.rb
118
+ - spec/have_many_to_one_matcher_spec.rb
119
+ - spec/have_one_to_many_matcher_spec.rb
120
+ - spec/migrations/001_create_items.rb
121
+ - spec/migrations/002_create_comments.rb
122
+ - spec/migrations/003_create_comments_items.rb
123
+ - spec/spec_helper.rb
124
+ - spec/validate_exact_length_matcher_spec.rb
125
+ - spec/validate_format_matcher_spec.rb
126
+ - spec/validate_includes_matcher_spec.rb
127
+ - spec/validate_integer_matcher_spec.rb
128
+ - spec/validate_length_range_matcher_spec.rb
129
+ - spec/validate_max_length_matcher_spec.rb
130
+ - spec/validate_min_length_matcher_spec.rb
131
+ - spec/validate_not_string_matcher_spec.rb
132
+ - spec/validate_numeric_matcher_spec.rb
133
+ - spec/validate_presence_matcher_spec.rb
134
+ - spec/validate_unique_matcher_spec.rb