humanoid 1.2.7

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 (210) hide show
  1. data/.gitignore +6 -0
  2. data/.watchr +29 -0
  3. data/HISTORY +342 -0
  4. data/MIT_LICENSE +20 -0
  5. data/README.rdoc +56 -0
  6. data/Rakefile +53 -0
  7. data/VERSION +1 -0
  8. data/caliper.yml +4 -0
  9. data/humanoid.gemspec +374 -0
  10. data/lib/humanoid.rb +111 -0
  11. data/lib/humanoid/associations.rb +258 -0
  12. data/lib/humanoid/associations/belongs_to.rb +64 -0
  13. data/lib/humanoid/associations/belongs_to_related.rb +62 -0
  14. data/lib/humanoid/associations/has_many.rb +180 -0
  15. data/lib/humanoid/associations/has_many_related.rb +109 -0
  16. data/lib/humanoid/associations/has_one.rb +95 -0
  17. data/lib/humanoid/associations/has_one_related.rb +81 -0
  18. data/lib/humanoid/associations/options.rb +57 -0
  19. data/lib/humanoid/associations/proxy.rb +31 -0
  20. data/lib/humanoid/attributes.rb +184 -0
  21. data/lib/humanoid/callbacks.rb +23 -0
  22. data/lib/humanoid/collection.rb +118 -0
  23. data/lib/humanoid/collections/cyclic_iterator.rb +34 -0
  24. data/lib/humanoid/collections/master.rb +28 -0
  25. data/lib/humanoid/collections/mimic.rb +46 -0
  26. data/lib/humanoid/collections/operations.rb +41 -0
  27. data/lib/humanoid/collections/slaves.rb +44 -0
  28. data/lib/humanoid/commands.rb +182 -0
  29. data/lib/humanoid/commands/create.rb +21 -0
  30. data/lib/humanoid/commands/delete.rb +16 -0
  31. data/lib/humanoid/commands/delete_all.rb +23 -0
  32. data/lib/humanoid/commands/deletion.rb +18 -0
  33. data/lib/humanoid/commands/destroy.rb +19 -0
  34. data/lib/humanoid/commands/destroy_all.rb +23 -0
  35. data/lib/humanoid/commands/save.rb +27 -0
  36. data/lib/humanoid/components.rb +24 -0
  37. data/lib/humanoid/config.rb +84 -0
  38. data/lib/humanoid/contexts.rb +25 -0
  39. data/lib/humanoid/contexts/enumerable.rb +117 -0
  40. data/lib/humanoid/contexts/ids.rb +25 -0
  41. data/lib/humanoid/contexts/mongo.rb +224 -0
  42. data/lib/humanoid/contexts/paging.rb +42 -0
  43. data/lib/humanoid/criteria.rb +259 -0
  44. data/lib/humanoid/criterion/complex.rb +21 -0
  45. data/lib/humanoid/criterion/exclusion.rb +65 -0
  46. data/lib/humanoid/criterion/inclusion.rb +91 -0
  47. data/lib/humanoid/criterion/optional.rb +128 -0
  48. data/lib/humanoid/cursor.rb +82 -0
  49. data/lib/humanoid/document.rb +300 -0
  50. data/lib/humanoid/enslavement.rb +38 -0
  51. data/lib/humanoid/errors.rb +77 -0
  52. data/lib/humanoid/extensions.rb +84 -0
  53. data/lib/humanoid/extensions/array/accessors.rb +17 -0
  54. data/lib/humanoid/extensions/array/aliasing.rb +4 -0
  55. data/lib/humanoid/extensions/array/assimilation.rb +26 -0
  56. data/lib/humanoid/extensions/array/conversions.rb +29 -0
  57. data/lib/humanoid/extensions/array/parentization.rb +13 -0
  58. data/lib/humanoid/extensions/boolean/conversions.rb +16 -0
  59. data/lib/humanoid/extensions/date/conversions.rb +15 -0
  60. data/lib/humanoid/extensions/datetime/conversions.rb +17 -0
  61. data/lib/humanoid/extensions/float/conversions.rb +16 -0
  62. data/lib/humanoid/extensions/hash/accessors.rb +38 -0
  63. data/lib/humanoid/extensions/hash/assimilation.rb +30 -0
  64. data/lib/humanoid/extensions/hash/conversions.rb +15 -0
  65. data/lib/humanoid/extensions/hash/criteria_helpers.rb +20 -0
  66. data/lib/humanoid/extensions/hash/scoping.rb +12 -0
  67. data/lib/humanoid/extensions/integer/conversions.rb +16 -0
  68. data/lib/humanoid/extensions/nil/assimilation.rb +13 -0
  69. data/lib/humanoid/extensions/object/conversions.rb +33 -0
  70. data/lib/humanoid/extensions/proc/scoping.rb +12 -0
  71. data/lib/humanoid/extensions/string/conversions.rb +15 -0
  72. data/lib/humanoid/extensions/string/inflections.rb +97 -0
  73. data/lib/humanoid/extensions/symbol/inflections.rb +36 -0
  74. data/lib/humanoid/extensions/time/conversions.rb +18 -0
  75. data/lib/humanoid/factory.rb +19 -0
  76. data/lib/humanoid/field.rb +39 -0
  77. data/lib/humanoid/fields.rb +62 -0
  78. data/lib/humanoid/finders.rb +224 -0
  79. data/lib/humanoid/identity.rb +39 -0
  80. data/lib/humanoid/indexes.rb +30 -0
  81. data/lib/humanoid/matchers.rb +36 -0
  82. data/lib/humanoid/matchers/all.rb +11 -0
  83. data/lib/humanoid/matchers/default.rb +26 -0
  84. data/lib/humanoid/matchers/exists.rb +13 -0
  85. data/lib/humanoid/matchers/gt.rb +11 -0
  86. data/lib/humanoid/matchers/gte.rb +11 -0
  87. data/lib/humanoid/matchers/in.rb +11 -0
  88. data/lib/humanoid/matchers/lt.rb +11 -0
  89. data/lib/humanoid/matchers/lte.rb +11 -0
  90. data/lib/humanoid/matchers/ne.rb +11 -0
  91. data/lib/humanoid/matchers/nin.rb +11 -0
  92. data/lib/humanoid/matchers/size.rb +11 -0
  93. data/lib/humanoid/memoization.rb +27 -0
  94. data/lib/humanoid/named_scope.rb +40 -0
  95. data/lib/humanoid/scope.rb +75 -0
  96. data/lib/humanoid/timestamps.rb +30 -0
  97. data/lib/humanoid/versioning.rb +28 -0
  98. data/perf/benchmark.rb +77 -0
  99. data/spec/integration/humanoid/associations_spec.rb +301 -0
  100. data/spec/integration/humanoid/attributes_spec.rb +22 -0
  101. data/spec/integration/humanoid/commands_spec.rb +216 -0
  102. data/spec/integration/humanoid/contexts/enumerable_spec.rb +33 -0
  103. data/spec/integration/humanoid/criteria_spec.rb +224 -0
  104. data/spec/integration/humanoid/document_spec.rb +587 -0
  105. data/spec/integration/humanoid/extensions_spec.rb +26 -0
  106. data/spec/integration/humanoid/finders_spec.rb +119 -0
  107. data/spec/integration/humanoid/inheritance_spec.rb +137 -0
  108. data/spec/integration/humanoid/named_scope_spec.rb +46 -0
  109. data/spec/models/address.rb +39 -0
  110. data/spec/models/animal.rb +6 -0
  111. data/spec/models/comment.rb +8 -0
  112. data/spec/models/country_code.rb +6 -0
  113. data/spec/models/employer.rb +5 -0
  114. data/spec/models/game.rb +6 -0
  115. data/spec/models/inheritance.rb +56 -0
  116. data/spec/models/location.rb +5 -0
  117. data/spec/models/mixed_drink.rb +4 -0
  118. data/spec/models/name.rb +13 -0
  119. data/spec/models/namespacing.rb +11 -0
  120. data/spec/models/patient.rb +4 -0
  121. data/spec/models/person.rb +98 -0
  122. data/spec/models/pet.rb +7 -0
  123. data/spec/models/pet_owner.rb +6 -0
  124. data/spec/models/phone.rb +7 -0
  125. data/spec/models/post.rb +15 -0
  126. data/spec/models/translation.rb +5 -0
  127. data/spec/models/vet_visit.rb +5 -0
  128. data/spec/spec.opts +3 -0
  129. data/spec/spec_helper.rb +31 -0
  130. data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +141 -0
  131. data/spec/unit/mongoid/associations/belongs_to_spec.rb +193 -0
  132. data/spec/unit/mongoid/associations/has_many_related_spec.rb +387 -0
  133. data/spec/unit/mongoid/associations/has_many_spec.rb +471 -0
  134. data/spec/unit/mongoid/associations/has_one_related_spec.rb +179 -0
  135. data/spec/unit/mongoid/associations/has_one_spec.rb +282 -0
  136. data/spec/unit/mongoid/associations/options_spec.rb +191 -0
  137. data/spec/unit/mongoid/associations_spec.rb +545 -0
  138. data/spec/unit/mongoid/attributes_spec.rb +484 -0
  139. data/spec/unit/mongoid/callbacks_spec.rb +55 -0
  140. data/spec/unit/mongoid/collection_spec.rb +171 -0
  141. data/spec/unit/mongoid/collections/cyclic_iterator_spec.rb +75 -0
  142. data/spec/unit/mongoid/collections/master_spec.rb +41 -0
  143. data/spec/unit/mongoid/collections/mimic_spec.rb +43 -0
  144. data/spec/unit/mongoid/collections/slaves_spec.rb +81 -0
  145. data/spec/unit/mongoid/commands/create_spec.rb +30 -0
  146. data/spec/unit/mongoid/commands/delete_all_spec.rb +58 -0
  147. data/spec/unit/mongoid/commands/delete_spec.rb +35 -0
  148. data/spec/unit/mongoid/commands/destroy_all_spec.rb +23 -0
  149. data/spec/unit/mongoid/commands/destroy_spec.rb +44 -0
  150. data/spec/unit/mongoid/commands/save_spec.rb +105 -0
  151. data/spec/unit/mongoid/commands_spec.rb +282 -0
  152. data/spec/unit/mongoid/config_spec.rb +165 -0
  153. data/spec/unit/mongoid/contexts/enumerable_spec.rb +374 -0
  154. data/spec/unit/mongoid/contexts/mongo_spec.rb +505 -0
  155. data/spec/unit/mongoid/contexts_spec.rb +25 -0
  156. data/spec/unit/mongoid/criteria_spec.rb +769 -0
  157. data/spec/unit/mongoid/criterion/complex_spec.rb +19 -0
  158. data/spec/unit/mongoid/criterion/exclusion_spec.rb +91 -0
  159. data/spec/unit/mongoid/criterion/inclusion_spec.rb +211 -0
  160. data/spec/unit/mongoid/criterion/optional_spec.rb +329 -0
  161. data/spec/unit/mongoid/cursor_spec.rb +74 -0
  162. data/spec/unit/mongoid/document_spec.rb +986 -0
  163. data/spec/unit/mongoid/enslavement_spec.rb +63 -0
  164. data/spec/unit/mongoid/errors_spec.rb +103 -0
  165. data/spec/unit/mongoid/extensions/array/accessors_spec.rb +50 -0
  166. data/spec/unit/mongoid/extensions/array/assimilation_spec.rb +24 -0
  167. data/spec/unit/mongoid/extensions/array/conversions_spec.rb +35 -0
  168. data/spec/unit/mongoid/extensions/array/parentization_spec.rb +20 -0
  169. data/spec/unit/mongoid/extensions/boolean/conversions_spec.rb +49 -0
  170. data/spec/unit/mongoid/extensions/date/conversions_spec.rb +102 -0
  171. data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +70 -0
  172. data/spec/unit/mongoid/extensions/float/conversions_spec.rb +61 -0
  173. data/spec/unit/mongoid/extensions/hash/accessors_spec.rb +184 -0
  174. data/spec/unit/mongoid/extensions/hash/assimilation_spec.rb +46 -0
  175. data/spec/unit/mongoid/extensions/hash/conversions_spec.rb +21 -0
  176. data/spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb +17 -0
  177. data/spec/unit/mongoid/extensions/hash/scoping_spec.rb +14 -0
  178. data/spec/unit/mongoid/extensions/integer/conversions_spec.rb +61 -0
  179. data/spec/unit/mongoid/extensions/nil/assimilation_spec.rb +24 -0
  180. data/spec/unit/mongoid/extensions/object/conversions_spec.rb +43 -0
  181. data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +34 -0
  182. data/spec/unit/mongoid/extensions/string/conversions_spec.rb +17 -0
  183. data/spec/unit/mongoid/extensions/string/inflections_spec.rb +208 -0
  184. data/spec/unit/mongoid/extensions/symbol/inflections_spec.rb +91 -0
  185. data/spec/unit/mongoid/extensions/time/conversions_spec.rb +70 -0
  186. data/spec/unit/mongoid/factory_spec.rb +31 -0
  187. data/spec/unit/mongoid/field_spec.rb +81 -0
  188. data/spec/unit/mongoid/fields_spec.rb +158 -0
  189. data/spec/unit/mongoid/finders_spec.rb +368 -0
  190. data/spec/unit/mongoid/identity_spec.rb +88 -0
  191. data/spec/unit/mongoid/indexes_spec.rb +93 -0
  192. data/spec/unit/mongoid/matchers/all_spec.rb +27 -0
  193. data/spec/unit/mongoid/matchers/default_spec.rb +27 -0
  194. data/spec/unit/mongoid/matchers/exists_spec.rb +56 -0
  195. data/spec/unit/mongoid/matchers/gt_spec.rb +39 -0
  196. data/spec/unit/mongoid/matchers/gte_spec.rb +49 -0
  197. data/spec/unit/mongoid/matchers/in_spec.rb +27 -0
  198. data/spec/unit/mongoid/matchers/lt_spec.rb +39 -0
  199. data/spec/unit/mongoid/matchers/lte_spec.rb +49 -0
  200. data/spec/unit/mongoid/matchers/ne_spec.rb +27 -0
  201. data/spec/unit/mongoid/matchers/nin_spec.rb +27 -0
  202. data/spec/unit/mongoid/matchers/size_spec.rb +27 -0
  203. data/spec/unit/mongoid/matchers_spec.rb +329 -0
  204. data/spec/unit/mongoid/memoization_spec.rb +75 -0
  205. data/spec/unit/mongoid/named_scope_spec.rb +123 -0
  206. data/spec/unit/mongoid/scope_spec.rb +240 -0
  207. data/spec/unit/mongoid/timestamps_spec.rb +25 -0
  208. data/spec/unit/mongoid/versioning_spec.rb +41 -0
  209. data/spec/unit/mongoid_spec.rb +37 -0
  210. metadata +431 -0
