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