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,24 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Humanoid::Extensions::Nil::Assimilation do
|
|
4
|
+
|
|
5
|
+
describe "#assimilate" do
|
|
6
|
+
|
|
7
|
+
before do
|
|
8
|
+
@name = Name.new(:first_name => "Durran")
|
|
9
|
+
@parent = Person.new(:title => "Mr.", :name => @name)
|
|
10
|
+
@options = Humanoid::Associations::Options.new(:name => :name)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "removes the child attribute from the parent" do
|
|
14
|
+
nil.assimilate(@parent, @options)
|
|
15
|
+
@parent.attributes[:name].should be_nil
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "returns nil" do
|
|
19
|
+
nil.assimilate(@parent, @options).should be_nil
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Humanoid::Extensions::Object::Conversions do
|
|
4
|
+
|
|
5
|
+
describe "#humanoidize" do
|
|
6
|
+
|
|
7
|
+
it "returns its attributes" do
|
|
8
|
+
Person.new(:_id => 1, :title => "Sir").humanoidize.should ==
|
|
9
|
+
{ "_id" => 1, "title" => "Sir", "age" => 100, "_type" => "Person", "blood_alcohol_content" => 0.0, "pets" => false}
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "#get" do
|
|
15
|
+
|
|
16
|
+
before do
|
|
17
|
+
@attributes = { :_id => "test", :title => "Sir", :age => 100 }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "instantiates a new class from the attributes" do
|
|
21
|
+
Person.get(@attributes).should == Person.new(@attributes)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe "#set" do
|
|
27
|
+
|
|
28
|
+
context "when object has attributes" do
|
|
29
|
+
|
|
30
|
+
before do
|
|
31
|
+
@attributes = { "_id" => "test", "title" => "Sir", "age" => 100, "_type" => "Person", "blood_alcohol_content" => 0.0, "pets" => false }
|
|
32
|
+
@person = Person.new(@attributes)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "converts the object to a hash" do
|
|
36
|
+
Person.set(@person).should == @attributes
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Humanoid::Extensions::Proc::Scoping do
|
|
4
|
+
|
|
5
|
+
describe "#scoped" do
|
|
6
|
+
|
|
7
|
+
context "when the proc accessed a hash" do
|
|
8
|
+
|
|
9
|
+
before do
|
|
10
|
+
@proc = lambda { |number| { :where => { :count => number } } }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "calls the hash with the args" do
|
|
14
|
+
@proc.scoped(10).should == { :where => { :count => 10 } }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
context "when the proc calls a criteria" do
|
|
20
|
+
|
|
21
|
+
before do
|
|
22
|
+
@proc = lambda { |title| Person.where(:title => title) }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "returns the criteria scoped" do
|
|
26
|
+
@proc.scoped("Sir").should ==
|
|
27
|
+
{ :where => { :title => "Sir" } }
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Humanoid::Extensions::String::Conversions do
|
|
4
|
+
|
|
5
|
+
describe "#set" do
|
|
6
|
+
it "returns the object to_s" do
|
|
7
|
+
String.set(1).should == "1"
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe "#get" do
|
|
12
|
+
it "returns the string" do
|
|
13
|
+
String.get("test").should == "test"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Humanoid::Extensions::String::Inflections do
|
|
4
|
+
|
|
5
|
+
describe "#collectionize" do
|
|
6
|
+
|
|
7
|
+
context "when class is namepaced" do
|
|
8
|
+
|
|
9
|
+
it "returns an underscored tableized name" do
|
|
10
|
+
Medical::Patient.name.collectionize.should == "medical_patients"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
context "when class is not namespaced" do
|
|
16
|
+
|
|
17
|
+
it "returns an underscored tableized name" do
|
|
18
|
+
MixedDrink.name.collectionize.should == "mixed_drinks"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe "#identify" do
|
|
26
|
+
|
|
27
|
+
context "when parameterizing composite keys" do
|
|
28
|
+
|
|
29
|
+
it "converts the string to all lowercase and dashed" do
|
|
30
|
+
"A Midsummer Night's Dream".identify.should == "a-midsummer-night-quo-s-dream"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
context "when not parameterizing keys" do
|
|
36
|
+
|
|
37
|
+
before do
|
|
38
|
+
Humanoid.parameterize_keys = false
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
after do
|
|
42
|
+
Humanoid.parameterize_keys = true
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "does nothing to the keys" do
|
|
46
|
+
"A Midsummer Night's Dream".identify.should == "A Midsummer Night's Dream"
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
describe "#labelize" do
|
|
53
|
+
|
|
54
|
+
it "returns the underscored name humanized" do
|
|
55
|
+
MixedDrink.name.labelize.should == "Mixed drink"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe "#singular?" do
|
|
61
|
+
|
|
62
|
+
context "when singular" do
|
|
63
|
+
|
|
64
|
+
it "returns true" do
|
|
65
|
+
"bat".singular?.should be_true
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
context "when string is added to inflections" do
|
|
69
|
+
|
|
70
|
+
it "returns true" do
|
|
71
|
+
"address".singular?.should be_true
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
context "when plural" do
|
|
79
|
+
|
|
80
|
+
it "returns false" do
|
|
81
|
+
"bats".singular?.should be_false
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
context "when string is added to inflections" do
|
|
85
|
+
|
|
86
|
+
it "returns false" do
|
|
87
|
+
"addresses".singular?.should be_false
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
describe "plural?" do
|
|
97
|
+
|
|
98
|
+
context "when singular" do
|
|
99
|
+
|
|
100
|
+
it "returns false" do
|
|
101
|
+
"bat".plural?.should be_false
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
context "when string is added to inflections" do
|
|
105
|
+
|
|
106
|
+
it "returns false" do
|
|
107
|
+
"address".plural?.should be_false
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
context "when plural" do
|
|
115
|
+
|
|
116
|
+
it "returns true" do
|
|
117
|
+
"bats".plural?.should be_true
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
context "when string is added to inflections" do
|
|
121
|
+
|
|
122
|
+
it "returns true" do
|
|
123
|
+
"addresses".plural?.should be_true
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
describe "invert" do
|
|
133
|
+
|
|
134
|
+
context "when asc" do
|
|
135
|
+
|
|
136
|
+
it "returns desc" do
|
|
137
|
+
"asc".invert.should == "desc"
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
context "when ascending" do
|
|
143
|
+
|
|
144
|
+
it "returns descending" do
|
|
145
|
+
"ascending".invert.should == "descending"
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
context "when desc" do
|
|
151
|
+
|
|
152
|
+
it "returns asc" do
|
|
153
|
+
"desc".invert.should == "asc"
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
context "when descending" do
|
|
159
|
+
|
|
160
|
+
it "returns ascending" do
|
|
161
|
+
"descending".invert.should == "ascending"
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
describe "#reader" do
|
|
169
|
+
|
|
170
|
+
context "when string is a reader" do
|
|
171
|
+
|
|
172
|
+
it "returns self" do
|
|
173
|
+
"attribute".reader.should == "attribute"
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
context "when string is a writer" do
|
|
179
|
+
|
|
180
|
+
it "returns the reader" do
|
|
181
|
+
"attribute=".reader.should == "attribute"
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
describe "#writer?" do
|
|
189
|
+
|
|
190
|
+
context "when string is a reader" do
|
|
191
|
+
|
|
192
|
+
it "returns false" do
|
|
193
|
+
"attribute".writer?.should be_false
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
context "when string is a writer" do
|
|
199
|
+
|
|
200
|
+
it "returns true" do
|
|
201
|
+
"attribute=".writer?.should be_true
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Humanoid::Extensions::Symbol::Inflections do
|
|
4
|
+
|
|
5
|
+
describe "#singular?" do
|
|
6
|
+
|
|
7
|
+
context "when singular" do
|
|
8
|
+
|
|
9
|
+
it "returns true" do
|
|
10
|
+
:bat.singular?.should be_true
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
context "when plural" do
|
|
16
|
+
|
|
17
|
+
it "returns false" do
|
|
18
|
+
:bats.singular?.should be_false
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe "plural?" do
|
|
26
|
+
|
|
27
|
+
context "when singular" do
|
|
28
|
+
|
|
29
|
+
it "returns false" do
|
|
30
|
+
:bat.plural?.should be_false
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
context "when plural" do
|
|
36
|
+
|
|
37
|
+
it "returns true" do
|
|
38
|
+
:bats.plural?.should be_true
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe "invert" do
|
|
46
|
+
|
|
47
|
+
context "when :asc" do
|
|
48
|
+
|
|
49
|
+
it "returns :desc" do
|
|
50
|
+
:asc.invert.should == :desc
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
context "when :ascending" do
|
|
56
|
+
|
|
57
|
+
it "returns :descending" do
|
|
58
|
+
:ascending.invert.should == :descending
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
context "when :desc" do
|
|
64
|
+
|
|
65
|
+
it "returns :asc" do
|
|
66
|
+
:desc.invert.should == :asc
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
context "when :descending" do
|
|
72
|
+
|
|
73
|
+
it "returns :ascending" do
|
|
74
|
+
:descending.invert.should == :ascending
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
describe "#gt" do
|
|
82
|
+
|
|
83
|
+
it 'returns :"foo $gt"' do
|
|
84
|
+
ret = :foo.gt
|
|
85
|
+
ret.key.should == :foo
|
|
86
|
+
ret.operator.should == "gt"
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Humanoid::Extensions::Time::Conversions do
|
|
4
|
+
|
|
5
|
+
before do
|
|
6
|
+
Time.zone = "Canberra"
|
|
7
|
+
@time = Time.local(1976, 11, 19)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
after do
|
|
11
|
+
Time.zone = nil
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "#set" do
|
|
15
|
+
|
|
16
|
+
context "when value is a string" do
|
|
17
|
+
|
|
18
|
+
it "converts to a utc time" do
|
|
19
|
+
Time.set(@time.to_s).utc_offset.should == 0
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
context "when value is a time" do
|
|
25
|
+
|
|
26
|
+
it "converts to a utc time" do
|
|
27
|
+
Time.set(@time).utc_offset.should == 0
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
context "when value is already a utc time" do
|
|
33
|
+
|
|
34
|
+
it "returns the time" do
|
|
35
|
+
Time.set(@time.utc).should == @time.utc
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
context "when value is nil" do
|
|
41
|
+
|
|
42
|
+
it "returns nil" do
|
|
43
|
+
Time.set(nil).should be_nil
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe "#get" do
|
|
51
|
+
|
|
52
|
+
context "when time is provided" do
|
|
53
|
+
|
|
54
|
+
it "returns the local time" do
|
|
55
|
+
Time.get(@time.dup.utc).utc_offset.should == @time.utc_offset
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
context "when time is nil" do
|
|
61
|
+
|
|
62
|
+
it "returns nil" do
|
|
63
|
+
Time.get(nil).should be_nil
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|