Skip to content

Instantly share code, notes, and snippets.

@graemeworthy
Created April 21, 2009 21:28
Show Gist options
  • Save graemeworthy/99399 to your computer and use it in GitHub Desktop.
Save graemeworthy/99399 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'revisionsedits'
describe 'Versions' do
page_attributes = {:title => 'title of page', :body => 'body of page'}
before(:all) do
end
before(:each) do
@frank = User.create(:name => "Frank Black")
@edgar = User.create(:name => "J Edgar Hoover")
@@current_user = User.create(:name => 'Joe Login')
@fresh_page = Page.new
@fresh_page.attributes = page_attributes
end
it 'should count the creation of a building as an edit' do
@edgar.edits.count.should == 0
building = Building.create(:name => 'whitehouse', :user => @edgar)
@edgar.edits.count.should == 1
end
it 'should create a version of a page which was edited' do
building = Building.create(:name => 'whitehouse', :user => @edgar)
building.reload
building.versions.latest.building.should == building
building.versions.count.should == 1
end
it 'should count the creation of a page as an edit' do
@edgar.edits.count.should == 0
page = Page.new
page.title = 'edgars bio'
page.user = @edgar
page.save
@edgar.edits.count.should == 1
page.versions.count.should == 1
end
it 'should count the revision of a page as an edit' do
@edgar.edits.count.should == 0
page = Page.new
page.title = 'edgars homepage'
page.user = @edgar
page.save
@edgar.edits.count.should == 1
page.reload
page.title = "edgars new homepage"
page.user = @edgar
page.save
@edgar.edits.count.should == 2
page.versions.count.should == 2
end
it 'should count two revision of a page as two edits' do
@edgar.edits.count.should == 0
page = Page.new
page.title = 'edgars homepage'
page.user = @edgar
page.save
@edgar.edits.count.should == 1
page.reload
page.title = "edgars new homepage"
page.user = @edgar
page.save
@edgar.edits.count.should == 2
page.title = "edgars best homepage"
page.user = @edgar
page.save
@edgar.edits.count.should == 3
end
it 'should count the revision of a page as an edit forever' do
@edgar.edits.count.should == 0
@frank.edits.count.should == 0
page = Page.create(:title => 'edgars homepage', :user => @edgar)
page.reload
@edgar.edits.count.should == 1
page.title = "edgars new homepage"
page.user = @edgar
page.save
@edgar.edits.count.should == 2
page.title = "edgars stupid homepage"
page.user = @frank
page.save
@frank.edits.count.should == 1
@edgar.edits.count.should == 2
end
it 'should count both pages and buildings towards edits' do
@frank.edits.count.should == 0
@edgar.edits.count.should == 0
@fresh_page.user = @frank
@fresh_page.save
@frank.edits.count.should == 1
building = Building.create(:name => 'whitehouse', :user => @frank)
@frank.edits.count.should == 2
@fresh_page.title = "newer title"
@fresh_page.user = @frank
@fresh_page.save
@frank.edits.count.should == 3
building.name = 'green house'
building.user = @frank
building.save
@frank.edits.count.should == 4
building.name = 'greener house'
building.user = @edgar
building.save
@frank.edits.count.should == 4
@edgar.edits.count.should == 1
end
# it 'should attach the edit to a version and not a building' do
#
#
# end
#
# it 'should be able to get to the contents of an edit from the user' do
# building = Building.create(:name => 'prado')
# building.user = @frank
# building.save
# @frank.edits.count.should == 1;
# @frank.edits.first.name.should == 'prado'
# end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment