refinerycms-page-images 2.0.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +20 -9
  3. data/Gemfile +22 -51
  4. data/Rakefile +2 -0
  5. data/app/assets/javascripts/refinery/page-image-picker.js.erb +173 -150
  6. data/app/assets/stylesheets/refinery/page-image-picker.css.scss +6 -0
  7. data/app/views/refinery/admin/pages/tabs/_images.html.erb +2 -1
  8. data/app/views/refinery/admin/pages/tabs/_images_field.html.erb +15 -3
  9. data/config/locales/bg.yml +1 -0
  10. data/config/locales/cs.yml +1 -0
  11. data/config/locales/de.yml +3 -1
  12. data/config/locales/en.yml +2 -0
  13. data/config/locales/es.yml +19 -0
  14. data/config/locales/fr.yml +1 -0
  15. data/config/locales/ja.yml +18 -0
  16. data/config/locales/nl.yml +1 -0
  17. data/config/locales/pt-BR.yml +1 -0
  18. data/config/locales/ru.yml +1 -0
  19. data/config/locales/sk.yml +1 -0
  20. data/lib/generators/refinery/templates/config/initializers/refinery/page_images.rb.erb +2 -0
  21. data/lib/refinery/page_images.rb +15 -2
  22. data/lib/refinery/page_images/configuration.rb +25 -1
  23. data/lib/refinery/page_images/engine.rb +17 -19
  24. data/lib/refinery/page_images/extension.rb +2 -2
  25. data/readme.md +48 -2
  26. data/refinerycms-page-images.gemspec +7 -8
  27. data/spec/factories/page-images.rb +2 -2
  28. data/spec/features/attach_page_images_spec.rb +58 -0
  29. data/spec/lib/refinery/initializer_spec.rb +42 -0
  30. data/spec/models/refinery/blog_spec.rb +3 -3
  31. data/spec/models/refinery/page_spec.rb +26 -16
  32. data/spec/spec_helper.rb +21 -46
  33. metadata +43 -82
  34. data/spec/requests/attach_page_images_spec.rb +0 -29
  35. data/spec/support/database_cleaner.rb +0 -17
  36. data/spec/support/devise.rb +0 -8
  37. data/spec/support/refinery.rb +0 -6
@@ -0,0 +1,58 @@
1
+ require "spec_helper"
2
+
3
+ describe "attach page images" do
4
+ refinery_login_with :refinery_user
5
+
6
+ # No-op block : use default configuration by default
7
+ let(:configure) {}
8
+ let(:create_page) { FactoryGirl.create(:page) }
9
+ let(:navigate_to_edit) { click_link "Edit this page" }
10
+ let(:page_images_tab_id) { "#custom_#{::I18n.t(:'refinery.plugins.refinery_page_images.tab_name')}_tab" }
11
+
12
+ let(:setup_and_visit) do
13
+ configure
14
+ create_page
15
+ visit refinery.admin_pages_path
16
+ navigate_to_edit
17
+ end
18
+
19
+ it "shows images tab" do
20
+ setup_and_visit
21
+ within page_images_tab_id do
22
+ page.should have_content("Images")
23
+ end
24
+ end
25
+
26
+ # This spec actually is broken in a way because Add Image link would
27
+ # be visible to capybara even if we don't click on Images tab.
28
+ it "shows add image link" do
29
+ setup_and_visit
30
+ within page_images_tab_id do
31
+ click_link "Images"
32
+ end
33
+
34
+ page.should have_content("Add Image")
35
+ end
36
+
37
+ context "with caption and WYSIWYG disabled" do
38
+ let(:configure) do
39
+ Refinery::PageImages.config.wysiwyg = false
40
+ Refinery::PageImages.config.captions = true
41
+ end
42
+
43
+ let(:create_page) { FactoryGirl.create(:page_with_image) }
44
+ let(:navigate_to_edit) { page.find('a[tooltip="Edit this page"]').click }
45
+
46
+ it "shows a plain textarea when editing caption", js: true do
47
+ setup_and_visit
48
+ page.find("#{page_images_tab_id} a").click
49
+ image_li_tag = page.find("#page_images li:first-child")
50
+
51
+ image_li_tag.hover
52
+ within(image_li_tag) { page.find('img.caption').click }
53
+
54
+ page.find('.ui-dialog textarea').should be_visible
55
+ end
56
+ end
57
+
58
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe Refinery::PageImages::Engine do
4
+ before(:all) do
5
+ class Refinery::PageImages::EnableForMock
6
+ class Model; end
7
+ class Tab; end
8
+ end
9
+ end
10
+
11
+ after(:all) do
12
+ Refinery::PageImages.instance_eval { remove_const(:EnableForMock) }
13
+ end
14
+
15
+ before(:each) do
16
+ Refinery::PageImages.config.stub(:enable_for).and_return(enable_for_config)
17
+ end
18
+
19
+ def enable_for_config
20
+ [{ :model => 'Refinery::PageImages::EnableForMock::Model',
21
+ :tab => 'Refinery::PageImages::EnableForMock::Tab' }]
22
+ end
23
+
24
+ describe "attach initializer" do
25
+ it "calls attach on all configured model" do
26
+ Refinery::PageImages.config.stub(:enable_for).and_return(enable_for_config)
27
+
28
+ Refinery::PageImages::EnableForMock::Model.should_receive(:has_many_page_images).once
29
+ Refinery::Page.should_not_receive(:has_many_page_images)
30
+ ActionDispatch::Reloader.prepare!
31
+ end
32
+ end
33
+
34
+ describe "attach_initialize_tabs!" do
35
+ it "registers tabs for all configured engine" do
36
+ Refinery::PageImages::EnableForMock::Tab.should_receive(:register).once
37
+ Refinery::Pages::Tab.should_not_receive(:register)
38
+ Refinery::PageImages::Engine.initialize_tabs!
39
+ end
40
+ end
41
+
42
+ end
@@ -3,13 +3,13 @@ require 'spec_helper'
3
3
  module Refinery
