openhood-rspec_sequel_matchers 0.1.1

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 (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