# running_all_tests is a necessary but unfortunate consequence # of the way in which scope_controller_model affects activerecord based models # without this, the test cannot be run independently of the others # inasmuch as upon instantiation of any controller using scope_controller_model # acting on an ActiveRecord::Base derived model, the class will be modified # in the case of the tests, this is Dummy RUNNING_ALL_TESTS = false unless defined?(RUNNING_ALL_TESTS) require File.join(File.dirname(__FILE__), 'test_helper') class ModelTest < Test::Unit::TestCase require_fixture 'dummy' require_fixture 'account' fixtures :accounts, :dummies def test_creates dummy = Dummy.create account = Account.create assert dummy assert account end def test_extension_occurs_on_subclass_and_base_class assert ActiveRecord::Base.included_modules.include?(ElcTechnologies::ScopeControllerModel::Model) assert Dummy.included_modules.include?(ElcTechnologies::ScopeControllerModel::Model) assert Account.included_modules.include?(ElcTechnologies::ScopeControllerModel::Model) # Also make sure already_included is not assert !ActiveRecord::Base.included_modules.include?(ElcTechnologies::ScopeControllerModel::ModelExtensions) if RUNNING_ALL_TESTS assert Dummy.included_modules.include?(ElcTechnologies::ScopeControllerModel::ModelExtensions) else assert !Dummy.included_modules.include?(ElcTechnologies::ScopeControllerModel::ModelExtensions) end assert !Account.included_modules.include?(ElcTechnologies::ScopeControllerModel::ModelExtensions) # Test already included is not set yet assert !ActiveRecord::Base.already_included? if RUNNING_ALL_TESTS assert Dummy.already_included? else assert !Dummy.already_included? end assert !Account.already_included? end def test_set_scope_controller_model_sets_includeds_correctly Dummy.set_scope_controller_model(:account => Account.find(:first)) assert Dummy.included_modules.include?(ElcTechnologies::ScopeControllerModel::ModelExtensions) assert Dummy.already_included? assert !Account.included_modules.include?(ElcTechnologies::ScopeControllerModel::ModelExtensions) assert !Account.already_included? assert !ActiveRecord::Base.included_modules.include?(ElcTechnologies::ScopeControllerModel::ModelExtensions) assert !ActiveRecord::Base.already_included? end def test_set_scope_controller_model_sets_attr_and_val val = accounts(:account_1) key = :account Dummy.set_scope_controller_model(key => val) assert Dummy.methods.include?("scope_attribute") assert Dummy.methods.include?("scope_value") assert_equal key, Dummy.scope_attribute assert_equal val, Dummy.scope_value assert !Account.methods.include?("scope_attribute") assert !Account.methods.include?("scope_value") assert !ActiveRecord::Base.methods.include?("scope_attribute") assert !ActiveRecord::Base.methods.include?("scope_value") end def test_set_scope_controller_model_sets_val_correctly_on_repeated_entries val = accounts(:account_1) val2 = accounts(:account_2) key = :account Dummy.set_scope_controller_model(key => val) assert Dummy.methods.include?("scope_attribute") assert Dummy.methods.include?("scope_value") assert_equal key, Dummy.scope_attribute assert_equal val, Dummy.scope_value Dummy.set_scope_controller_model(key => val2) assert_equal key, Dummy.scope_attribute assert_equal val2, Dummy.scope_value end end