4
4
  describe BlogPost do
5
5
  it "should not have images" do
6
- blog = Factory(:blog_post)
6
+ blog = FactoryGirl.create(:blog_post)
7
7
  blog.images.count.should == 0
8
8
  end
9
9
 
10
10
  it "should have images" do
11
- blog = Factory(:blog_post_with_image)
11
+ blog = FactoryGirl.create(:blog_post_with_image)
12
12
  blog.images.count.should == 1
13
13
  end
14
- end
14
+ end
15
15
  end if defined?(Refinery::Blog::Post)
@@ -3,17 +3,17 @@ require 'spec_helper'
3
3
  module Refinery
4
4
  describe Page do
5
5
  it "can have images added" do
6
- page = Factory(:page)
6
+ page = FactoryGirl.create(:page)
7
7
  page.images.count.should eq(0)
8
8
 
9
- page.images << Factory(:image)
9
+ page.images << FactoryGirl.create(:image)
10
10
  page.images.count.should eq(1)
11
11
  end
12
12
 
13
13
  describe "#images_attributes=" do
14
14
  it "adds images" do
15
- page = Factory(:page)
16
- image = Factory(:image)
15
+ page = FactoryGirl.create(:page)
16
+ image = FactoryGirl.create(:image)
17
17
 
18
18
  page.images.count.should == 0
19
19
  page.update_attributes({:images_attributes => {"0" => {"id" => image.id}}})
@@ -22,14 +22,17 @@ module Refinery
22
22
  end
23
23
 
24
24
  it "deletes specific images" do
25
- page = Factory(:page)
26
- images = [Factory(:image), Factory(:image)]
25
+ page = FactoryGirl.create(:page)
26
+ images = [FactoryGirl.create(:image), FactoryGirl.create(:image)]
27
27
  page.images = images
28
28
 
29
+ page_image_to_keep = page.image_pages.find do |image_page|
30
+ image_page.image_id == images.first.id
31
+ end
29
32
  page.update_attributes(:images_attributes => {
30
33
  "0" => {
31
- "id" => images.first.id.to_s,
32
- "image_page_id" => page.image_pages.first.id,
34
+ "id" => page_image_to_keep.image_id.to_s,
35
+ "image_page_id" => page_image_to_keep.id
33
36
  },
34
37
  })
35
38
 
@@ -37,8 +40,8 @@ module Refinery
37
40
  end
38
41
 
39
42
  it "deletes all images" do
40
- page = Factory(:page)
41
- images = [Factory(:image), Factory(:image)]
43
+ page = FactoryGirl.create(:page)
44
+ images = [FactoryGirl.create(:image), FactoryGirl.create(:image)]
42
45
  page.images = images
43
46
 
44
47
  page.update_attributes(:images_attributes => {"0" => {"id"=>""}})
@@ -47,18 +50,25 @@ module Refinery
47
50
  end
