refinerycms-images 2.1.5 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/refinery/admin/images_controller.rb +62 -49
- data/app/helpers/refinery/admin/images_helper.rb +6 -6
- data/app/models/refinery/image.rb +16 -61
- data/app/models/refinery/thumbnail_dimensions.rb +97 -0
- data/app/views/refinery/admin/images/_actions.html.erb +6 -7
- data/app/views/refinery/admin/images/_form.html.erb +30 -12
- data/app/views/refinery/admin/images/_grid_view.html.erb +9 -16
- data/app/views/refinery/admin/images/_list_view.html.erb +4 -4
- data/app/views/refinery/admin/images/_list_view_image.html.erb +24 -15
- data/app/views/refinery/admin/images/index.html.erb +3 -3
- data/app/views/refinery/admin/images/insert.html.erb +1 -1
- data/config/locales/ca.yml +44 -0
- data/config/locales/cs.yml +5 -0
- data/config/locales/de.yml +5 -0
- data/config/locales/en.yml +4 -0
- data/config/locales/fr.yml +4 -0
- data/config/locales/it.yml +4 -14
- data/config/locales/nl.yml +1 -1
- data/config/routes.rb +1 -1
- data/db/migrate/20140814073957_add_title_and_alt_to_refinery_images.rb +8 -0
- data/db/migrate/20150430171341_translate_refinery_images.rb +22 -0
- data/lib/generators/refinery/images/templates/config/initializers/refinery/images.rb.erb +2 -5
- data/lib/refinery/images.rb +4 -1
- data/lib/refinery/images/configuration.rb +4 -6
- data/lib/refinery/images/dragonfly.rb +38 -27
- data/lib/refinery/images/engine.rb +2 -3
- data/license.md +1 -1
- data/refinerycms-images.gemspec +6 -3
- data/spec/factories/image.rb +6 -2
- data/spec/features/refinery/admin/images_spec.rb +49 -136
- data/spec/lib/generators/refinery/images/images_generator_spec.rb +1 -1
- data/spec/lib/refinery/images/dragonfly_spec.rb +34 -0
- data/spec/models/refinery/image_spec.rb +81 -43
- data/spec/models/refinery/thumbnail_dimensions_spec.rb +18 -0
- data/spec/support/shared contexts/admin_images_tab.rb +17 -0
- data/spec/support/shared contexts/many_images.rb +5 -0
- data/spec/support/shared contexts/no_images.rb +3 -0
- data/spec/support/shared contexts/one_image.rb +3 -0
- data/spec/support/shared contexts/visual_editor_add_image.rb +31 -0
- data/spec/support/shared examples/image_deleter.rb +31 -0
- data/spec/support/shared examples/image_editor.rb +3 -0
- data/spec/support/shared examples/image_indexer.rb +118 -0
- data/spec/support/shared examples/image_inserter.rb +53 -0
- data/spec/support/shared examples/image_previewer.rb +41 -0
- data/spec/support/shared examples/image_translator.rb +31 -0
- data/spec/support/shared examples/image_uploader.rb +37 -0
- data/spec/support/spec_helper.rb +19 -0
- data/test.html +126 -0
- metadata +64 -9
@@ -8,17 +8,16 @@ module Refinery
|
|
8
8
|
|
9
9
|
config.autoload_paths += %W( #{config.root}/lib )
|
10
10
|
|
11
|
-
initializer 'attach-refinery-images-with-dragonfly', :before => :
|
11
|
+
initializer 'attach-refinery-images-with-dragonfly', :before => :finisher_hook do |app|
|
12
12
|
::Refinery::Images::Dragonfly.configure!
|
13
13
|
::Refinery::Images::Dragonfly.attach!(app)
|
14
14
|
end
|
15
15
|
|
16
|
-
|
16
|
+
before_inclusion do
|
17
17
|
Refinery::Plugin.register do |plugin|
|
18
18
|
plugin.pathname = root
|
19
19
|
plugin.name = 'refinery_images'
|
20
20
|
plugin.menu_match = %r{refinery/image(_dialog)?s$}
|
21
|
-
plugin.activity = { :class_name => :'refinery/image' }
|
22
21
|
plugin.url = proc { Refinery::Core::Engine.routes.url_helpers.admin_images_path }
|
23
22
|
end
|
24
23
|
end
|
data/license.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# MIT License
|
2
2
|
|
3
|
-
Copyright (c) 2005-
|
3
|
+
Copyright (c) 2005-2015 [Resolve Digital](http://resolve.digital)
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/refinerycms-images.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.version = version
|
10
10
|
s.summary = %q{Images extension for Refinery CMS}
|
11
11
|
s.description = %q{Handles all image upload and processing functionality in Refinery CMS.}
|
12
|
-
s.email = %q{
|
12
|
+
s.email = %q{refinerycms@p.arndt.io}
|
13
13
|
s.homepage = %q{http://refinerycms.com}
|
14
14
|
s.rubyforge_project = %q{refinerycms}
|
15
15
|
s.authors = ['Philip Arndt', 'Uģis Ozols', 'Rob Yurkowski']
|
@@ -19,6 +19,9 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.files = `git ls-files`.split("\n")
|
20
20
|
s.test_files = `git ls-files -- spec/*`.split("\n")
|
21
21
|
|
22
|
-
s.add_dependency 'dragonfly',
|
23
|
-
s.add_dependency '
|
22
|
+
s.add_dependency 'dragonfly', '~> 1.0.0'
|
23
|
+
s.add_dependency 'globalize', ['>= 4.0.0', '< 5.2']
|
24
|
+
s.add_dependency 'refinerycms-core', version
|
25
|
+
|
26
|
+
s.required_ruby_version = Refinery::Version.required_ruby_version
|
24
27
|
end
|
data/spec/factories/image.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
FactoryGirl.define do
|
2
2
|
factory :image, :class => ::Refinery::Image do
|
3
|
-
image Refinery.roots(
|
3
|
+
image Refinery.roots('refinery/images').join("spec/fixtures/beach.jpeg")
|
4
4
|
end
|
5
5
|
|
6
6
|
factory :alternate_image, :class => ::Refinery::Image do
|
7
|
-
image Refinery.roots(
|
7
|
+
image Refinery.roots('refinery/images').join("spec/fixtures/beach-alternate.jpeg")
|
8
|
+
end
|
9
|
+
|
10
|
+
factory :another_image, :class => ::Refinery::Image do
|
11
|
+
image Refinery.roots('refinery/images').join("spec/fixtures/fathead.png")
|
8
12
|
end
|
9
13
|
end
|
@@ -1,161 +1,74 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
module Refinery
|
4
|
-
describe "
|
5
|
-
|
4
|
+
describe "the Admin Images Tab", type: :feature do
|
5
|
+
refinery_login
|
6
|
+
include_context 'admin images tab'
|
6
7
|
|
7
|
-
context
|
8
|
-
|
9
|
-
visit refinery.admin_images_path
|
10
|
-
page.should have_content(::I18n.t('no_images_yet', :scope => 'refinery.admin.images.records'))
|
11
|
-
end
|
12
|
-
end
|
8
|
+
context 'When there are no images' do
|
9
|
+
include_context 'no existing images'
|
13
10
|
|
14
|
-
|
15
|
-
visit refinery.admin_images_path
|
16
|
-
page.should have_content(::I18n.t('create_new_image', :scope => 'refinery.admin.images.actions'))
|
17
|
-
page.should have_selector("a[href*='#{refinery.new_admin_image_path}']")
|
18
|
-
end
|
19
|
-
|
20
|
-
context "new/create" do
|
21
|
-
it "uploads image", :js => true do
|
11
|
+
it 'says there are no images' do
|
22
12
|
visit refinery.admin_images_path
|
23
|
-
|
24
|
-
click_link ::I18n.t('create_new_image', :scope => 'refinery.admin.images.actions')
|
25
|
-
|
26
|
-
page.should have_selector 'iframe#dialog_iframe'
|
27
|
-
|
28
|
-
page.within_frame('dialog_iframe') do
|
29
|
-
attach_file "image_image", Refinery.roots(:'refinery/images').
|
30
|
-
join("spec/fixtures/image-with-dashes.jpg")
|
31
|
-
click_button ::I18n.t('save', :scope => 'refinery.admin.form_actions')
|
32
|
-
end
|
33
|
-
|
34
|
-
page.should have_content(::I18n.t('created', :scope => 'refinery.crudify', :what => "'Image With Dashes'"))
|
35
|
-
Refinery::Image.count.should == 1
|
13
|
+
expect(page).to have_content(::I18n.t('no_images_yet', scope: 'refinery.admin.images.records'))
|
36
14
|
end
|
37
15
|
|
38
|
-
|
39
|
-
visit refinery.admin_images_path
|
40
|
-
|
41
|
-
click_link ::I18n.t('create_new_image', :scope => 'refinery.admin.images.actions')
|
42
|
-
|
43
|
-
page.should have_selector 'iframe#dialog_iframe'
|
44
|
-
|
45
|
-
page.within_frame('dialog_iframe') do
|
46
|
-
attach_file "image_image", Refinery.roots(:'refinery/images').
|
47
|
-
join("spec/fixtures/cape-town-tide-table.pdf")
|
48
|
-
click_button ::I18n.t('save', :scope => 'refinery.admin.form_actions')
|
49
|
-
end
|
50
|
-
|
51
|
-
page.within_frame('dialog_iframe') do
|
52
|
-
page.should have_content(::I18n.t('incorrect_format', :scope => 'activerecord.errors.models.refinery/image'))
|
53
|
-
end
|
54
|
-
Refinery::Image.count.should == 0
|
55
|
-
end
|
16
|
+
it_has_behaviour 'uploads images'
|
56
17
|
end
|
57
18
|
|
58
|
-
context
|
59
|
-
|
60
|
-
visit refinery.insert_admin_images_path(:modal => true, :wymedtior => true)
|
61
|
-
|
62
|
-
attach_file "image_image", Refinery.roots(:'refinery/images').join("spec/fixtures/image-with-dashes.jpg")
|
63
|
-
click_button ::I18n.t('save', :scope => 'refinery.admin.form_actions')
|
64
|
-
|
65
|
-
page.should have_selector('#existing_image_area', :visible => true)
|
66
|
-
Refinery::Image.count.should == 1
|
67
|
-
end
|
68
|
-
|
69
|
-
it "gets error message when uploading non-image", :js => true do
|
70
|
-
visit refinery.insert_admin_images_path(:modal => true, :wymedtior => true)
|
71
|
-
|
72
|
-
attach_file "image_image", Refinery.roots(:'refinery/images').join("spec/fixtures/cape-town-tide-table.pdf")
|
73
|
-
click_button ::I18n.t('save', :scope => 'refinery.admin.form_actions')
|
74
|
-
|
75
|
-
page.should have_selector('#upload_image_area', :visible => true)
|
76
|
-
page.should have_content(::I18n.t('incorrect_format', :scope => 'activerecord.errors.models.refinery/image'))
|
77
|
-
Refinery::Image.count.should == 0
|
78
|
-
end
|
79
|
-
|
80
|
-
it "gets error message when uploading non-image (when an image already exists)", :js => true do
|
81
|
-
FactoryGirl.create(:image)
|
82
|
-
visit refinery.insert_admin_images_path(:modal => true, :wymedtior => true)
|
83
|
-
|
84
|
-
choose 'Upload'
|
85
|
-
attach_file "image_image", Refinery.roots(:'refinery/images').join("spec/fixtures/cape-town-tide-table.pdf")
|
86
|
-
click_button ::I18n.t('save', :scope => 'refinery.admin.form_actions')
|
19
|
+
context 'When there is one image' do
|
20
|
+
include_context 'one image'
|
87
21
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
22
|
+
it_has_behaviour 'indexes images'
|
23
|
+
it_has_behaviour 'shows list and grid views'
|
24
|
+
it_has_behaviour 'shows an image preview'
|
25
|
+
it_has_behaviour 'deletes an image'
|
26
|
+
it_has_behaviour 'edits an image'
|
27
|
+
it_has_behaviour 'uploads images'
|
28
|
+
it_has_behaviour 'translates an image'
|
92
29
|
end
|
93
30
|
|
94
|
-
context
|
95
|
-
|
96
|
-
|
97
|
-
context "edit/update" do
|
98
|
-
it "updates image" do
|
99
|
-
visit refinery.admin_images_path
|
100
|
-
page.should have_selector("a[href='#{refinery.edit_admin_image_path(image)}']")
|
101
|
-
|
102
|
-
click_link ::I18n.t('edit', :scope => 'refinery.admin.images')
|
103
|
-
|
104
|
-
page.should have_content("Use current image or replace it with this one...")
|
105
|
-
page.should have_selector("a[href*='#{refinery.admin_images_path}']")
|
106
|
-
|
107
|
-
attach_file "image_image", Refinery.roots(:'refinery/images').join("spec/fixtures/beach.jpeg")
|
108
|
-
click_button ::I18n.t('save', :scope => 'refinery.admin.form_actions')
|
109
|
-
|
110
|
-
page.should have_content(::I18n.t('updated', :scope => 'refinery.crudify', :what => "'Beach'"))
|
111
|
-
Refinery::Image.count.should == 1
|
112
|
-
|
113
|
-
lambda { click_link "View this image" }.should_not raise_error
|
114
|
-
end
|
115
|
-
|
116
|
-
it "doesn't allow updating if image has different file name" do
|
117
|
-
visit refinery.edit_admin_image_path(image)
|
31
|
+
context 'When there are many images' do
|
32
|
+
include_context 'many images'
|
118
33
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
34
|
+
it_has_behaviour 'indexes images'
|
35
|
+
it_has_behaviour 'shows list and grid views'
|
36
|
+
it_has_behaviour 'paginates the list of images'
|
37
|
+
it_has_behaviour 'shows an image preview'
|
38
|
+
it_has_behaviour 'deletes an image'
|
39
|
+
it_has_behaviour 'uploads images'
|
40
|
+
it_has_behaviour 'edits an image'
|
41
|
+
end
|
42
|
+
end
|
126
43
|
|
127
|
-
|
128
|
-
it "removes image" do
|
129
|
-
visit refinery.admin_images_path
|
130
|
-
page.should have_selector("a[href='#{refinery.admin_image_path(image)}']")
|
44
|
+
describe 'Page Visual Editor - Add Image' do
|
131
45
|
|
132
|
-
|
46
|
+
refinery_login
|
133
47
|
|
134
|
-
|
135
|
-
Refinery::Image.count.should == 0
|
136
|
-
end
|
137
|
-
end
|
48
|
+
include_context 'Visual Editor - add image'
|
138
49
|
|
139
|
-
|
140
|
-
|
141
|
-
|
50
|
+
context 'When there are no images' do
|
51
|
+
include_context 'no existing images'
|
52
|
+
it_has_behaviour 'uploads images'
|
53
|
+
end
|
142
54
|
|
143
|
-
|
144
|
-
|
145
|
-
end
|
55
|
+
context 'When there is one image' do
|
56
|
+
include_context 'one image'
|
146
57
|
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
58
|
+
it_has_behaviour 'indexes images'
|
59
|
+
it_has_behaviour 'paginates the list of images'
|
60
|
+
it_has_behaviour 'uploads images'
|
61
|
+
it_has_behaviour 'inserts images'
|
62
|
+
end
|
152
63
|
|
153
|
-
|
64
|
+
context 'When there are many images' do
|
65
|
+
include_context 'many images'
|
154
66
|
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
67
|
+
it_has_behaviour 'indexes images'
|
68
|
+
it_has_behaviour 'paginates the list of images'
|
69
|
+
it_has_behaviour 'uploads images'
|
70
|
+
it_has_behaviour 'inserts images'
|
159
71
|
end
|
72
|
+
|
160
73
|
end
|
161
74
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Refinery
|
4
|
+
|
5
|
+
describe Dragonfly do
|
6
|
+
def configure_dragonfly(name, verify)
|
7
|
+
app = ::Dragonfly.app(name)
|
8
|
+
|
9
|
+
app.configure do
|
10
|
+
verify_urls verify
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'when verify_urls is true' do
|
15
|
+
before do
|
16
|
+
configure_dragonfly(:app1, true)
|
17
|
+
end
|
18
|
+
it 'it is reflected in the dragonfly configuration' do
|
19
|
+
expect(Dragonfly.app(:app1).server.verify_urls).to be(true)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when verify_urls is false' do
|
24
|
+
before do
|
25
|
+
configure_dragonfly(:app2, false)
|
26
|
+
end
|
27
|
+
it 'it is reflected in the dragonfly configuration' do
|
28
|
+
expect(Dragonfly.app(:app2).server.verify_urls).to be(false)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
@@ -1,38 +1,42 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Refinery
|
4
|
-
describe Image do
|
4
|
+
describe Image, :type => :model do
|
5
5
|
|
6
|
-
let(:image)
|
6
|
+
let(:image) { FactoryGirl.build(:image) }
|
7
7
|
let(:created_image) { FactoryGirl.create(:image) }
|
8
|
+
let(:titled_image) { FactoryGirl.create(:image, image_title: 'Image Title')}
|
9
|
+
let(:image_with_alt_text) { FactoryGirl.create(:image, image_alt: 'Alt Text')}
|
10
|
+
let(:image_with_sha) {FactoryGirl.create(:image)}
|
11
|
+
let(:image_without_sha) {FactoryGirl.create(:image)}
|
8
12
|
|
9
13
|
describe "validations" do
|
10
14
|
describe "valid #image" do
|
11
15
|
before do
|
12
|
-
@file = Refinery.roots(
|
13
|
-
Images.
|
16
|
+
@file = Refinery.roots('refinery/images').join("spec/fixtures/beach.jpeg")
|
17
|
+
allow(Images).to receive(:max_image_size).and_return(File.read(@file).size + 10.megabytes)
|
14
18
|
end
|
15
19
|
|
16
20
|
it "should be valid when size does not exceed .max_image_size" do
|
17
|
-
Image.new(:image => @file).
|
21
|
+
expect(Image.new(:image => @file)).to be_valid
|
18
22
|
end
|
19
23
|
end
|
20
24
|
|
21
25
|
describe "too large #image" do
|
22
26
|
before do
|
23
|
-
@file = Refinery.roots(
|
24
|
-
Images.
|
27
|
+
@file = Refinery.roots('refinery/images').join("spec/fixtures/beach.jpeg")
|
28
|
+
allow(Images).to receive(:max_image_size).and_return(0)
|
25
29
|
@image = Image.new(:image => @file)
|
26
30
|
end
|
27
31
|
|
28
32
|
it "should not be valid when size exceeds .max_image_size" do
|
29
|
-
@image.
|
33
|
+
expect(@image).not_to be_valid
|
30
34
|
end
|
31
35
|
|
32
36
|
it "should contain an error message" do
|
33
37
|
@image.valid?
|
34
|
-
@image.errors.
|
35
|
-
@image.errors[:image].
|
38
|
+
expect(@image.errors).not_to be_empty
|
39
|
+
expect(@image.errors[:image]).to eq(["Image should be smaller than #{Images.max_image_size} bytes in size"])
|
36
40
|
end
|
37
41
|
end
|
38
42
|
|
@@ -43,51 +47,85 @@ module Refinery
|
|
43
47
|
|
44
48
|
it "has an error message" do
|
45
49
|
@image.valid?
|
46
|
-
@image.errors.
|
47
|
-
@image.errors[:image].
|
50
|
+
expect(@image.errors).not_to be_empty
|
51
|
+
expect(@image.errors[:image]).to eq(["You must specify an image for upload"])
|
48
52
|
end
|
49
53
|
end
|
50
54
|
|
51
55
|
context "when image exists" do
|
52
56
|
it "doesn't allow to replace it with image which has different file name" do
|
53
|
-
created_image.image = Refinery.roots(
|
54
|
-
created_image.
|
55
|
-
created_image.
|
57
|
+
created_image.image = Refinery.roots('refinery/images').join("spec/fixtures/beach-alternate.jpeg")
|
58
|
+
expect(created_image).not_to be_valid
|
59
|
+
expect(created_image.errors.messages[:image_name].size).to be >= 1
|
56
60
|
end
|
57
61
|
|
58
62
|
it "allows to replace it with image which has the same file name" do
|
59
|
-
created_image.image = Refinery.roots(
|
60
|
-
created_image.
|
63
|
+
created_image.image = Refinery.roots('refinery/images').join("spec/fixtures/beach.jpeg")
|
64
|
+
expect(created_image).to be_valid
|
61
65
|
end
|
62
66
|
end
|
63
67
|
end
|
64
68
|
|
65
|
-
|
69
|
+
describe "image url" do
|
66
70
|
it "responds to .thumbnail" do
|
67
|
-
image.
|
71
|
+
expect(image).to respond_to(:thumbnail)
|
68
72
|
end
|
69
73
|
|
70
74
|
it "contains its filename at the end" do
|
71
|
-
created_image.url.split('/').last.
|
75
|
+
expect(created_image.url.split('/').last).to match(/\A#{created_image.image_name}/)
|
72
76
|
end
|
73
77
|
|
74
78
|
it "becomes different when supplying geometry" do
|
75
|
-
created_image.url.
|
79
|
+
expect(created_image.url).not_to eq(created_image.thumbnail(:geometry => '200x200').url)
|
76
80
|
end
|
77
81
|
|
78
82
|
it "has different urls for each geometry string" do
|
79
|
-
created_image.thumbnail(:geometry => '200x200').url.
|
83
|
+
expect(created_image.thumbnail(:geometry => '200x200').url).not_to eq(created_image.thumbnail(:geometry => '200x201').url)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "doesn't call thumb when geometry is nil" do
|
87
|
+
expect(created_image.image).not_to receive(:thumb)
|
88
|
+
created_image.thumbnail(geometry: nil)
|
80
89
|
end
|
81
90
|
|
82
91
|
it "uses right geometry when given a thumbnail name" do
|
83
92
|
name, geometry = Refinery::Images.user_image_sizes.first
|
84
|
-
created_image.thumbnail(:geometry => name).url.
|
93
|
+
expect(created_image.thumbnail(:geometry => name).url).to eq(created_image.thumbnail(:geometry => geometry).url)
|
94
|
+
end
|
95
|
+
|
96
|
+
it "can strip a thumbnail" do
|
97
|
+
expect(created_image.thumbnail(:strip => true).url.blank?).to eq(false)
|
85
98
|
end
|
99
|
+
|
100
|
+
it "can resize and strip a thumbnail" do
|
101
|
+
expect(created_image.thumbnail(:geometry => '200x200', :strip => true).url.blank?).to eq(false)
|
102
|
+
end
|
103
|
+
|
86
104
|
end
|
87
105
|
|
88
106
|
describe "#title" do
|
89
|
-
|
90
|
-
|
107
|
+
context 'when a specific title has not been given' do
|
108
|
+
it "returns a titleized version of the filename" do
|
109
|
+
expect(image.title).to eq("Beach")
|
110
|
+
end
|
111
|
+
end
|
112
|
+
context 'when a specific title has been given' do
|
113
|
+
it 'returns that title' do
|
114
|
+
expect(titled_image.title).to eq('Image Title')
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe "#alt" do
|
120
|
+
context 'when no alt attribute is given' do
|
121
|
+
it "returns the title" do
|
122
|
+
expect(image.alt).to eq(image.title)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
context 'when an alt attribute is given' do
|
126
|
+
it 'returns that alt attribute' do
|
127
|
+
expect(image_with_alt_text.alt).to eq('Alt Text')
|
128
|
+
end
|
91
129
|
end
|
92
130
|
end
|
93
131
|
|
@@ -95,70 +133,70 @@ module Refinery
|
|
95
133
|
context "dialog is true" do
|
96
134
|
context "has_size_options is true" do
|
97
135
|
it "returns image count specified by Images.pages_per_dialog_that_have_size_options option" do
|
98
|
-
::Refinery::Image.per_page(true, true).
|
136
|
+
expect(::Refinery::Image.per_page(true, true)).to eq(Images.pages_per_dialog_that_have_size_options)
|
99
137
|
end
|
100
138
|
end
|
101
139
|
|
102
140
|
context "has_size_options is false" do
|
103
141
|
it "returns image count specified by Images.pages_per_dialog option" do
|
104
|
-
::Refinery::Image.per_page(true).
|
142
|
+
expect(::Refinery::Image.per_page(true)).to eq(Images.pages_per_dialog)
|
105
143
|
end
|
106
144
|
end
|
107
145
|
end
|
108
146
|
|
109
147
|
context "dialog is false" do
|
110
148
|
it "returns image count specified by Images.pages_per_admin_index option" do
|
111
|
-
::Refinery::Image.per_page.
|
149
|
+
expect(::Refinery::Image.per_page).to eq(Images.pages_per_admin_index)
|
112
150
|
end
|
113
151
|
end
|
114
152
|
end
|
115
153
|
|
116
154
|
describe ".user_image_sizes" do
|
117
155
|
it "returns a hash" do
|
118
|
-
Refinery::Images.user_image_sizes.
|
156
|
+
expect(Refinery::Images.user_image_sizes).to be_a_kind_of(Hash)
|
119
157
|
end
|
120
158
|
end
|
121
159
|
|
122
160
|
# The sample image has dimensions 500x375
|
123
161
|
describe '#thumbnail_dimensions returns correctly with' do
|
124
162
|
it 'nil' do
|
125
|
-
created_image.thumbnail_dimensions(nil).
|
163
|
+
expect(created_image.thumbnail_dimensions(nil)).to eq({ :width => 500, :height => 375 })
|
126
164
|
end
|
127
165
|
|
128
166
|
it '200x200#ne' do
|
129
|
-
created_image.thumbnail_dimensions('200x200#ne').
|
167
|
+
expect(created_image.thumbnail_dimensions('200x200#ne')).to eq({ :width => 200, :height => 200 })
|
130
168
|
end
|
131
169
|
|
132
170
|
it '100x150#c' do
|
133
|
-
created_image.thumbnail_dimensions('100x150#c').
|
171
|
+
expect(created_image.thumbnail_dimensions('100x150#c')).to eq({ :width => 100, :height => 150 })
|
134
172
|
end
|
135
173
|
|
136
174
|
it '250x250>' do
|
137
|
-
created_image.thumbnail_dimensions('250x250>').
|
175
|
+
expect(created_image.thumbnail_dimensions('250x250>')).to eq({ :width => 250, :height => 188 })
|
138
176
|
end
|
139
177
|
|
140
178
|
it '600x375>' do
|
141
|
-
created_image.thumbnail_dimensions('600x375>').
|
179
|
+
expect(created_image.thumbnail_dimensions('600x375>')).to eq({ :width => 500, :height => 375 })
|
142
180
|
end
|
143
181
|
|
144
182
|
it '100x475>' do
|
145
|
-
created_image.thumbnail_dimensions('100x475>').
|
183
|
+
expect(created_image.thumbnail_dimensions('100x475>')).to eq({ :width => 100, :height => 75 })
|
146
184
|
end
|
147
185
|
|
148
186
|
it '100x150' do
|
149
|
-
created_image.thumbnail_dimensions('100x150').
|
187
|
+
expect(created_image.thumbnail_dimensions('100x150')).to eq({ :width => 100, :height => 75 })
|
150
188
|
end
|
151
189
|
|
152
190
|
it '200x150' do
|
153
|
-
created_image.thumbnail_dimensions('200x150').
|
191
|
+
expect(created_image.thumbnail_dimensions('200x150')).to eq({ :width => 200, :height => 150 })
|
154
192
|
end
|
155
193
|
|
156
194
|
it '300x150' do
|
157
|
-
created_image.thumbnail_dimensions('300x150').
|
195
|
+
expect(created_image.thumbnail_dimensions('300x150')).to eq({ :width => 200, :height => 150 })
|
158
196
|
end
|
159
197
|
|
160
198
|
it '5x5' do
|
161
|
-
created_image.thumbnail_dimensions('5x5').
|
199
|
+
expect(created_image.thumbnail_dimensions('5x5')).to eq({ :width => 5, :height => 4 })
|
162
200
|
end
|
163
201
|
end
|
164
202
|
|
@@ -166,21 +204,21 @@ module Refinery
|
|
166
204
|
let(:created_alternate_image) { FactoryGirl.create(:alternate_image) }
|
167
205
|
|
168
206
|
it 'nil' do
|
169
|
-
created_alternate_image.thumbnail_dimensions(nil).
|
207
|
+
expect(created_alternate_image.thumbnail_dimensions(nil)).to eq({ :width => 376, :height => 184 })
|
170
208
|
end
|
171
209
|
|
172
210
|
it '225x255>' do
|
173
|
-
created_alternate_image.thumbnail_dimensions('225x255>').
|
211
|
+
expect(created_alternate_image.thumbnail_dimensions('225x255>')).to eq({ :width => 225, :height => 110 })
|
174
212
|
end
|
175
213
|
end
|
176
214
|
|
177
215
|
describe '#thumbnail_dimensions returns correctly with user-defined geometries' do
|
178
216
|
it ':medium' do
|
179
|
-
created_image.thumbnail_dimensions(:medium).
|
217
|
+
expect(created_image.thumbnail_dimensions(:medium)).to eq({ :width => 225, :height => 169 })
|
180
218
|
end
|
181
219
|
|
182
220
|
it ':large' do
|
183
|
-
created_image.thumbnail_dimensions(:large).
|
221
|
+
expect(created_image.thumbnail_dimensions(:large)).to eq({ :width => 450, :height => 338 })
|
184
222
|
end
|
185
223
|
end
|
186
224
|
|