# 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
