test/test_mongoo.rb in mongoo-0.1.5 vs test/test_mongoo.rb in mongoo-0.2.0
- old
+ new
@@ -48,53 +48,53 @@
should "be able to do crud" do
p = Person.new("name" => "Ben")
p.jobs.internships.high_school = ["Sun Microsystems"]
p.insert
-
+
p = Person.find_one(p.id)
p.update
p.location.city = "San Francisco"
p.update
p.name = "Ben Myles"
p.location.city = "San Diego"
assert_not_equal p.persisted_mongohash.raw_hash, p.mongohash.raw_hash
p.update
-
+
p2 = Person.find_one(p.id)
assert_equal "Ben Myles", p2.name
assert_equal "San Diego", p2.location.city
-
+
p.location.city = "Los Angeles"
p.update!
-
+
p2.location.city = "San Jose"
assert_raise(Mongoo::StaleUpdateError) { p2.update! }
p2.location.city = "San Diego"
p2.name = "Benjamin"
p2.update!
-
+
assert p2.reload
-
+
assert_equal "Los Angeles", p2.location.city
assert_equal "Benjamin", p2.name
-
+
assert p2.persisted_mongohash.raw_hash["location"].has_key?("city")
p2.unset "location.city"
p2.update
assert !p2.persisted_mongohash.raw_hash["location"].has_key?("city")
-
+
p2.location.demographics.crime_rate = :high
p2.location.city = "San Bruno"
p2.update
assert_raise(NoMethodError) { p2.location.demographics = 123 }
p2.unset "location"
p2.update
p2 = Person.find_one(p2.id)
assert !p2.persisted_mongohash.raw_hash.has_key?("location")
-
+
p2.location.city = "Brisbane"
p2.location.demographics.crime_rate = :low
p2.update
assert_equal ["Brisbane", :low], [p2.location.city, p2.location.demographics.crime_rate]
p2 = Person.find_one(p2.id)
@@ -102,11 +102,11 @@
p2.location.unset
p2.update
assert !p2.persisted_mongohash.raw_hash.has_key?("location")
p2 = Person.find_one(p2.id)
assert !p2.persisted_mongohash.raw_hash.has_key?("location")
-
+
p2.location.city = "Brisbane"
p2.location.demographics.crime_rate = :low
p2.update
assert_equal ["Brisbane", :low], [p2.location.city, p2.location.demographics.crime_rate]
assert p2.persisted_mongohash.raw_hash["location"].has_key?("demographics")
@@ -138,39 +138,39 @@
mod.inc "total", 5
end
assert_equal 15, p.jobs.total
p = Person.find_one(p.id)
assert_equal 15, p.jobs.total
-
+
assert_equal nil, p.interests
p.mod! { |mod| mod.push("interests", "skydiving") }
assert_equal ["skydiving"], p.interests
p = Person.find_one(p.id)
assert_equal ["skydiving"], p.interests
p.mod! { |mod| mod.push("interests", "snowboarding") }
assert_equal ["skydiving", "snowboarding"], p.interests
p = Person.find_one(p.id)
assert_equal ["skydiving", "snowboarding"], p.interests
-
+
p.mod! { |mod| mod.push_all("interests", ["reading","travelling"]) }
assert_equal ["skydiving", "snowboarding", "reading", "travelling"], p.interests
p = Person.find_one(p.id)
assert_equal ["skydiving", "snowboarding", "reading", "travelling"], p.interests
-
+
p.mod! { |mod| mod.add_to_set("interests", "skydiving") }
assert_equal ["skydiving", "snowboarding", "reading", "travelling"], p.interests
p.mod! { |mod| mod.add_to_set("interests", "swimming") }
assert_equal ["skydiving", "snowboarding", "reading", "travelling", "swimming"], p.interests
p.mod! { |mod| mod.add_to_set("interests", "swimming") }
assert_equal ["skydiving", "snowboarding", "reading", "travelling", "swimming"], p.interests
-
+
p.mod! { |mod| mod.pop("interests") }
assert_equal ["skydiving", "snowboarding", "reading", "travelling"], p.interests
-
+
p.mod! { |mod| mod.pop("interests") }
assert_equal ["skydiving", "snowboarding", "reading"], p.interests
-
+
p.mod! { |mod| mod.push("interests", "reading") }
assert_equal ["skydiving", "snowboarding", "reading", "reading"], p.interests
p = Person.find_one(p.id)
assert_equal ["skydiving", "snowboarding", "reading", "reading"], p.interests
p.mod! { |mod| mod.pull("interests", "reading") }
@@ -180,11 +180,11 @@
p.mod! { |mod| mod.push_all("interests", ["reading","travelling"]) }
assert_equal ["skydiving", "snowboarding", "reading", "travelling"], p.interests
p = Person.find_one(p.id)
assert_equal ["skydiving", "snowboarding", "reading", "travelling"], p.interests
-
+
p.mod! { |mod| mod.pull_all("interests", ["reading", "skydiving"]) }
assert_equal ["snowboarding", "travelling"], p.interests
p = Person.find_one(p.id)
assert_equal ["snowboarding", "travelling"], p.interests
end
@@ -269,8 +269,33 @@
should "not fail on an empty array" do
i = SearchIndex.new(:terms => [])
i.insert!
i.terms << "foo"
i.update!
+ end
+
+ should "work when forked" do
+ Person.new(:name => "Ben").insert!
+ fork { assert_equal "Ben", Person.find_one({name: "Ben"}).name }
+ Process.wait
+ end
+
+ should "work when threaded" do
+ 1.upto(10) do |i|
+ Person.new(:name => "Ben#{i}").insert!
+ end
+
+ threads = []
+ 100.times do |count|
+ threads << Thread.new do
+ (1..10).to_a.shuffle { |i| assert_equal "Ben#{i}", Person.find_one({name: "Ben#{i}"}).name }
+ end
+ end
+ threads.each { |th| th.join }
+ end
+
+ should "be able to set the collection name manually" do
+ assert_equal "people", Person.collection.name
+ assert_equal "spacemen", SpacePerson.collection.name
end
end