test/functional/test_modifiers.rb in mongo_mapper-unstable-2010.2.28 vs test/functional/test_modifiers.rb in mongo_mapper-unstable-2010.3.3
- old
+ new
@@ -8,245 +8,315 @@
key :week_count, Integer, :default => 0
key :month_count, Integer, :default => 0
key :tags, Array
end
end
-
+
def assert_page_counts(page, day_count, week_count, month_count)
page.reload
page.day_count.should == day_count
page.week_count.should == week_count
page.month_count.should == month_count
end
-
- should "be able to increment with criteria and modifier hashes" do
- page = @page_class.create(:title => 'Home')
- page2 = @page_class.create(:title => 'Home')
-
- @page_class.increment({:title => 'Home'}, {
- :day_count => 1, :week_count => 2, :month_count => 3
- })
-
- assert_page_counts page, 1, 2, 3
- assert_page_counts page2, 1, 2, 3
- end
-
- should "be able to increment with ids and modifier hash" do
- page = @page_class.create(:title => 'Home')
- page2 = @page_class.create(:title => 'Home')
-
- @page_class.increment(page.id, page2.id, {
- :day_count => 1, :week_count => 2, :month_count => 3
- })
-
- assert_page_counts page, 1, 2, 3
- assert_page_counts page2, 1, 2, 3
- end
-
- should "be able to decrement with criteria and modifier hashes" do
- page = @page_class.create(:title => 'Home', :day_count => 1, :week_count => 2, :month_count => 3)
- page2 = @page_class.create(:title => 'Home', :day_count => 1, :week_count => 2, :month_count => 3)
-
- @page_class.decrement({:title => 'Home'}, {
- :day_count => 1, :week_count => 2, :month_count => 3
- })
-
- assert_page_counts page, 0, 0, 0
- assert_page_counts page2, 0, 0, 0
- end
-
- should "be able to decrement with ids and modifier hash" do
- page = @page_class.create(:title => 'Home', :day_count => 1, :week_count => 2, :month_count => 3)
- page2 = @page_class.create(:title => 'Home', :day_count => 1, :week_count => 2, :month_count => 3)
-
- @page_class.decrement(page.id, page2.id, {
- :day_count => 1, :week_count => 2, :month_count => 3
- })
-
- assert_page_counts page, 0, 0, 0
- assert_page_counts page2, 0, 0, 0
- end
-
- should "always decrement when decrement is called whether number is positive or negative" do
- page = @page_class.create(:title => 'Home', :day_count => 1, :week_count => 2, :month_count => 3)
- page2 = @page_class.create(:title => 'Home', :day_count => 1, :week_count => 2, :month_count => 3)
-
- @page_class.decrement(page.id, page2.id, {
- :day_count => -1, :week_count => 2, :month_count => -3
- })
-
- assert_page_counts page, 0, 0, 0
- assert_page_counts page2, 0, 0, 0
- end
-
- should "be able to set with criteria and modifier hashes" do
- page = @page_class.create(:title => 'Home')
- page2 = @page_class.create(:title => 'Home')
-
- @page_class.set({:title => 'Home'}, :title => 'Home Revised')
-
- page.reload
- page.title.should == 'Home Revised'
-
- page2.reload
- page2.title.should == 'Home Revised'
- end
-
- should "be able to set with ids and modifier hash" do
- page = @page_class.create(:title => 'Home')
- page2 = @page_class.create(:title => 'Home')
-
- @page_class.set(page.id, page2.id, :title => 'Home Revised')
-
- page.reload
- page.title.should == 'Home Revised'
-
- page2.reload
- page2.title.should == 'Home Revised'
- end
-
- should "be able to push with criteria and modifier hashes" do
- page = @page_class.create(:title => 'Home')
- page2 = @page_class.create(:title => 'Home')
-
- @page_class.push({:title => 'Home'}, :tags => 'foo')
-
- page.reload
- page.tags.should == %w(foo)
-
- page2.reload
- page.tags.should == %w(foo)
- end
-
- should "be able to push with ids and modifier hash" do
- page = @page_class.create(:title => 'Home')
- page2 = @page_class.create(:title => 'Home')
-
- @page_class.push(page.id, page2.id, :tags => 'foo')
-
- page.reload
- page.tags.should == %w(foo)
-
- page2.reload
- page.tags.should == %w(foo)
- end
- should "be able to push all with criteria and modifier hashes" do
- page = @page_class.create(:title => 'Home')
- page2 = @page_class.create(:title => 'Home')
- tags = %w(foo bar)
-
- @page_class.push_all({:title => 'Home'}, :tags => tags)
-
- page.reload
- page.tags.should == tags
-
- page2.reload
- page.tags.should == tags
- end
-
- should "be able to push all with ids and modifier hash" do
- page = @page_class.create(:title => 'Home')
- page2 = @page_class.create(:title => 'Home')
- tags = %w(foo bar)
-
- @page_class.push_all(page.id, page2.id, :tags => tags)
-
- page.reload
- page.tags.should == tags
-
- page2.reload
- page.tags.should == tags
- end
-
- should "be able to pull with criteria and modifier hashes" do
- page = @page_class.create(:title => 'Home', :tags => %w(foo bar))
- page2 = @page_class.create(:title => 'Home', :tags => %w(foo bar))
-
- @page_class.pull({:title => 'Home'}, :tags => 'foo')
-
- page.reload
- page.tags.should == %w(bar)
-
- page2.reload
- page.tags.should == %w(bar)
- end
-
- should "be able to pull with ids and modifier hash" do
- page = @page_class.create(:title => 'Home', :tags => %w(foo bar))
- page2 = @page_class.create(:title => 'Home', :tags => %w(foo bar))
-
- @page_class.pull(page.id, page2.id, :tags => 'foo')
-
- page.reload
- page.tags.should == %w(bar)
-
- page2.reload
- page.tags.should == %w(bar)
- end
+ context "using class methods" do
+ should "be able to increment with criteria and modifier hashes" do
+ page = @page_class.create(:title => 'Home')
+ page2 = @page_class.create(:title => 'Home')
- should "be able to pull all with criteria and modifier hashes" do
- page = @page_class.create(:title => 'Home', :tags => %w(foo bar baz))
- page2 = @page_class.create(:title => 'Home', :tags => %w(foo bar baz))
-
- @page_class.pull_all({:title => 'Home'}, :tags => %w(foo bar))
-
- page.reload
- page.tags.should == %w(baz)
-
- page2.reload
- page.tags.should == %w(baz)
- end
-
- should "be able to pull all with ids and modifier hash" do
- page = @page_class.create(:title => 'Home', :tags => %w(foo bar baz))
- page2 = @page_class.create(:title => 'Home', :tags => %w(foo bar baz))
-
- @page_class.pull_all(page.id, page2.id, :tags => %w(foo bar))
-
- page.reload
- page.tags.should == %w(baz)
-
- page2.reload
- page.tags.should == %w(baz)
- end
+ @page_class.increment({:title => 'Home'}, {
+ :day_count => 1, :week_count => 2, :month_count => 3
+ })
- should "be able to push uniq with criteria and modifier hash" do
- page = @page_class.create(:title => 'Home', :tags => 'foo')
- page2 = @page_class.create(:title => 'Home')
-
- @page_class.push_uniq({:title => 'Home'}, :tags => 'foo')
-
- page.reload
- page.tags.should == %w(foo)
-
- page2.reload
- page.tags.should == %w(foo)
+ assert_page_counts page, 1, 2, 3
+ assert_page_counts page2, 1, 2, 3
+ end
+
+ should "be able to increment with ids and modifier hash" do
+ page = @page_class.create(:title => 'Home')
+ page2 = @page_class.create(:title => 'Home')
+
+ @page_class.increment(page.id, page2.id, {
+ :day_count => 1, :week_count => 2, :month_count => 3
+ })
+
+ assert_page_counts page, 1, 2, 3
+ assert_page_counts page2, 1, 2, 3
+ end
+
+ should "be able to decrement with criteria and modifier hashes" do
+ page = @page_class.create(:title => 'Home', :day_count => 1, :week_count => 2, :month_count => 3)
+ page2 = @page_class.create(:title => 'Home', :day_count => 1, :week_count => 2, :month_count => 3)
+
+ @page_class.decrement({:title => 'Home'}, {
+ :day_count => 1, :week_count => 2, :month_count => 3
+ })
+
+ assert_page_counts page, 0, 0, 0
+ assert_page_counts page2, 0, 0, 0
+ end
+
+ should "be able to decrement with ids and modifier hash" do
+ page = @page_class.create(:title => 'Home', :day_count => 1, :week_count => 2, :month_count => 3)
+ page2 = @page_class.create(:title => 'Home', :day_count => 1, :week_count => 2, :month_count => 3)
+
+ @page_class.decrement(page.id, page2.id, {
+ :day_count => 1, :week_count => 2, :month_count => 3
+ })
+
+ assert_page_counts page, 0, 0, 0
+ assert_page_counts page2, 0, 0, 0
+ end
+
+ should "always decrement when decrement is called whether number is positive or negative" do
+ page = @page_class.create(:title => 'Home', :day_count => 1, :week_count => 2, :month_count => 3)
+ page2 = @page_class.create(:title => 'Home', :day_count => 1, :week_count => 2, :month_count => 3)
+
+ @page_class.decrement(page.id, page2.id, {
+ :day_count => -1, :week_count => 2, :month_count => -3
+ })
+
+ assert_page_counts page, 0, 0, 0
+ assert_page_counts page2, 0, 0, 0
+ end
+
+ should "be able to set with criteria and modifier hashes" do
+ page = @page_class.create(:title => 'Home')
+ page2 = @page_class.create(:title => 'Home')
+
+ @page_class.set({:title => 'Home'}, :title => 'Home Revised')
+
+ page.reload
+ page.title.should == 'Home Revised'
+
+ page2.reload
+ page2.title.should == 'Home Revised'
+ end
+
+ should "be able to set with ids and modifier hash" do
+ page = @page_class.create(:title => 'Home')
+ page2 = @page_class.create(:title => 'Home')
+
+ @page_class.set(page.id, page2.id, :title => 'Home Revised')
+
+ page.reload
+ page.title.should == 'Home Revised'
+
+ page2.reload
+ page2.title.should == 'Home Revised'
+ end
+
+ should "be able to push with criteria and modifier hashes" do
+ page = @page_class.create(:title => 'Home')
+ page2 = @page_class.create(:title => 'Home')
+
+ @page_class.push({:title => 'Home'}, :tags => 'foo')
+
+ page.reload
+ page.tags.should == %w(foo)
+
+ page2.reload
+ page.tags.should == %w(foo)
+ end
+
+ should "be able to push with ids and modifier hash" do
+ page = @page_class.create(:title => 'Home')
+ page2 = @page_class.create(:title => 'Home')
+
+ @page_class.push(page.id, page2.id, :tags => 'foo')
+
+ page.reload
+ page.tags.should == %w(foo)
+
+ page2.reload
+ page.tags.should == %w(foo)
+ end
+
+ should "be able to push all with criteria and modifier hashes" do
+ page = @page_class.create(:title => 'Home')
+ page2 = @page_class.create(:title => 'Home')
+ tags = %w(foo bar)
+
+ @page_class.push_all({:title => 'Home'}, :tags => tags)
+
+ page.reload
+ page.tags.should == tags
+
+ page2.reload
+ page.tags.should == tags
+ end
+
+ should "be able to push all with ids and modifier hash" do
+ page = @page_class.create(:title => 'Home')
+ page2 = @page_class.create(:title => 'Home')
+ tags = %w(foo bar)
+
+ @page_class.push_all(page.id, page2.id, :tags => tags)
+
+ page.reload
+ page.tags.should == tags
+
+ page2.reload
+ page.tags.should == tags
+ end
+
+ should "be able to pull with criteria and modifier hashes" do
+ page = @page_class.create(:title => 'Home', :tags => %w(foo bar))
+ page2 = @page_class.create(:title => 'Home', :tags => %w(foo bar))
+
+ @page_class.pull({:title => 'Home'}, :tags => 'foo')
+
+ page.reload
+ page.tags.should == %w(bar)
+
+ page2.reload
+ page.tags.should == %w(bar)
+ end
+
+ should "be able to pull with ids and modifier hash" do
+ page = @page_class.create(:title => 'Home', :tags => %w(foo bar))
+ page2 = @page_class.create(:title => 'Home', :tags => %w(foo bar))
+
+ @page_class.pull(page.id, page2.id, :tags => 'foo')
+
+ page.reload
+ page.tags.should == %w(bar)
+
+ page2.reload
+ page.tags.should == %w(bar)
+ end
+
+ should "be able to pull all with criteria and modifier hashes" do
+ page = @page_class.create(:title => 'Home', :tags => %w(foo bar baz))
+ page2 = @page_class.create(:title => 'Home', :tags => %w(foo bar baz))
+
+ @page_class.pull_all({:title => 'Home'}, :tags => %w(foo bar))
+
+ page.reload
+ page.tags.should == %w(baz)
+
+ page2.reload
+ page.tags.should == %w(baz)
+ end
+
+ should "be able to pull all with ids and modifier hash" do
+ page = @page_class.create(:title => 'Home', :tags => %w(foo bar baz))
+ page2 = @page_class.create(:title => 'Home', :tags => %w(foo bar baz))
+
+ @page_class.pull_all(page.id, page2.id, :tags => %w(foo bar))
+
+ page.reload
+ page.tags.should == %w(baz)
+
+ page2.reload
+ page.tags.should == %w(baz)
+ end
+
+ should "be able to push uniq with criteria and modifier hash" do
+ page = @page_class.create(:title => 'Home', :tags => 'foo')
+ page2 = @page_class.create(:title => 'Home')
+
+ @page_class.push_uniq({:title => 'Home'}, :tags => 'foo')
+
+ page.reload
+ page.tags.should == %w(foo)
+
+ page2.reload
+ page.tags.should == %w(foo)
+ end
+
+ should "be able to push uniq with ids and modifier hash" do
+ page = @page_class.create(:title => 'Home', :tags => 'foo')
+ page2 = @page_class.create(:title => 'Home')
+
+ @page_class.push_uniq(page.id, page2.id, :tags => 'foo')
+
+ page.reload
+ page.tags.should == %w(foo)
+
+ page2.reload
+ page.tags.should == %w(foo)
+ end
+
+ should "be able to remove the last element the array" do
+ page = @page_class.create(:title => 'Home', :tags => %w(foo bar))
+ @page_class.pop(page.id, :tags => 1)
+ page.reload
+ page.tags.should == %w(foo)
+ end
+
+ should "be able to remove the first element of the array" do
+ page = @page_class.create(:title => 'Home', :tags => %w(foo bar))
+ @page_class.pop(page.id, :tags => -1)
+ page.reload
+ page.tags.should == %w(bar)
+ end
end
-
- should "be able to push uniq with ids and modifier hash" do
- page = @page_class.create(:title => 'Home', :tags => 'foo')
- page2 = @page_class.create(:title => 'Home')
-
- @page_class.push_uniq(page.id, page2.id, :tags => 'foo')
-
- page.reload
- page.tags.should == %w(foo)
-
- page2.reload
- page.tags.should == %w(foo)
- end
-
- should "be able to remove the last element the array" do
- page = @page_class.create(:title => 'Home', :tags => %w(foo bar))
- @page_class.pop(page.id, :tags => 1)
- page.reload
- page.tags.should == %w(foo)
- end
- should "be able to remove the first element of the array" do
- page = @page_class.create(:title => 'Home', :tags => %w(foo bar))
- @page_class.pop(page.id, :tags => -1)
- page.reload
- page.tags.should == %w(bar)
+ context "using instance methods" do
+ should "be able to increment with modifier hashes" do
+ page = @page_class.create
+
+ page.increment({:day_count => 1, :week_count => 2, :month_count => 3})
+
+ assert_page_counts page, 1, 2, 3
+ end
+
+ should "be able to decrement with modifier hashes" do
+ page = @page_class.create(:day_count => 1, :week_count => 2, :month_count => 3)
+
+ page.decrement({:day_count => 1, :week_count => 2, :month_count => 3})
+
+ assert_page_counts page, 0, 0, 0
+ end
+
+ should "always decrement when decrement is called whether number is positive or negative" do
+ page = @page_class.create(:day_count => 1, :week_count => 2, :month_count => 3)
+
+ page.decrement({:day_count => -1, :week_count => 2, :month_count => -3})
+
+ assert_page_counts page, 0, 0, 0
+ end
+
+ should "be able to set with modifier hashes" do
+ page = @page_class.create(:title => 'Home')
+
+ page.set(:title => 'Home Revised')
+
+ page.reload
+ page.title.should == 'Home Revised'
+ end
+
+ should "be able to push with modifier hashes" do
+ page = @page_class.create
+
+ page.push(:tags => 'foo')
+
+ page.reload
+ page.tags.should == %w(foo)
+ end
+
+ should "be able to pull with criteria and modifier hashes" do
+ page = @page_class.create(:tags => %w(foo bar))
+
+ page.pull(:tags => 'foo')
+
+ page.reload
+ page.tags.should == %w(bar)
+ end
+
+ should "be able to push uniq with criteria and modifier hash" do
+ page = @page_class.create(:tags => 'foo')
+ page2 = @page_class.create
+
+ page.push_uniq(:tags => 'foo')
+ page.push_uniq(:tags => 'foo')
+
+ page.reload
+ page.tags.should == %w(foo)
+
+ page2.reload
+ page.tags.should == %w(foo)
+ end
end
+
end
\ No newline at end of file