48
51
 
49
52
  it "reorders images" do
50
- page = Factory(:page)
51
- images = [Factory(:image), Factory(:image)]
53
+ page = FactoryGirl.create(:page)
54
+ images = [FactoryGirl.create(:image), FactoryGirl.create(:image)]
52
55
  page.images = images
53
56
 
57
+ first_page_image = page.image_pages.find do |image_page|
58
+ image_page.image_id == images.first.id
59
+ end
60
+ second_page_image = page.image_pages.find do |image_page|
61
+ image_page.image_id == images.second.id
62
+ end
63
+
54
64
  page.update_attributes(:images_attributes => {
55
65
  "0" => {
56
- "id" => images.second.id,
57
- "image_page_id" => page.image_pages.second.id,
66
+ "id" => second_page_image.image_id,
67
+ "image_page_id" => second_page_image.id,
58
68
  },
59
69
  "1" => {
60
- "id" => images.first.id,
61
- "image_page_id" => page.image_pages.first.id,
70
+ "id" => first_page_image.image_id,
71
+ "image_page_id" => first_page_image.id,
62
72
  },
63
73
  })
64
74
 
data/spec/spec_helper.rb CHANGED
@@ -1,56 +1,31 @@
1
1
  require 'rubygems'
2
2
 
3
- def setup_environment
4
- # Configure Rails Environment
5
- ENV["RAILS_ENV"] ||= 'test'
3
+ # Configure Rails Environment
4
+ ENV["RAILS_ENV"] ||= 'test'
6
5
 
7
- require File.expand_path("../dummy/config/environment", __FILE__)
6
+ require File.expand_path("../dummy/config/environment", __FILE__)
8
7
 
9
- require 'rspec/rails'
10
- require 'capybara/rspec'
11
- require 'factory_girl_rails'
8
+ require 'rspec/rails'
9
+ require 'capybara/rspec'
10
+ require 'factory_girl_rails'
12
11
 
13
- Rails.backtrace_cleaner.remove_silencers!
12
+ Rails.backtrace_cleaner.remove_silencers!
14
13
 
15
- RSpec.configure do |config|
16
- config.mock_with :rspec
17
- config.treat_symbols_as_metadata_keys_with_true_values = true
18
- config.filter_run :focus => true
19
- config.run_all_when_everything_filtered = true
20
- end
21
-
22
- # set javascript driver for capybara
23
- Capybara.javascript_driver = :selenium
24
- end
25
-
26
- def each_run
27
- ActiveSupport::Dependencies.clear
28
-
29
- FactoryGirl.reload
30
-
31
- # Requires supporting files with custom matchers and macros, etc,
32
- # in ./support/ and its subdirectories including factories.
33
- ([Rails.root.to_s] | ::Refinery::Plugins.registered.pathnames).map{|p|
34
- Dir[File.join(p, 'spec', 'support', '**', '*.rb').to_s]
35
- }.flatten.sort.each do |support_file|
36
- require support_file
37
- end
14
+ RSpec.configure do |config|
15
+ config.mock_with :rspec
16
+ config.treat_symbols_as_metadata_keys_with_true_values = true
17
+ config.filter_run :focus => true
18
+ config.run_all_when_everything_filtered = true
38
19
  end
39
20
 
40
- # If spork is available in the Gemfile it'll be used but we don't force it.
41
- unless (begin; require 'spork'; rescue LoadError; nil end).nil?
42
- Spork.prefork do
43
- # Loading more in this block will cause your tests to run faster. However,
44
- # if you change any configuration or code from libraries loaded here, you'll
45
- # need to restart spork for it take effect.
46
- setup_environment
47
- end
21
+ # set javascript driver for capybara
22
+ require 'capybara/poltergeist'
23
+ Capybara.javascript_driver = :poltergeist
48
24
 
49
- Spork.each_run do
50
- # This code will be run each time you run your specs.
51
- each_run
52
- end
53
- else
54
- setup_environment
55
- each_run
25
+ # Requires supporting files with custom matchers and macros, etc,
26
+ # in ./support/ and its subdirectories including factories.
27
+ ([Rails.root.to_s] | ::Refinery::Plugins.registered.pathnames).map{|p|
28
+ Dir[File.join(p, 'spec', 'support', '**', '*.rb').to_s]
29
+ }.flatten.sort.each do |support_file|
30
+ require support_file
56
31
  end
