# encoding: utf-8 require File.expand_path('../../test_helper', __FILE__) class CourseTest < ActiveSupport::TestCase fixtures :courses, :roles, :member_roles, :members, :boards, :messages, :news def setup end # 基本测试,从不完整的空对象,验证属性的合法值 test 'test courses all validations' do course = Course.new assert_not_nil course # 默认模型不完整 assert course.invalid? error_keys = course.errors.keys valid_attr = [:password, :term, :name, :class_period] valid_attr.each do |attr| assert(error_keys.include?(attr), "attr unknow: #{attr}") end # 添加密码 course.password = '123456' course.term = '春季学期' course.name = '课程名称测试' course.class_period = '32' assert course.valid?, course.errors.full_messages.to_s end test 'class_period format validations' do course = Course.find_by_id(8) assert course, "course obj is nil." course.class_period = '' assert course.invalid?, "course class_period can not be number. #{course.class_period}" course.class_period = '32' assert course.valid?, "course class_period can not be number. #{course.class_period}" end test 'name valid with CJK coding' do name_quirk = '电路与电子学基础(软件工程专业)' course = Course.find_by_id(74) course.name = "test_course" assert course.valid? course.name = name_quirk assert course.valid?, "Quirk name ===> #{course.name}" end test 'description too long must be valid.(4096)' do course = Course.find_by_id(8) course.description = 'a' * 40 # description length validate. course.valid? assert course.errors[:name].empty? assert course.valid? end def teardown end end