require File.dirname(__FILE__) + '/../test_helper' class PatchTest < Test::Unit::TestCase fixtures :programs, :patches, :patch_versions def test_create_and_destroy p = Patch.create(:title => 'Some test patch', :description => 'Some description', :filename => 'some_patch.diff', :created_by => 1, :program_id => 1) p.patch_versions << PatchVersion.create(:comment => 'First version', :for_upstream_version => '1.0') v = p.patch_versions.first assert_equal(File.join(PatchVersion.patch_dir, v.id.to_s), v.path) # Test automatically assigned version p.patch_versions << PatchVersion.create(:comment => 'Automatic version', :for_upstream_version => '1.0', :text => 'Some patch contents') v = p.patch_versions.last assert_equal(2, v.version) # Try to break version p.patch_versions << PatchVersion.create(:comment => 'By-hand version', :for_upstream_version => '1.0', :text => 'Some patch contents') v = p.patch_versions.last assert_equal(3, v.version) # Test build method p.patch_versions.build(:comment => 'Automatic version', :for_upstream_version => '1.0', :text => 'Some patch contents') p.save v = p.patch_versions.last assert_equal(4, v.version) patch_path = File.join(PatchVersion.patch_dir, v.id.to_s) assert(File.readable?(patch_path)) v.destroy assert_equal(3, p.patch_versions(true).size) assert(!File.readable?(patch_path)) end def test_history p = Patch.find(2) assert_equal(2, p.patch_versions.size) p.patch_versions << PatchVersion.create(:comment => 'New patch version', :for_upstream_version => '2.0') v = p.latest_version assert_equal(3, v.version) end end