acceptance_validation_test.rb 1.6 KB
Newer Older
1 2 3 4 5
# encoding: utf-8
require 'cases/helper'

require 'models/topic'
require 'models/reply'
6
require 'models/person'
7 8 9

class AcceptanceValidationTest < ActiveModel::TestCase

10
  def teardown
11
    Topic.clear_validators!
12
  end
13 14

  def test_terms_of_service_agreement_no_acceptance
15
    Topic.validates_acceptance_of(:terms_of_service)
16

17 18
    t = Topic.new("title" => "We should not be confirmed")
    assert t.valid?
19 20 21
  end

  def test_terms_of_service_agreement
22
    Topic.validates_acceptance_of(:terms_of_service)
23

24 25
    t = Topic.new("title" => "We should be confirmed","terms_of_service" => "")
    assert t.invalid?
26 27 28
    assert_equal ["must be accepted"], t.errors[:terms_of_service]

    t.terms_of_service = "1"
29
    assert t.valid?
30 31 32
  end

  def test_eula
33
    Topic.validates_acceptance_of(:eula, message: "must be abided")
34

35 36
    t = Topic.new("title" => "We should be confirmed","eula" => "")
    assert t.invalid?
37 38 39
    assert_equal ["must be abided"], t.errors[:eula]

    t.eula = "1"
40
    assert t.valid?
41 42 43
  end

  def test_terms_of_service_agreement_with_accept_value
44
    Topic.validates_acceptance_of(:terms_of_service, accept: "I agree.")
45

46 47
    t = Topic.new("title" => "We should be confirmed", "terms_of_service" => "")
    assert t.invalid?
48 49 50
    assert_equal ["must be accepted"], t.errors[:terms_of_service]

    t.terms_of_service = "I agree."
51
    assert t.valid?
52 53
  end

54
  def test_validates_acceptance_of_for_ruby_class
55
    Person.validates_acceptance_of :karma
56

57 58
    p = Person.new
    p.karma = ""
59

60 61
    assert p.invalid?
    assert_equal ["must be accepted"], p.errors[:karma]
62

63 64 65 66
    p.karma = "1"
    assert p.valid?
  ensure
    Person.reset_callbacks(:validate)
67
  end
68
end