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