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,63 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Humanoid::Enslavement do
|
|
4
|
+
|
|
5
|
+
before do
|
|
6
|
+
@klass = Class.new do
|
|
7
|
+
include Humanoid::Enslavement
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe ".enslave" do
|
|
12
|
+
|
|
13
|
+
before do
|
|
14
|
+
@klass.enslave
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "sets the enslaved boolean on the class" do
|
|
18
|
+
@klass.enslaved.should be_true
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe ".enslaved" do
|
|
24
|
+
|
|
25
|
+
it "defaults to false" do
|
|
26
|
+
@klass.enslaved.should be_false
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe ".enslaved?" do
|
|
31
|
+
|
|
32
|
+
context "when the class is enslaved" do
|
|
33
|
+
|
|
34
|
+
before do
|
|
35
|
+
@klass.enslave
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "returns true" do
|
|
39
|
+
@klass.should be_enslaved
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
context "when the class is not enslaved" do
|
|
44
|
+
|
|
45
|
+
it "returns false" do
|
|
46
|
+
@klass.should_not be_enslaved
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
describe "#enslaved?" do
|
|
53
|
+
|
|
54
|
+
before do
|
|
55
|
+
@klass.enslave
|
|
56
|
+
@doc = @klass.new
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "returns the class enslaved? value" do
|
|
60
|
+
@doc.should be_enslaved
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Humanoid::Errors do
|
|
4
|
+
|
|
5
|
+
describe Humanoid::Errors::DocumentNotFound do
|
|
6
|
+
|
|
7
|
+
describe "#message" do
|
|
8
|
+
|
|
9
|
+
context "default" do
|
|
10
|
+
|
|
11
|
+
before do
|
|
12
|
+
@error = Humanoid::Errors::DocumentNotFound.new(Person, "3")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "contains document not found" do
|
|
16
|
+
@error.message.should include("Document not found")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe Humanoid::Errors::InvalidOptions do
|
|
26
|
+
|
|
27
|
+
describe "#message" do
|
|
28
|
+
|
|
29
|
+
context "default" do
|
|
30
|
+
|
|
31
|
+
before do
|
|
32
|
+
@error = Humanoid::Errors::InvalidOptions.new
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "returns the class name" do
|
|
36
|
+
@error.message.should == @error.class.name
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe Humanoid::Errors::InvalidDatabase do
|
|
46
|
+
|
|
47
|
+
describe "#message" do
|
|
48
|
+
|
|
49
|
+
before do
|
|
50
|
+
@error = Humanoid::Errors::InvalidDatabase.new("Test")
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "returns a message with the bad db object class" do
|
|
54
|
+
@error.message.should include("String")
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe Humanoid::Errors::Validations do
|
|
62
|
+
|
|
63
|
+
describe "#message" do
|
|
64
|
+
|
|
65
|
+
context "default" do
|
|
66
|
+
|
|
67
|
+
before do
|
|
68
|
+
@errors = stub(:full_messages => "Testing")
|
|
69
|
+
@error = Humanoid::Errors::Validations.new(@errors)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "contains the errors' full messages" do
|
|
73
|
+
@error.message.should include("Testing")
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
describe Humanoid::Errors::InvalidCollection do
|
|
83
|
+
|
|
84
|
+
describe "#message" do
|
|
85
|
+
|
|
86
|
+
context "default" do
|
|
87
|
+
|
|
88
|
+
before do
|
|
89
|
+
@klass = Address
|
|
90
|
+
@error = Humanoid::Errors::InvalidCollection.new(@klass)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "contains class is not allowed" do
|
|
94
|
+
@error.message.should include("Address is not allowed")
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Humanoid::Extensions::Array::Accessors do
|
|
4
|
+
|
|
5
|
+
describe "#update" do
|
|
6
|
+
|
|
7
|
+
context "when the attributes exist" do
|
|
8
|
+
|
|
9
|
+
before do
|
|
10
|
+
@array = [{ "_id" => 1, "name" => "James T. Kirk" }]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "overwrites with the new attributes" do
|
|
14
|
+
@array.update({ "_id" => 1, "name" => "Spock" })
|
|
15
|
+
@array.first["name"].should == "Spock"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
context "when the attributes do not exist" do
|
|
21
|
+
|
|
22
|
+
before do
|
|
23
|
+
@array = [{ "_id" => 1, "name" => "James T. Kirk" }]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "appends the new attributes" do
|
|
27
|
+
@array.update({ "_id" => 2, "name" => "Scotty" })
|
|
28
|
+
@array.size.should == 2
|
|
29
|
+
@array.last["name"].should == "Scotty"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context "when the new attribtues have no id" do
|
|
35
|
+
|
|
36
|
+
before do
|
|
37
|
+
@array = [{ "_id" => 1, :name => "James T. Kirk" }]
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "appends the new attributes" do
|
|
41
|
+
@array.update({"name" => "Scotty" })
|
|
42
|
+
@array.size.should == 2
|
|
43
|
+
@array.last["name"].should == "Scotty"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Humanoid::Extensions::Array::Assimilation do
|
|
4
|
+
|
|
5
|
+
describe "#assimilate" do
|
|
6
|
+
|
|
7
|
+
before do
|
|
8
|
+
@address_one = { :street => "Circular Quay" }
|
|
9
|
+
@address_two = Address.new(:street => "King St.")
|
|
10
|
+
@parent = Person.new(:title => "Mr.")
|
|
11
|
+
@options = Humanoid::Associations::Options.new(:name => :addresses)
|
|
12
|
+
@child = [@address_one, @address_two]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "incorporates the hash into the object graph" do
|
|
16
|
+
@child.assimilate(@parent, @options)
|
|
17
|
+
@parent.addresses.size.should == 2
|
|
18
|
+
@parent.addresses.first.street.should == "Circular Quay"
|
|
19
|
+
@parent.addresses.last.street.should == "King St."
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Humanoid::Extensions::Array::Conversions do
|
|
4
|
+
|
|
5
|
+
describe "#humanoidize" do
|
|
6
|
+
|
|
7
|
+
it "collects each of its attributes" do
|
|
8
|
+
array = [
|
|
9
|
+
Person.new(:_id => 1, :title => "Sir"),
|
|
10
|
+
Person.new(:_id => 2, :title => "Madam")
|
|
11
|
+
]
|
|
12
|
+
array.humanoidize.should ==
|
|
13
|
+
[ HashWithIndifferentAccess.new({ :_id => 1, :title => "Sir", :age => 100, :_type => "Person", "blood_alcohol_content" => 0.0, :pets => false }),
|
|
14
|
+
HashWithIndifferentAccess.new({ :_id => 2, :title => "Madam", :age => 100, :_type => "Person", "blood_alcohol_content" => 0.0, :pets => false }) ]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "#get" do
|
|
20
|
+
|
|
21
|
+
it "returns the array" do
|
|
22
|
+
Array.get(["test"]).should == ["test"]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe "#set" do
|
|
28
|
+
|
|
29
|
+
it "returns the array" do
|
|
30
|
+
Array.set(["test"]).should == ["test"]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Humanoid::Extensions::Array::Parentization do
|
|
4
|
+
|
|
5
|
+
describe "#parentize" do
|
|
6
|
+
|
|
7
|
+
before do
|
|
8
|
+
@parent = stub
|
|
9
|
+
@child = mock
|
|
10
|
+
@array = [@child]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "sets the parent on each element" do
|
|
14
|
+
@child.expects(:parentize).with(@parent, :child)
|
|
15
|
+
@array.parentize(@parent, :child)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Humanoid::Extensions::Boolean::Conversions do
|
|
4
|
+
|
|
5
|
+
describe "#set" do
|
|
6
|
+
|
|
7
|
+
context "when 'true'" do
|
|
8
|
+
|
|
9
|
+
it "returns true" do
|
|
10
|
+
Boolean.set("true").should be_true
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
context "when 'false'" do
|
|
16
|
+
|
|
17
|
+
it "returns false" do
|
|
18
|
+
Boolean.set("false").should be_false
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
context "when 0" do
|
|
24
|
+
|
|
25
|
+
it "returns false" do
|
|
26
|
+
Boolean.set("0").should be_false
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
context "when 1" do
|
|
32
|
+
|
|
33
|
+
it "returns true" do
|
|
34
|
+
Boolean.set("1").should be_true
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe "#get" do
|
|
42
|
+
|
|
43
|
+
it "returns the boolean" do
|
|
44
|
+
Boolean.get(false).should be_false
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Humanoid::Extensions::Date::Conversions do
|
|
4
|
+
|
|
5
|
+
before do
|
|
6
|
+
@time = Date.today.to_time
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "#set" do
|
|
10
|
+
|
|
11
|
+
context "when string provided" do
|
|
12
|
+
|
|
13
|
+
context "when string is a non utc time" do
|
|
14
|
+
|
|
15
|
+
it "returns a utc time from the string" do
|
|
16
|
+
Date.set(@time.to_s).should == @time.utc
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
context "when string is a date" do
|
|
22
|
+
|
|
23
|
+
it "returns a time from the string" do
|
|
24
|
+
date = RUBY_VERSION.start_with?("1.9") ? "15/01/2007" : "01/15/2007"
|
|
25
|
+
Date.set(date).should == Date.new(2007, 1, 15).at_midnight.utc
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
context "when string is empty" do
|
|
31
|
+
|
|
32
|
+
it "returns nil" do
|
|
33
|
+
Date.set("").should == nil
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
context "when time provided" do
|
|
41
|
+
|
|
42
|
+
it "returns the time" do
|
|
43
|
+
Date.set(@time).should == @time.utc
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
context "when a date provided" do
|
|
49
|
+
|
|
50
|
+
it "returns a time from the date" do
|
|
51
|
+
Date.set(@time.to_date).should == @time
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
describe "#get" do
|
|
59
|
+
|
|
60
|
+
context "when value is nil" do
|
|
61
|
+
|
|
62
|
+
it "returns nil" do
|
|
63
|
+
Date.get(nil).should be_nil
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
context "when value is not nil" do
|
|
69
|
+
|
|
70
|
+
context "when time is UTC" do
|
|
71
|
+
|
|
72
|
+
before do
|
|
73
|
+
@utc = Date.new(1974, 12, 1).to_time.utc
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
context "when time zone is not utc" do
|
|
77
|
+
|
|
78
|
+
before do
|
|
79
|
+
Time.zone = "Eastern Time (US & Canada)"
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
after do
|
|
83
|
+
Time.zone = "UTC"
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "converts to the proper date" do
|
|
87
|
+
Date.get(@utc).should == Date.new(1974, 12, 1)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it "converts the time back to a date" do
|
|
95
|
+
Date.get(@time).should == @time.to_date
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
end
|