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.
- data/.gitignore +6 -0
- data/.watchr +29 -0
- data/HISTORY +342 -0
- data/MIT_LICENSE +20 -0
- data/README.rdoc +56 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/caliper.yml +4 -0
- data/humanoid.gemspec +374 -0
- data/lib/humanoid.rb +111 -0
- data/lib/humanoid/associations.rb +258 -0
- data/lib/humanoid/associations/belongs_to.rb +64 -0
- data/lib/humanoid/associations/belongs_to_related.rb +62 -0
- data/lib/humanoid/associations/has_many.rb +180 -0
- data/lib/humanoid/associations/has_many_related.rb +109 -0
- data/lib/humanoid/associations/has_one.rb +95 -0
- data/lib/humanoid/associations/has_one_related.rb +81 -0
- data/lib/humanoid/associations/options.rb +57 -0
- data/lib/humanoid/associations/proxy.rb +31 -0
- data/lib/humanoid/attributes.rb +184 -0
- data/lib/humanoid/callbacks.rb +23 -0
- data/lib/humanoid/collection.rb +118 -0
- data/lib/humanoid/collections/cyclic_iterator.rb +34 -0
- data/lib/humanoid/collections/master.rb +28 -0
- data/lib/humanoid/collections/mimic.rb +46 -0
- data/lib/humanoid/collections/operations.rb +41 -0
- data/lib/humanoid/collections/slaves.rb +44 -0
- data/lib/humanoid/commands.rb +182 -0
- data/lib/humanoid/commands/create.rb +21 -0
- data/lib/humanoid/commands/delete.rb +16 -0
- data/lib/humanoid/commands/delete_all.rb +23 -0
- data/lib/humanoid/commands/deletion.rb +18 -0
- data/lib/humanoid/commands/destroy.rb +19 -0
- data/lib/humanoid/commands/destroy_all.rb +23 -0
- data/lib/humanoid/commands/save.rb +27 -0
- data/lib/humanoid/components.rb +24 -0
- data/lib/humanoid/config.rb +84 -0
- data/lib/humanoid/contexts.rb +25 -0
- data/lib/humanoid/contexts/enumerable.rb +117 -0
- data/lib/humanoid/contexts/ids.rb +25 -0
- data/lib/humanoid/contexts/mongo.rb +224 -0
- data/lib/humanoid/contexts/paging.rb +42 -0
- data/lib/humanoid/criteria.rb +259 -0
- data/lib/humanoid/criterion/complex.rb +21 -0
- data/lib/humanoid/criterion/exclusion.rb +65 -0
- data/lib/humanoid/criterion/inclusion.rb +91 -0
- data/lib/humanoid/criterion/optional.rb +128 -0
- data/lib/humanoid/cursor.rb +82 -0
- data/lib/humanoid/document.rb +300 -0
- data/lib/humanoid/enslavement.rb +38 -0
- data/lib/humanoid/errors.rb +77 -0
- data/lib/humanoid/extensions.rb +84 -0
- data/lib/humanoid/extensions/array/accessors.rb +17 -0
- data/lib/humanoid/extensions/array/aliasing.rb +4 -0
- data/lib/humanoid/extensions/array/assimilation.rb +26 -0
- data/lib/humanoid/extensions/array/conversions.rb +29 -0
- data/lib/humanoid/extensions/array/parentization.rb +13 -0
- data/lib/humanoid/extensions/boolean/conversions.rb +16 -0
- data/lib/humanoid/extensions/date/conversions.rb +15 -0
- data/lib/humanoid/extensions/datetime/conversions.rb +17 -0
- data/lib/humanoid/extensions/float/conversions.rb +16 -0
- data/lib/humanoid/extensions/hash/accessors.rb +38 -0
- data/lib/humanoid/extensions/hash/assimilation.rb +30 -0
- data/lib/humanoid/extensions/hash/conversions.rb +15 -0
- data/lib/humanoid/extensions/hash/criteria_helpers.rb +20 -0
- data/lib/humanoid/extensions/hash/scoping.rb +12 -0
- data/lib/humanoid/extensions/integer/conversions.rb +16 -0
- data/lib/humanoid/extensions/nil/assimilation.rb +13 -0
- data/lib/humanoid/extensions/object/conversions.rb +33 -0
- data/lib/humanoid/extensions/proc/scoping.rb +12 -0
- data/lib/humanoid/extensions/string/conversions.rb +15 -0
- data/lib/humanoid/extensions/string/inflections.rb +97 -0
- data/lib/humanoid/extensions/symbol/inflections.rb +36 -0
- data/lib/humanoid/extensions/time/conversions.rb +18 -0
- data/lib/humanoid/factory.rb +19 -0
- data/lib/humanoid/field.rb +39 -0
- data/lib/humanoid/fields.rb +62 -0
- data/lib/humanoid/finders.rb +224 -0
- data/lib/humanoid/identity.rb +39 -0
- data/lib/humanoid/indexes.rb +30 -0
- data/lib/humanoid/matchers.rb +36 -0
- data/lib/humanoid/matchers/all.rb +11 -0
- data/lib/humanoid/matchers/default.rb +26 -0
- data/lib/humanoid/matchers/exists.rb +13 -0
- data/lib/humanoid/matchers/gt.rb +11 -0
- data/lib/humanoid/matchers/gte.rb +11 -0
- data/lib/humanoid/matchers/in.rb +11 -0
- data/lib/humanoid/matchers/lt.rb +11 -0
- data/lib/humanoid/matchers/lte.rb +11 -0
- data/lib/humanoid/matchers/ne.rb +11 -0
- data/lib/humanoid/matchers/nin.rb +11 -0
- data/lib/humanoid/matchers/size.rb +11 -0
- data/lib/humanoid/memoization.rb +27 -0
- data/lib/humanoid/named_scope.rb +40 -0
- data/lib/humanoid/scope.rb +75 -0
- data/lib/humanoid/timestamps.rb +30 -0
- data/lib/humanoid/versioning.rb +28 -0
- data/perf/benchmark.rb +77 -0
- data/spec/integration/humanoid/associations_spec.rb +301 -0
- data/spec/integration/humanoid/attributes_spec.rb +22 -0
- data/spec/integration/humanoid/commands_spec.rb +216 -0
- data/spec/integration/humanoid/contexts/enumerable_spec.rb +33 -0
- data/spec/integration/humanoid/criteria_spec.rb +224 -0
- data/spec/integration/humanoid/document_spec.rb +587 -0
- data/spec/integration/humanoid/extensions_spec.rb +26 -0
- data/spec/integration/humanoid/finders_spec.rb +119 -0
- data/spec/integration/humanoid/inheritance_spec.rb +137 -0
- data/spec/integration/humanoid/named_scope_spec.rb +46 -0
- data/spec/models/address.rb +39 -0
- data/spec/models/animal.rb +6 -0
- data/spec/models/comment.rb +8 -0
- data/spec/models/country_code.rb +6 -0
- data/spec/models/employer.rb +5 -0
- data/spec/models/game.rb +6 -0
- data/spec/models/inheritance.rb +56 -0
- data/spec/models/location.rb +5 -0
- data/spec/models/mixed_drink.rb +4 -0
- data/spec/models/name.rb +13 -0
- data/spec/models/namespacing.rb +11 -0
- data/spec/models/patient.rb +4 -0
- data/spec/models/person.rb +98 -0
- data/spec/models/pet.rb +7 -0
- data/spec/models/pet_owner.rb +6 -0
- data/spec/models/phone.rb +7 -0
- data/spec/models/post.rb +15 -0
- data/spec/models/translation.rb +5 -0
- data/spec/models/vet_visit.rb +5 -0
- data/spec/spec.opts +3 -0
- data/spec/spec_helper.rb +31 -0
- data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +141 -0
- data/spec/unit/mongoid/associations/belongs_to_spec.rb +193 -0
- data/spec/unit/mongoid/associations/has_many_related_spec.rb +387 -0
- data/spec/unit/mongoid/associations/has_many_spec.rb +471 -0
- data/spec/unit/mongoid/associations/has_one_related_spec.rb +179 -0
- data/spec/unit/mongoid/associations/has_one_spec.rb +282 -0
- data/spec/unit/mongoid/associations/options_spec.rb +191 -0
- data/spec/unit/mongoid/associations_spec.rb +545 -0
- data/spec/unit/mongoid/attributes_spec.rb +484 -0
- data/spec/unit/mongoid/callbacks_spec.rb +55 -0
- data/spec/unit/mongoid/collection_spec.rb +171 -0
- data/spec/unit/mongoid/collections/cyclic_iterator_spec.rb +75 -0
- data/spec/unit/mongoid/collections/master_spec.rb +41 -0
- data/spec/unit/mongoid/collections/mimic_spec.rb +43 -0
- data/spec/unit/mongoid/collections/slaves_spec.rb +81 -0
- data/spec/unit/mongoid/commands/create_spec.rb +30 -0
- data/spec/unit/mongoid/commands/delete_all_spec.rb +58 -0
- data/spec/unit/mongoid/commands/delete_spec.rb +35 -0
- data/spec/unit/mongoid/commands/destroy_all_spec.rb +23 -0
- data/spec/unit/mongoid/commands/destroy_spec.rb +44 -0
- data/spec/unit/mongoid/commands/save_spec.rb +105 -0
- data/spec/unit/mongoid/commands_spec.rb +282 -0
- data/spec/unit/mongoid/config_spec.rb +165 -0
- data/spec/unit/mongoid/contexts/enumerable_spec.rb +374 -0
- data/spec/unit/mongoid/contexts/mongo_spec.rb +505 -0
- data/spec/unit/mongoid/contexts_spec.rb +25 -0
- data/spec/unit/mongoid/criteria_spec.rb +769 -0
- data/spec/unit/mongoid/criterion/complex_spec.rb +19 -0
- data/spec/unit/mongoid/criterion/exclusion_spec.rb +91 -0
- data/spec/unit/mongoid/criterion/inclusion_spec.rb +211 -0
- data/spec/unit/mongoid/criterion/optional_spec.rb +329 -0
- data/spec/unit/mongoid/cursor_spec.rb +74 -0
- data/spec/unit/mongoid/document_spec.rb +986 -0
- data/spec/unit/mongoid/enslavement_spec.rb +63 -0
- data/spec/unit/mongoid/errors_spec.rb +103 -0
- data/spec/unit/mongoid/extensions/array/accessors_spec.rb +50 -0
- data/spec/unit/mongoid/extensions/array/assimilation_spec.rb +24 -0
- data/spec/unit/mongoid/extensions/array/conversions_spec.rb +35 -0
- data/spec/unit/mongoid/extensions/array/parentization_spec.rb +20 -0
- data/spec/unit/mongoid/extensions/boolean/conversions_spec.rb +49 -0
- data/spec/unit/mongoid/extensions/date/conversions_spec.rb +102 -0
- data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +70 -0
- data/spec/unit/mongoid/extensions/float/conversions_spec.rb +61 -0
- data/spec/unit/mongoid/extensions/hash/accessors_spec.rb +184 -0
- data/spec/unit/mongoid/extensions/hash/assimilation_spec.rb +46 -0
- data/spec/unit/mongoid/extensions/hash/conversions_spec.rb +21 -0
- data/spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb +17 -0
- data/spec/unit/mongoid/extensions/hash/scoping_spec.rb +14 -0
- data/spec/unit/mongoid/extensions/integer/conversions_spec.rb +61 -0
- data/spec/unit/mongoid/extensions/nil/assimilation_spec.rb +24 -0
- data/spec/unit/mongoid/extensions/object/conversions_spec.rb +43 -0
- data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +34 -0
- data/spec/unit/mongoid/extensions/string/conversions_spec.rb +17 -0
- data/spec/unit/mongoid/extensions/string/inflections_spec.rb +208 -0
- data/spec/unit/mongoid/extensions/symbol/inflections_spec.rb +91 -0
- data/spec/unit/mongoid/extensions/time/conversions_spec.rb +70 -0
- data/spec/unit/mongoid/factory_spec.rb +31 -0
- data/spec/unit/mongoid/field_spec.rb +81 -0
- data/spec/unit/mongoid/fields_spec.rb +158 -0
- data/spec/unit/mongoid/finders_spec.rb +368 -0
- data/spec/unit/mongoid/identity_spec.rb +88 -0
- data/spec/unit/mongoid/indexes_spec.rb +93 -0
- data/spec/unit/mongoid/matchers/all_spec.rb +27 -0
- data/spec/unit/mongoid/matchers/default_spec.rb +27 -0
- data/spec/unit/mongoid/matchers/exists_spec.rb +56 -0
- data/spec/unit/mongoid/matchers/gt_spec.rb +39 -0
- data/spec/unit/mongoid/matchers/gte_spec.rb +49 -0
- data/spec/unit/mongoid/matchers/in_spec.rb +27 -0
- data/spec/unit/mongoid/matchers/lt_spec.rb +39 -0
- data/spec/unit/mongoid/matchers/lte_spec.rb +49 -0
- data/spec/unit/mongoid/matchers/ne_spec.rb +27 -0
- data/spec/unit/mongoid/matchers/nin_spec.rb +27 -0
- data/spec/unit/mongoid/matchers/size_spec.rb +27 -0
- data/spec/unit/mongoid/matchers_spec.rb +329 -0
- data/spec/unit/mongoid/memoization_spec.rb +75 -0
- data/spec/unit/mongoid/named_scope_spec.rb +123 -0
- data/spec/unit/mongoid/scope_spec.rb +240 -0
- data/spec/unit/mongoid/timestamps_spec.rb +25 -0
- data/spec/unit/mongoid/versioning_spec.rb +41 -0
- data/spec/unit/mongoid_spec.rb +37 -0
- 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
|