aboutsummaryrefslogtreecommitdiffstats
path: root/spec/models/public_body_change_request_spec.rb
blob: 0c4cea67b67dcfea2889ae1b15368c0dc1377730 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# == Schema Information
#
# Table name: public_body_change_requests
#
#  id                :integer          not null, primary key
#  user_email        :string(255)
#  user_name         :string(255)
#  user_id           :integer
#  public_body_name  :text
#  public_body_id    :integer
#  public_body_email :string(255)
#  source_url        :text
#  notes             :text
#  is_open           :boolean          default(TRUE), not null
#  created_at        :datetime         not null
#  updated_at        :datetime         not null
#

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')

describe PublicBodyChangeRequest, 'when validating' do

    it 'should not be valid without a public body name' do
        change_request = PublicBodyChangeRequest.new()
        change_request.valid?.should be_false
        change_request.errors[:public_body_name].should == ['Please enter the name of the authority']
    end

    it 'should not be valid without a user name if there is no user' do
        change_request = PublicBodyChangeRequest.new(:public_body_name => 'New Body')
        change_request.valid?.should be_false
        change_request.errors[:user_name].should == ['Please enter your name']
    end

    it 'should not be valid without a user email address if there is no user' do
        change_request = PublicBodyChangeRequest.new(:public_body_name => 'New Body')
        change_request.valid?.should be_false
        change_request.errors[:user_email].should == ['Please enter your email address']
    end

    it 'should be valid with a user and no name or email address' do
        user = FactoryGirl.build(:user)
        change_request = PublicBodyChangeRequest.new(:user => user,
                                                     :public_body_name => 'New Body')
        change_request.valid?.should be_true
    end

    it 'should validate the format of a user email address entered' do
        change_request = PublicBodyChangeRequest.new(:public_body_name => 'New Body',
                                                     :user_email => '@example.com')
        change_request.valid?.should be_false
        change_request.errors[:user_email].should == ["Your email doesn't look like a valid address"]
    end

    it 'should validate the format of a public body email address entered' do
        change_request = PublicBodyChangeRequest.new(:public_body_name => 'New Body',
                                                    :public_body_email => '@example.com')
        change_request.valid?.should be_false
        change_request.errors[:public_body_email].should == ["The authority email doesn't look like a valid address"]
    end

end

describe PublicBodyChangeRequest, 'get_user_name' do

    it 'should return the user_name field if there is no user association' do
        change_request = PublicBodyChangeRequest.new(:user_name => 'Test User')
        change_request.get_user_name.should == 'Test User'
    end

    it 'should return the name of the associated user if there is one' do
        user = FactoryGirl.build(:user)
        change_request = PublicBodyChangeRequest.new(:user => user)
        change_request.get_user_name.should == user.name
    end

end


describe PublicBodyChangeRequest, 'get_user_email' do

    it 'should return the user_email field if there is no user association' do
        change_request = PublicBodyChangeRequest.new(:user_email => 'user@example.com')
        change_request.get_user_email.should == 'user@example.com'
    end

    it 'should return the email of the associated user if there is one' do
        user = FactoryGirl.build(:user)
        change_request = PublicBodyChangeRequest.new(:user => user)
        change_request.get_user_email.should == user.email
    end

end


describe PublicBodyChangeRequest, 'get_public_body_name' do

    it 'should return the public_body_name field if there is no public body association' do
        change_request = PublicBodyChangeRequest.new(:public_body_name => 'Test Authority')
        change_request.get_public_body_name.should == 'Test Authority'
    end

    it 'should return the name of the associated public body if there is one' do
        public_body = FactoryGirl.build(:public_body)
        change_request = PublicBodyChangeRequest.new(:public_body => public_body)
        change_request.get_public_body_name.should == public_body.name
    end

end

describe PublicBodyChangeRequest, 'when creating a comment for the associated public body' do

    it 'should include requesting user, source_url and notes' do
        change_request = PublicBodyChangeRequest.new(:user_name => 'Test User',
                                                     :user_email => 'test@example.com',
                                                     :source_url => 'http://www.example.com',
                                                     :notes => 'Some notes')
        expected = "Requested by: Test User (test@example.com)\nSource URL: http://www.example.com\nNotes: Some notes"
        change_request.comment_for_public_body.should == expected
    end

end

describe PublicBodyChangeRequest, 'when creating a default subject for a response email' do

    it 'should create an appropriate subject for a request to add a body' do
        change_request = PublicBodyChangeRequest.new(:public_body_name => 'Test Body')
        change_request.default_response_subject.should == 'Your request to add Test Body to Alaveteli'
    end

    it 'should create an appropriate subject for a request to update an email address' do
        public_body = FactoryGirl.build(:public_body)
        change_request = PublicBodyChangeRequest.new(:public_body => public_body)
        change_request.default_response_subject.should == "Your request to update #{public_body.name} on Alaveteli"

    end

end