aboutsummaryrefslogtreecommitdiffstats
path: root/spec/views/request/show.html.erb_spec.rb
blob: cc5226847727fb866ac9fafaa775ec96700fb0ac (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
require File.expand_path(File.join('..', '..', '..', 'spec_helper'), __FILE__)

describe 'when viewing an information request' do 
    
    before do 
        @mock_body = mock_model(PublicBody, :name => 'test body',
                                            :url_name => 'test_body',
                                            :is_school? => false)
        @mock_user = mock_model(User, :name => 'test user',
                                      :url_name => 'test_user',
                                      :profile_photo => nil)
        @mock_request = mock_model(InfoRequest, :title => 'test request',
                                                :awaiting_description => false, 
                                                :law_used_with_a => 'A Freedom of Information request',
                                                :law_used_full => 'Freedom of Information',
                                                :public_body => @mock_body,
                                                :user => @mock_user, 
                                                :user_name => @mock_user.name, 
                                                :is_external? => false,
                                                :calculate_status => 'waiting_response', 
                                                :date_response_required_by => Date.today,
                                                :prominence => 'normal')
    end
    
    def request_page
        assign :info_request, @mock_request
        assign :info_request_events, []
        assign :status, @mock_request.calculate_status
        # This is so icky!
        view.stub!(:_render_partial)
        render :template => 'request/show'
    end
    
    describe 'when a status update has been requested' do 
        
        before do 
            assign :update_status, true
        end
        
        it 'should show the first form for describing the state of the request' do
            request_page
            response.should have_selector("div.describe_state_form#describe_state_form_1")
        end    
        
    end
    
    describe 'when it is awaiting a description' do 
    
        before do 
            @mock_request.stub!(:awaiting_description).and_return(true)
        end
        
        it 'should show the first form for describing the state of the request' do
            request_page
            response.should have_selector("div.describe_state_form#describe_state_form_1")
        end
        
        it 'should show the second form for describing the state of the request' do 
            request_page
            response.should have_selector("div.describe_state_form#describe_state_form_2")
        end
    
    end
    
    describe 'when the user is the request owner' do 
    
        before do 
            assign :is_owning_user, true
        end
        
        describe 'when the request status is "waiting clarification"' do 
    
            before do 
                @mock_request.stub!(:calculate_status).and_return('waiting_clarification')
            end
        
            describe 'when there is a last response' do 
            
                before do
                    @mock_response = mock_model(IncomingMessage)
                    @mock_request.stub!(:get_last_response).and_return(@mock_response)
                end

            
                it 'should show a link to follow up the last response with clarification' do 
                    request_page
                    expected_url = "http://test.host/en/request/#{@mock_request.id}/response/#{@mock_response.id}#followup"
                    response.should have_selector("a", :href => expected_url, :content => 'send a follow up message')
                end
            
            end
    
            describe 'when there is no last response' do
        
                before do 
                    @mock_request.stub!(:get_last_response).and_return(nil)
                end

            
                it 'should show a link to follow up the request without reference to a specific response' do 
                    request_page
                    expected_url = "http://test.host/en/request/#{@mock_request.id}/response#followup"
                    response.should have_selector("a", :href => expected_url, :content => 'send a follow up message')
                end
            end
        end
    
    end
end