]> git.openstreetmap.org Git - rails.git/blob - test/helpers/user_helper_test.rb
Add frozen_string_literal comments to ruby files
[rails.git] / test / helpers / user_helper_test.rb
1 # frozen_string_literal: true
2
3 require "test_helper"
4
5 class UserHelperTest < ActionView::TestCase
6   include ERB::Util
7
8   def test_user_image
9     user = create(:user)
10     gravatar_user = create(:user, :image_use_gravatar => true)
11
12     image = user_image(user)
13     assert_match %r{^<img class="user_image border border-secondary-subtle bg-body" .* src="/images/avatar.svg" />$}, image
14
15     image = user_image(user, :class => "foo")
16     assert_match %r{^<img class="foo" .* src="/images/avatar.svg" />$}, image
17     image = user_image(gravatar_user)
18     assert_match %r{^<img class="user_image border border-secondary-subtle bg-body" .* src="http://www.gravatar.com/avatar/.*" />$}, image
19
20     image = user_image(gravatar_user, :class => "foo")
21     assert_match %r{^<img class="foo" .* src="http://www.gravatar.com/avatar/.*" />$}, image
22   end
23
24   def test_user_thumbnail
25     user = create(:user)
26     gravatar_user = create(:user, :image_use_gravatar => true)
27
28     image = user_thumbnail(user)
29     assert_match %r{^<img class="user_thumbnail border border-secondary-subtle bg-body" .* src="/images/avatar.svg" />$}, image
30
31     image = user_thumbnail(user, :class => "foo")
32     assert_match %r{^<img class="foo" .* src="/images/avatar.svg" />$}, image
33
34     image = user_thumbnail(gravatar_user)
35     assert_match %r{^<img class="user_thumbnail border border-secondary-subtle bg-body" .* src="http://www.gravatar.com/avatar/.*" />$}, image
36
37     image = user_thumbnail(gravatar_user, :class => "foo")
38     assert_match %r{^<img class="foo" .* src="http://www.gravatar.com/avatar/.*" />$}, image
39   end
40
41   def test_user_thumbnail_tiny
42     user = create(:user)
43     gravatar_user = create(:user, :image_use_gravatar => true)
44
45     image = user_thumbnail_tiny(user)
46     assert_match %r{^<img class="user_thumbnail_tiny border border-secondary-subtle bg-body" .* src="/images/avatar.svg" />$}, image
47
48     image = user_thumbnail_tiny(user, :class => "foo")
49     assert_match %r{^<img class="foo" .* src="/images/avatar.svg" />$}, image
50
51     image = user_thumbnail_tiny(gravatar_user)
52     assert_match %r{^<img class="user_thumbnail_tiny border border-secondary-subtle bg-body" .* src="http://www.gravatar.com/avatar/.*" />$}, image
53
54     image = user_thumbnail_tiny(gravatar_user, :class => "foo")
55     assert_match %r{^<img class="foo" .* src="http://www.gravatar.com/avatar/.*" />$}, image
56   end
57
58   def test_user_image_url
59     user = create(:user)
60     user.avatar.attach(:io => File.open("test/gpx/fixtures/a.gif"), :filename => "a.gif")
61     gravatar_user = create(:user, :image_use_gravatar => true)
62
63     url = user_image_url(user)
64     assert_match %r{^http://test.host/rails/active_storage/representations/redirect/[^/]+/[^/]+/a.gif$}, url
65
66     url = user_image_url(gravatar_user)
67     assert_match %r{^http://www.gravatar.com/avatar/}, url
68   end
69
70   def test_user_image_sizes_default_image
71     user = create(:user)
72
73     image = user_image(user)
74     assert_match %r{^<img .* width="100" height="100" .* />$}, image
75
76     thumbnail = user_thumbnail(user)
77     assert_match %r{^<img .* width="50" height="50" .* />$}, thumbnail
78   end
79
80   def test_user_image_sizes_avatar
81     user = create(:user)
82     user.avatar.attach(:io => File.open("test/gpx/fixtures/a.gif"), :filename => "a.gif")
83
84     # first time access, no width or height is found
85     image = user_image(user)
86     assert_no_match %r{^<img .* width="100" height="100" .* />$}, image
87
88     thumbnail = user_thumbnail(user)
89     assert_no_match %r{^<img .* width="50" height="50" .* />$}, thumbnail
90
91     # Small hacks to simulate what happens when the images have been fetched at least once before
92     variant = user.avatar.variant(:resize_to_limit => [100, 100])
93     variant.processed.send(:record).image.blob.analyze
94     variant = user.avatar.variant(:resize_to_limit => [50, 50])
95     variant.processed.send(:record).image.blob.analyze
96
97     image = user_image(user)
98     assert_match %r{^<img .* width="100" height="100" .* />$}, image
99
100     thumbnail = user_thumbnail(user)
101     assert_match %r{^<img .* width="50" height="50" .* />$}, thumbnail
102   end
103
104   def test_user_image_sizes_gravatar
105     user = create(:user, :image_use_gravatar => true)
106
107     image = user_image(user)
108     assert_match %r{^<img .* width="100" height="100" .* />$}, image
109
110     thumbnail = user_thumbnail(user)
111     assert_match %r{^<img .* width="50" height="50" .* />$}, thumbnail
112   end
113
114   private
115
116   def request
117     controller.request
118   end
119 end