require File.dirname(__FILE__) + '/../test_helper' class ChangesetTest < Test::Unit::TestCase fixtures :changesets, :repositories, :changes, :projects def setup RetroCM.reload end def test_crud rp = repositories(:public) o1 = Changeset.new(:repository_id => rp.id, :revision => "9999") assert(o1.save) o2 = Changeset.find(o1.id) assert_equal(o1.revision, o2.revision) o2.revision = "1111" assert(o2.save) assert_not_equal(o1.revision, o2.revision) o1.reload assert_equal(o1.revision, o2.revision) assert(o1.destroy) end def test_validations o1 = Changeset.new assert(!o1.save) rp1 = repositories(:public) rp2 = Repository::Subversion.new(:name => 'Repos 2', :path => '/home/svn') assert(rp2.save) o1 = rp1.changesets.first o2 = Changeset.new(:repository_id => rp1.id, :revision => o1.revision) assert(!o2.save) assert_not_nil(o2.errors[:revision]) o2 = Changeset.new(:repository_id => rp2.id, :revision => o1.revision) assert(o2.save) end def test_finders pr = projects(:retro) changesets = Changeset.find(:all) assert_equal(11, changesets.size) changesets = Changeset.find_by_project(pr, :all) assert_equal(9, changesets.size) changeset = Changeset.find_by_project_and_revision(pr, 4) assert_not_nil(changeset) assert_equal('4', changeset.revision) changeset = Changeset.find_by_project_and_revision(pr, 333) assert_nil(changeset) end def test_counter pr = projects(:retro) count = Changeset.count assert_equal(11, count) count = Changeset.count_for_project(pr) assert_equal(9, count) end def test_next_and_previous_selection pr = projects(:retro) cs4 = Changeset.find_by_project_and_revision(pr, 4) cs3 = cs4.prev_by_project(pr) cs2 = cs3.prev_by_project(pr) cs1 = cs2.prev_by_project(pr) cs0 = cs1.prev_by_project(pr) cs5 = cs4.next_by_project(pr) cs6 = cs5.next_by_project(pr) cs7 = cs6.next_by_project(pr) cs8 = cs7.next_by_project(pr) cs9 = cs8.next_by_project(pr) csX = cs9.next_by_project(pr) assert_equal('4', cs4.revision) assert_equal('3', cs3.revision) assert_equal('2', cs2.revision) assert_equal('1', cs1.revision) assert_nil(cs0) assert_equal('5', cs5.revision) assert_equal('6', cs6.revision) assert_equal('7', cs7.revision) assert_equal('8', cs8.revision) assert_equal('9', cs9.revision) assert_nil(csX) end end