@@ -0,0 +1,88 @@
1
+ require "spec_helper"
2
+
3
+ describe Humanoid::Identity do
4
+
5
+ describe ".create" do
6
+
7
+ let(:name) { Name.new }
8
+
9
+ it "sets the document _type to the class name" do
10
+ Humanoid::Identity.create(name)
11
+ name._type.should == "Name"
12
+ end
13
+
14
+ it "returns the document" do
15
+ Humanoid::Identity.create(name).should == name
16
+ end
17
+
18
+ context "when the document has a primary key" do
19
+
20
+ before do
21
+ @address = Address.allocate
22
+ @address.instance_variable_set(:@attributes, { "street" => "Market St"})
23
+ end
24
+
25
+ it "sets the id to the composite key" do
26
+ Humanoid::Identity.create(@address)
27
+ @address.id.should == "market-st"
28
+ end
29
+
30
+ end
31
+
32
+ context "when the document has no primary key" do
33
+
34
+ context "when the document has no id" do
35
+
36
+ before do
37
+ @person = Person.allocate
38
+ @person.instance_variable_set(:@attributes, {})
39
+ @object_id = stub(:to_s => "1")
40
+ Mongo::ObjectID.expects(:new).returns(@object_id)
41
+ end
42
+
43
+ context "when using object ids" do
44
+
45
+ before do
46
+ Humanoid.use_object_ids = true
47
+ end
48
+
49
+ after do
50
+ Humanoid.use_object_ids = false
51
+ end
52
+
53
+ it "sets the id to a mongo object id" do
54
+ Humanoid::Identity.create(@person)
55
+ @person.id.should == @object_id
56
+ end
57
+ end
58
+
59
+ context "when not using object ids" do
60
+
61
+ it "sets the id to a mongo object id string" do
62
+ Humanoid::Identity.create(@person)
63
+ @person.id.should == "1"
64
+ end
65
+
66
+ end
67
+
68
+ end
69
+
70
+ context "when the document has an id" do
71
+
72
+ before do
73
+ @person = Person.allocate
74
+ @person.instance_variable_set(:@attributes, { "_id" => "5" })
75
+ end
76
+
77
+ it "returns the existing id" do
78
+ Humanoid::Identity.create(@person)
79
+ @person.id.should == "5"
80
+ end
81
+
82
+ end
83
+
84
+ end
85
+
86
+ end
87
+
88
+ end
@@ -0,0 +1,93 @@
1
+ require "spec_helper"
2
+
3
+ describe Humanoid::Indexes do
4
+
5
+ describe ".included" do
6
+
7
+ before do
8
+ @class = Class.new do
9
+ include Humanoid::Indexes
10
+ end
11
+ end
12
+
13
+ it "adds an indexed accessor" do
14
+ @class.should respond_to(:indexed)
15
+ end
16
+
17
+ it "defaults indexed to false" do
18
+ @class.indexed.should be_false
19
+ end
20
+
21
+ end
22
+
23
+ describe ".add_indexes" do
24
+
25
+ before do
26
+ @collection = mock
27
+ end
28
+
29
+ context "when indexes have not been added" do
30
+
31
+ before do
32
+ @class = Class.new do
33
+ include Humanoid::Indexes
34
+ end
35
+ end
36
+
37
+ it "adds the _type index" do
38
+ @class.expects(:_collection).returns(@collection)
39
+ @collection.expects(:create_index).with(:_type, false)
40
+ @class.add_indexes
41
+ @class.indexed.should be_true
42
+ end
43
+
44
+ end
45
+
46
+ context "when indexes have been added" do
47
+
48
+ before do
49
+ @class = Class.new do
50
+ include Humanoid::Indexes
51
+ end
52
+ @class.indexed = true
53
+ end
54
+
55
+ it "ignores the request" do
56
+ @class.add_indexes
57
+ end
58
+
59
+ end
60
+
61
+ end
62
+
63
+ describe ".index" do
64
+
65
+ before do
66
+ @collection = mock
67
+ @class = Class.new do
68
+ include Humanoid::Indexes
69
+ end
70
+ @class.expects(:collection).returns(@collection)
71
+ end
72
+
73
+ context "when unique" do
74
+
75
+ it "creates a unique index on the collection" do
76
+ @collection.expects(:create_index).with(:name, true)
77
+ @class.index(:name, :unique => true)
78
+ end
79
+
80
+ end
81
+
82
+ context "when not unique" do
83
+
84
+ it "creates an index on the collection" do
85
+ @collection.expects(:create_index).with(:name, false)
86
+ @class.index(:name)
87
+ end
88
+
89
+ end
90
+
91
+ end
92
+
93
+ end
@@ -0,0 +1,27 @@
1
+ require "spec_helper"
2
+
3
+ describe Humanoid::Matchers::All do
4
+
5
+ let(:matcher) { Humanoid::Matchers::All.new(["first", "second"]) }
6
+
7
+ describe "#matches?" do
8
+
9
+ context "when the values are equal" do
10
+
11
+ it "returns true" do
12
+ matcher.matches?("$all" => ["first", "second"]).should be_true
13
+ end
14
+
15
+ end
16
+
17
+ context "when the values are not equal" do
18
+
19
+ it "returns false" do
20
+ matcher.matches?("$all" => ["first"]).should be_false
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,27 @@
1
+ require "spec_helper"
2
+
3
+ describe Humanoid::Matchers::Default do
4
+
5
+ let(:matcher) { Humanoid::Matchers::Default.new("Testing") }
6
+
7
+ describe "#matches?" do
8
+
9
+ context "when the values are equal" do
10
+
11
+ it "returns true" do
12
+ matcher.matches?("Testing").should be_true
13
+ end
14
+
15
+ end
16
+
17
+ context "when the values are not equal" do
18
+
19
+ it "returns false" do
20
+ matcher.matches?("Other").should be_false
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,56 @@
1
+ require "spec_helper"
2
+
3
+ describe Humanoid::Matchers::Exists do
4
+
5
+ describe "#matches?" do
6
+
7
+ context "when checking for existence" do
8
+
9
+ context "when the value exists" do
10
+
11
+ let(:matcher) { Humanoid::Matchers::Exists.new("Test") }
12
+
13
+ it "returns true" do
14
+ matcher.matches?("$exists" => true).should be_true
15
+ end
16
+
17
+ end
18
+
19
+ context "when the value does not exist" do
20
+
21
+ let(:matcher) { Humanoid::Matchers::Exists.new(nil) }
22
+
23
+ it "returns false" do
24
+ matcher.matches?("$exists" => true).should be_false
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+
31
+ context "when checking for nonexistence" do
32
+
33
+ context "when the value exists" do
34
+
35
+ let(:matcher) { Humanoid::Matchers::Exists.new("Test") }
36
+
37
+ it "returns false" do
38
+ matcher.matches?("$exists" => false).should be_false
39
+ end
40
+
41
+ end
42
+
43
+ context "when the value does not exist" do
44
+
45
+ let(:matcher) { Humanoid::Matchers::Exists.new(nil) }
46
+
47
+ it "returns true" do
48
+ matcher.matches?("$exists" => false).should be_true
49
+ end
50
+
51
+ end
52
+ end
53
+
54
+ end
55
+
56
+ end
@@ -0,0 +1,39 @@
1
+ require "spec_helper"
2
+
3
+ describe Humanoid::Matchers::Gt do
4
+
5
+ describe "#matches?" do
6
+
7
+ context "when the value is larger" do
8
+
9
+ let(:matcher) { Humanoid::Matchers::Gt.new(5) }
10
+
11
+ it "returns true" do
12
+ matcher.matches?("$gte" => 3).should be_true
13
+ end
14
+
15
+ end
16
+
17
+ context "when the value is smaller" do
18
+
19
+ let(:matcher) { Humanoid::Matchers::Gt.new(5) }
20
+
21
+ it "returns false" do
22
+ matcher.matches?("$gte" => 10).should be_false
23
+ end
24
+
25
+ end
26
+
27
+ context "when the value is nil" do
28
+
29
+ let(:matcher) { Humanoid::Matchers::Gt.new(nil) }
30
+
31
+ it "returns false" do
32
+ matcher.matches?("$gte" => 5).should be_false
33
+ end
34
+
35
+ end
36
+
37
+ end
38
+
39
+ end
@@ -0,0 +1,49 @@
1
+ require "spec_helper"
2
+
3
+ describe Humanoid::Matchers::Gte do
4
+
5
+ describe "#matches?" do
6
+
7
+ context "when the value is larger" do
8
+
9
+ let(:matcher) { Humanoid::Matchers::Gte.new(5) }
10
+
11
+ it "returns true" do
12
+ matcher.matches?("$gte" => 3).should be_true
13
+ end
14
+
15
+ end
16
+
17
+ context "when the value is smaller" do
18
+
19
+ let(:matcher) { Humanoid::Matchers::Gte.new(5) }
20
+
21
+ it "returns false" do
22
+ matcher.matches?("$gte" => 10).should be_false
23
+ end
24
+
25
+ end
26
+
27
+ context "when the value is equal" do
28
+
29
+ let(:matcher) { Humanoid::Matchers::Gte.new(5) }
30
+
31
+ it "returns true" do
32
+ matcher.matches?("$gte" => 5).should be_true
33
+ end
34
+
35
+ end
36
+
37
+ context "when the value is nil" do
38
+
39
+ let(:matcher) { Humanoid::Matchers::Gte.new(nil) }
40
+
41
+ it "returns false" do
42
+ matcher.matches?("$gte" => 5).should be_false
43
+ end
44
+
45
+ end
46
+
47
+ end
48
+
49
+ end
@@ -0,0 +1,27 @@
1
+ require "spec_helper"
2
+
3
+ describe Humanoid::Matchers::In do
4
+
5
+ let(:matcher) { Humanoid::Matchers::In.new("first") }
6
+
7
+ describe "#matches?" do
8
+
9
+ context "when the values includes the attribute" do
10
+
11
+ it "returns true" do
12
+ matcher.matches?("$in" => ["first", "second"]).should be_true
13
+ end
14
+
15
+ end
16
+
17
+ context "when the values dont include the atribute" do
18
+
19
+ it "returns false" do
20
+ matcher.matches?("$in" => ["third"]).should be_false
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,39 @@
1
+ require "spec_helper"
2
+
3
+ describe Humanoid::Matchers::Lt do
4
+
5
+ describe "#matches?" do
6
+
7
+ context "when the value is larger" do
8
+
9
+ let(:matcher) { Humanoid::Matchers::Lt.new(5) }
10
+
11
+ it "returns false" do
12
+ matcher.matches?("$lt" => 3).should be_false
13
+ end
14
+
15
+ end
16
+
17
+ context "when the value is smaller" do
18
+
19
+ let(:matcher) { Humanoid::Matchers::Lt.new(5) }
20
+
21
+ it "returns true" do
22
+ matcher.matches?("$lt" => 10).should be_true
23
+ end
24
+
25
+ end
26
+
27
+ context "when the value is nil" do
28
+
29
+ let(:matcher) { Humanoid::Matchers::Lt.new(nil) }
30
+
31
+ it "returns false" do
32
+ matcher.matches?("$lt" => 5).should be_false
33
+ end
34
+
35
+ end
36
+
37
+ end
38
+
39
+ end