]> git.openstreetmap.org Git - rails.git/blob - test/controllers/profiles/images_controller_test.rb
Merge remote-tracking branch 'upstream/pull/6168'
[rails.git] / test / controllers / profiles / images_controller_test.rb
1 require "test_helper"
2
3 module Profiles
4   class ImagesControllerTest < ActionDispatch::IntegrationTest
5     ##
6     # test all routes which lead to this controller
7     def test_routes
8       assert_routing(
9         { :path => "/profile/image", :method => :get },
10         { :controller => "profiles/images", :action => "show" }
11       )
12       assert_routing(
13         { :path => "/profile/image", :method => :put },
14         { :controller => "profiles/images", :action => "update" }
15       )
16     end
17
18     def test_show
19       user = create(:user)
20       session_for(user)
21
22       get profile_image_path
23
24       assert_response :success
25       assert_template :show
26     end
27
28     def test_show_unauthorized
29       get profile_image_path
30
31       assert_redirected_to login_path(:referer => profile_image_path)
32     end
33
34     def test_update_replace
35       image = Rack::Test::UploadedFile.new("test/gpx/fixtures/a.gif", "image/gif")
36       user = create(:user)
37       session_for(user)
38
39       put profile_image_path, :params => { :avatar_action => "new", :user => { :avatar => image, :description => user.description } }
40
41       assert_redirected_to user_path(user)
42       follow_redirect!
43       assert_response :success
44       assert_template :show
45       assert_dom ".alert-success", :text => "Profile image updated."
46
47       get profile_image_path
48
49       assert_dom "form > div > div.col-sm-10 > div.form-check > input[name=avatar_action][checked][value=?]", "keep"
50     end
51
52     def test_update_gravatar
53       user = create(:user)
54       session_for(user)
55
56       put profile_image_path, :params => { :avatar_action => "gravatar", :user => { :description => user.description } }
57
58       assert_redirected_to user_path(user)
59       follow_redirect!
60       assert_response :success
61       assert_template :show
62       assert_dom ".alert-success", :text => "Profile image updated."
63
64       get profile_image_path
65
66       assert_dom "form > div > div.col-sm-10 > div > div.form-check > input[name=avatar_action][checked][value=?]", "gravatar"
67     end
68
69     def test_update_remove
70       user = create(:user)
71       session_for(user)
72
73       put profile_image_path, :params => { :avatar_action => "delete", :user => { :description => user.description } }
74
75       assert_redirected_to user_path(user)
76       follow_redirect!
77       assert_response :success
78       assert_template :show
79       assert_dom ".alert-success", :text => "Profile image updated."
80
81       get profile_image_path
82
83       assert_dom "form > div > div.col-sm-10 > div > input[name=avatar_action][checked]", false
84       assert_dom "form > div > div.col-sm-10 > div > div.form-check > input[name=avatar_action][checked]", false
85     end
86   end
87 end