metadata CHANGED
@@ -1,64 +1,36 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: refinerycms-page-images
3
- version: !ruby/object:Gem::Version
4
- hash: 13
5
- prerelease:
6
- segments:
7
- - 2
8
- - 0
9
- - 1
10
- version: 2.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.1.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Philip Arndt
14
8
  - David Jones
15
9
  autorequire:
16
10
  bindir: bin
17
11
  cert_chain: []
18
-
19
- date: 2012-03-19 00:00:00 Z
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2013-09-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: refinerycms-pages
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
27
18
  - - ~>
28
- - !ruby/object:Gem::Version
29
- hash: 15
30
- segments:
31
- - 2
32
- - 0
33
- - 0
34
- version: 2.0.0
19
+ - !ruby/object:Gem::Version
20
+ version: 2.1.0
35
21
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: refinerycms-testing
39
22
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
43
25
  - - ~>
44
- - !ruby/object:Gem::Version
45
- hash: 15
46
- segments:
47
- - 2
48
- - 0
49
- - 0
50
- version: 2.0.0
51
- type: :development
52
- version_requirements: *id002
53
- description: Page Images Engine for Refinery CMS
54
- email: dave@resolvedigital.com
26
+ - !ruby/object:Gem::Version
27
+ version: 2.1.0
28
+ description: Attach images to pages ins Refinery CMS
29
+ email: info@refinerycms.com
55
30
  executables: []
56
-
57
31
  extensions: []
58
-
59
32
  extra_rdoc_files: []
60
-
61
- files:
33
+ files:
62
34
  - .gitignore
63
35
  - .travis.yml
64
36
  - Gemfile
@@ -73,7 +45,9 @@ files:
73
45
  - config/locales/cs.yml
74
46
  - config/locales/de.yml
75
47
  - config/locales/en.yml
48
+ - config/locales/es.yml
76
49
  - config/locales/fr.yml
50
+ - config/locales/ja.yml
77
51
  - config/locales/nl.yml
78
52
  - config/locales/pt-BR.yml
79
53
  - config/locales/ru.yml
@@ -93,54 +67,41 @@ files:
93
67
  - refinerycms-page-images.gemspec
94
68
  - script/rails
95
69
  - spec/factories/page-images.rb
70
+ - spec/features/attach_page_images_spec.rb
71
+ - spec/lib/refinery/initializer_spec.rb
96
72
  - spec/models/refinery/blog_spec.rb
97
73
  - spec/models/refinery/page_spec.rb
98
- - spec/requests/attach_page_images_spec.rb
99
74
  - spec/spec_helper.rb
100
- - spec/support/database_cleaner.rb
101
- - spec/support/devise.rb
102
- - spec/support/refinery.rb
103
75
  - tasks/rspec.rake
104
- homepage: http://github.com/resolve/refinerycms-page-images
105
- licenses: []
106
-
76
+ homepage: http://github.com/refinery/refinerycms-page-images
77
+ licenses:
78
+ - MIT
79
+ metadata: {}
107
80
  post_install_message:
108
81
  rdoc_options: []
109
-
110
- require_paths:
82
+ require_paths:
111
83
  - lib
112
- required_ruby_version: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- hash: 3
118
- segments:
119
- - 0
120
- version: "0"
121
- required_rubygems_version: !ruby/object:Gem::Requirement
122
- none: false
123
- requirements:
124
- - - ">="
125
- - !ruby/object:Gem::Version
126
- hash: 3
127
- segments:
128
- - 0
129
- version: "0"
84
+ required_ruby_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
130
94
  requirements: []
131
-
132
95
  rubyforge_project:
133
- rubygems_version: 1.8.17
96
+ rubygems_version: 2.0.6
134
97
  signing_key:
135
- specification_version: 3
136
- summary: Page Images Engine for Refinery CMS
137
- test_files:
98
+ specification_version: 4
99
+ summary: Page Images extension for Refinery CMS
100
+ test_files:
138
101
  - spec/factories/page-images.rb
102
+ - spec/features/attach_page_images_spec.rb
103
+ - spec/lib/refinery/initializer_spec.rb
139
104
  - spec/models/refinery/blog_spec.rb
140
105
  - spec/models/refinery/page_spec.rb
141
- - spec/requests/attach_page_images_spec.rb
142
106
  - spec/spec_helper.rb
143
- - spec/support/database_cleaner.rb
144
- - spec/support/devise.rb
145
- - spec/support/refinery.rb
146
107
  has_rdoc: