1 # frozen_string_literal: true
5 class UserHelperTest < ActionView::TestCase
10 gravatar_user = create(:user, :image_use_gravatar => true)
12 image = user_image(user)
13 assert_match %r{^<img class="user_image border border-secondary-subtle bg-body" .* src="/images/avatar.svg" />$}, image
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
20 image = user_image(gravatar_user, :class => "foo")
21 assert_match %r{^<img class="foo" .* src="http://www.gravatar.com/avatar/.*" />$}, image
24 def test_user_thumbnail
26 gravatar_user = create(:user, :image_use_gravatar => true)
28 image = user_thumbnail(user)
29 assert_match %r{^<img class="user_thumbnail border border-secondary-subtle bg-body" .* src="/images/avatar.svg" />$}, image
31 image = user_thumbnail(user, :class => "foo")
32 assert_match %r{^<img class="foo" .* src="/images/avatar.svg" />$}, image
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
37 image = user_thumbnail(gravatar_user, :class => "foo")
38 assert_match %r{^<img class="foo" .* src="http://www.gravatar.com/avatar/.*" />$}, image
41 def test_user_thumbnail_tiny
43 gravatar_user = create(:user, :image_use_gravatar => true)
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
48 image = user_thumbnail_tiny(user, :class => "foo")
49 assert_match %r{^<img class="foo" .* src="/images/avatar.svg" />$}, image
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
54 image = user_thumbnail_tiny(gravatar_user, :class => "foo")
55 assert_match %r{^<img class="foo" .* src="http://www.gravatar.com/avatar/.*" />$}, image
58 def test_user_image_url
60 user.avatar.attach(:io => File.open("test/gpx/fixtures/a.gif"), :filename => "a.gif")
61 gravatar_user = create(:user, :image_use_gravatar => true)
63 url = user_image_url(user)
64 assert_match %r{^http://test.host/rails/active_storage/representations/redirect/[^/]+/[^/]+/a.gif$}, url
66 url = user_image_url(gravatar_user)
67 assert_match %r{^http://www.gravatar.com/avatar/}, url
70 def test_user_image_sizes_default_image
73 image = user_image(user)
74 assert_match %r{^<img .* width="100" height="100" .* />$}, image
76 thumbnail = user_thumbnail(user)
77 assert_match %r{^<img .* width="50" height="50" .* />$}, thumbnail
80 def test_user_image_sizes_avatar
82 user.avatar.attach(:io => File.open("test/gpx/fixtures/a.gif"), :filename => "a.gif")
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
88 thumbnail = user_thumbnail(user)
89 assert_no_match %r{^<img .* width="50" height="50" .* />$}, thumbnail
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
97 image = user_image(user)
98 assert_match %r{^<img .* width="100" height="100" .* />$}, image
100 thumbnail = user_thumbnail(user)
101 assert_match %r{^<img .* width="50" height="50" .* />$}, thumbnail
104 def test_user_image_sizes_gravatar
105 user = create(:user, :image_use_gravatar => true)
107 image = user_image(user)
108 assert_match %r{^<img .* width="100" height="100" .* />$}, image
110 thumbnail = user_thumbnail(user)
111 assert_match %r{^<img .* width="50" height="50" .* />$}, thumbnail