require File.dirname(__FILE__) + '/../test_helper' class TicketPropertyGlobalTest < Test::Unit::TestCase fixtures :priorities, :statuses, :tickets def test_default_assign_status default_assign(Status) end def test_default_assign_priority default_assign(Priority) end def test_destroy_status destroy(Status) end def test_destroy_priority destroy(Priority) end protected def default_assign(klass) o1 = klass.find_by_default_value(true) assert(o1.default_value?) o2 = klass.find_by_default_value(false) assert(!o2.default_value?) o2.default_value = true assert(o2.save) assert(o2.default_value?) o1.reload assert(!o1.default_value?) assert(o2.default_value?) o2.default_value = false assert(o2.default_value?) assert(o2.update_attributes(:default_value => false)) assert(o2.reload.default_value?) assert_equal(o2.id, klass.default.id) end def destroy(klass) default = klass.find_by_default_value(true) default_count = default.tickets.count assert(default.default_value?) assert(!default.destroy) non_default = klass.find_by_default_value(false) non_default_ticket_ids = non_default.tickets.collect{|t| t.id } non_default_count = non_default.tickets.count assert(!non_default.default_value?) assert(non_default.destroy) assert_raises(ActiveRecord::RecordNotFound) { non_default.reload } assert_equal(default_count + non_default_count, default.reload.tickets.count) Ticket.find_all_by_id(non_default_ticket_ids).each do |ticket| assert_equal(default.id, ticket.send(klass.name.downcase).id) end end end