cirandas.net

ref: master

test/unit/slideshow_block_test.rb


  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
require_relative "../test_helper"
require 'boxes_helper'

class SlideshowBlockTest < ActiveSupport::TestCase
  include BoxesHelper

  def setup
    @profile = fast_create(Profile)
  end
  attr_reader :profile

  should 'refer to a gallery' do
    gallery = fast_create(Gallery, :profile_id => profile.id)
    slideshow_block = create(SlideshowBlock, :gallery_id => gallery.id)
    assert_equal gallery, slideshow_block.gallery
  end

  should 'not crash if referencing unexisting folder' do
    assert_nil build(SlideshowBlock, :gallery_id => -999).gallery
  end

  should 'default interval between transitions is 4 seconds' do
    slideshow = SlideshowBlock.new
    assert_equal 4, slideshow.interval
  end

  should 'list in the same order' do
    gallery = mock
    images = []
    images.expects(:shuffle).never
    gallery.stubs(:images).returns(images)

    block = SlideshowBlock.new
    block.stubs(:gallery).returns(gallery)
    render_block_content(block)
  end

  should 'list in random order' do
    gallery = mock
    images = []
    shuffled = []
    block = build(SlideshowBlock, :shuffle => true)
    block.stubs(:gallery).returns(gallery)
    block.stubs(:block_images).returns(images)
    images.expects(:shuffle).once.returns(shuffled)

    render_block_content(block)
  end

  should 'not shuffle by default' do
    assert_equal false, SlideshowBlock.new.shuffle
  end

  should 'not display navigation by default' do
    assert_equal false, SlideshowBlock.new.navigation
  end

  should 'not show folders' do
    folder = fast_create(Folder, :profile_id => profile.id)
    gallery = fast_create(Folder, :profile_id => profile.id)
    gallery.children << folder
    block = SlideshowBlock.new
    block.stubs(:gallery).returns(gallery)

    assert_not_includes block.block_images, folder
  end

  should 'display "thumb" size by default' do
    assert_equal 'thumb', SlideshowBlock.new.image_size
  end

  should 'set different image size' do
    block = build(SlideshowBlock, :image_size => 'slideshow')
    assert_equal 'slideshow', block.image_size
  end

  should 'decide correct public filename for image' do
    image = mock
    image.expects(:public_filename).with('slideshow').returns('/bli/slideshow.png')
    File.expects(:exists?).with(Rails.root.join('public', 'bli', 'slideshow.png').to_s).returns(true)

    assert_equal '/bli/slideshow.png', build(SlideshowBlock, :image_size => 'slideshow').public_filename_for(image)
  end

  should 'display the default slideshow image if thumbnails were not processed' do
    image = mock
    image.expects(:public_filename).with('slideshow').returns('/images/icons-app/image-loading-slideshow.png')
    File.expects(:exists?).with(Rails.root.join('public', 'images', 'icons-app', 'image-loading-slideshow.png').to_s).returns(true)

    assert_equal '/images/icons-app/image-loading-slideshow.png', build(SlideshowBlock, :image_size => 'slideshow').public_filename_for(image)
  end

  should 'fallback to existing size in case the requested size does not exist' do
    block = build(SlideshowBlock, :image_size => 'slideshow')

    image = mock
    # "slideshow" size does not exist
    image.expects(:public_filename).with('slideshow').returns('/bli/slideshow.png')
    File.expects(:exists?).with(Rails.root.join('public', 'bli', 'slideshow.png').to_s).returns(false) # <<<<<

    # thumb size does exist
    image.expects(:public_filename).with('thumb').returns('/bli/thumb.png')
    File.expects(:exists?).with(Rails.root.join('public', 'bli', 'thumb.png').to_s).returns(true) # <<<<<

    assert_equal '/bli/thumb.png', block.public_filename_for(image)
  end

  should 'choose between owner image galleries' do
    block = SlideshowBlock.new
    owner = mock
    block.stubs(:owner).returns(owner)

    list = []
    owner.expects(:image_galleries).returns(list)
    assert_same list, block.folder_choices
  end

end