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