has_filepicker_image 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  pkg/*
2
+ Gemfile.lock
2
3
  *.gem
3
4
  .bundle
4
5
  nbproject/*
data/.travis.yml CHANGED
@@ -2,3 +2,6 @@ language: ruby
2
2
  rvm:
3
3
  - 1.9.3
4
4
  - 2.0.0
5
+ env:
6
+ - RAILS_VERSION=3.2
7
+ - RAILS_VERSION=4.0
@@ -18,11 +18,11 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
+ s.add_dependency "rails", "~> #{ENV["RAILS_VERSION"] || "3.2"}"
22
+ s.add_dependency "railties"
23
+
21
24
  s.add_development_dependency "rspec-rails"
25
+ s.add_development_dependency "rspec-html-matchers"
22
26
  s.add_development_dependency "sqlite3"
23
27
  s.add_development_dependency "coveralls"
24
-
25
- s.add_dependency "railties", ">= 3.1.0", "< 5.0"
26
- s.add_dependency "rails", '>=3.2.0'
27
-
28
28
  end
@@ -58,12 +58,24 @@ module HasFilepickerImage
58
58
  :class => 'filepicker-button'
59
59
  )
60
60
 
61
- buttons + preview + ActionView::Helpers::InstanceTag.new(
62
- @object_name,
63
- attribute_name,
64
- @template,
65
- object
66
- ).to_input_field_tag('hidden')
61
+ hidden_field = if Rails::VERSION::MAJOR >= 4
62
+ ActionView::Helpers::Tags::HiddenField.new(
63
+ @object_name,
64
+ attribute_name,
65
+ @template,
66
+ :object => object
67
+ ).render
68
+ else
69
+ ActionView::Helpers::InstanceTag.new(
70
+ @object_name,
71
+ attribute_name,
72
+ @template,
73
+ object
74
+ ).to_input_field_tag('hidden')
75
+ end
76
+
77
+ buttons + preview + hidden_field
67
78
  end
79
+
68
80
  end
69
81
  end
@@ -1,3 +1,3 @@
1
1
  module HasFilepickerImage
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -17,77 +17,116 @@ describe HasFilepickerImage::FormBuilderHelper do
17
17
  end
18
18
 
19
19
  let(:model) { TestModel.new }
20
- let(:builder) { FormBuilder.new(:test_model, model, ActionView::Base.new, {}, proc {}) }
21
-
22
- it "should add a filepicker_image_field method" do
23
- builder.should respond_to(:filepicker_image_field)
20
+ let(:builder) do
21
+ args = [:test_model, model, ActionView::Base.new, {}]
22
+ args << proc {} if Rails::VERSION::MAJOR < 4
23
+ FormBuilder.new(*args)
24
24
  end
25
25
 
26
- it "returns the filepicker input field" do
27
- builder.filepicker_image_field(:image_url).should ==
28
- "<div class=\"filepicker-button\">" +
29
- "<a data-action=\"pickImage\" href=\"#\" style=\"\">Pick</a>" +
30
- "<a href=\"#\" data-action=\"removeImage\" style=\"display:none;\">Remove</a>" +
31
- "</div>" +
32
- "<div class=\"filepicker-image\" style=\"display:none;\"></div>" +
33
- "<input id=\"test_model_image_url\" name=\"test_model[image_url]\" type=\"hidden\" />"
34
- end
26
+ let(:rendered) { builder.filepicker_image_field(:image_url) }
35
27
 
36
- it "returns the filepicker input with preview" do
37
- model.image_url = 'http://filepicker.io/images/1'
38
- builder.filepicker_image_field(:image_url).should ==
39
- "<div class=\"filepicker-button\">" +
40
- "<a data-action=\"pickImage\" href=\"#\" style=\"display:none;\">Pick</a>" +
41
- "<a href=\"#\" data-action=\"removeImage\" style=\"\">Remove</a>" +
42
- "</div>" +
43
- "<div class=\"filepicker-image\" style=\"\"><img alt=\"image_url thumbnail\" src=\"http://filepicker.io/images/1/convert?w=260&amp;h=180\" /></div>" +
44
- "<input id=\"test_model_image_url\" name=\"test_model[image_url]\" type=\"hidden\" value=\"http://filepicker.io/images/1\" />"
28
+ it "displays the buttons" do
29
+ rendered.should have_tag 'div', :with => { :class => 'filepicker-button' } do
30
+ with_tag "a", :text => "Pick"
31
+ with_tag "a", :text => "Remove"
32
+ end
45
33
  end
46
34
 
47
- it "returns the filepicker input with defaults options" do
48
- @configuration.defaults = @configuration.defaults.deep_merge(
49
- :html_options => { :'data-fp-debug' => true }
50
- )
35
+ it "displays the image div" do
36
+ rendered.should have_tag "div", :with => { :class => 'filepicker-image' }
37
+ end
51
38
 
52
- builder.filepicker_image_field(:image_url).should ==
53
- "<div class=\"filepicker-button\">" +
54
- "<a data-action=\"pickImage\" data-fp-debug=\"true\" href=\"#\" style=\"\">Pick</a>" +
55
- "<a href=\"#\" data-action=\"removeImage\" style=\"display:none;\">Remove</a>" +
56
- "</div>" +
57
- "<div class=\"filepicker-image\" style=\"display:none;\"></div>" +
58
- "<input id=\"test_model_image_url\" name=\"test_model[image_url]\" type=\"hidden\" />"
39
+ it "displays the hidden input" do
40
+ rendered.should have_tag "input", :with => {
41
+ :id => "test_model_image_url",
42
+ :name => "test_model[image_url]",
43
+ :type => "hidden"
44
+ }
59
45
  end
60
46
 
61
- it "returns the filepicker input with custom options" do
47
+ it "displays customized buttons text" do
62
48
  @configuration.defaults = {
63
49
  :pick_button_html => 'Add Photo',
64
50
  :delete_button_html => 'Remove Photo'
65
51
  }
66
52
 
67
- builder.filepicker_image_field(:image_url).should ==
68
- "<div class=\"filepicker-button\">" +
69
- "<a data-action=\"pickImage\" href=\"#\" style=\"\">Add Photo</a>" +
70
- "<a href=\"#\" data-action=\"removeImage\" style=\"display:none;\">Remove Photo</a>" +
71
- "</div>" +
72
- "<div class=\"filepicker-image\" style=\"display:none;\"></div>" +
73
- "<input id=\"test_model_image_url\" name=\"test_model[image_url]\" type=\"hidden\" />"
53
+ rendered.should have_tag 'div' do
54
+ with_tag "a", :text => "Add Photo"
55
+ with_tag "a", :text => "Remove Photo"
56
+ end
74
57
  end
75
58
 
59
+ it "displays the filepicker input with custom defaults options" do
60
+ @configuration.defaults = @configuration.defaults.deep_merge(
61
+ :html_options => { :'data-fp-debug' => true }
62
+ )
76
63
 
77
- it "returns input with a different config" do
64
+ rendered.should have_tag 'div' do
65
+ with_tag "a", :with => { :'data-fp-debug' => "true" }
66
+ end
67
+ end
68
+
69
+ it "displays options from a custom config" do
78
70
  @configuration.add_config(
79
71
  :picture_config,
80
72
  :pick_button_html => 'Add Picture',
81
73
  :delete_button_html => 'Remove Picture'
82
74
  )
75
+ rendered = builder.filepicker_image_field(:image_url, :picture_config)
76
+ rendered.should have_tag 'div' do
77
+ with_tag "a", :text => "Add Picture"
78
+ with_tag "a", :text => "Remove Picture"
79
+ end
80
+ end
81
+
82
+ context "when empty value" do
83
+ it "displays buttons showing the pick one" do
84
+ rendered.should have_tag 'div', :with => { :class => 'filepicker-button' } do
85
+ with_tag "a", :text => "Pick", :with => { :'data-action' => "pickImage", :style => "" }
86
+ with_tag "a", :text => "Remove", :with => { :'data-action' => "removeImage", :style => "display:none;" }
87
+ end
88
+ end
89
+
90
+ it "does NOT display image previews" do
91
+ rendered.should have_tag "div", :with => { :class => 'filepicker-image', :style => 'display:none;' } do
92
+ without_tag "img"
93
+ end
94
+ end
95
+
96
+ it "displays the hidden input" do
97
+ rendered.should have_tag "input", :with => {
98
+ :id => "test_model_image_url",
99
+ :name => "test_model[image_url]",
100
+ :type => "hidden"
101
+ }
102
+ end
103
+ end
104
+
105
+
106
+ context "when value present" do
107
+ before { model.image_url = 'http://filepicker.io/images/1' }
108
+
109
+ it "displays the buttons showing the remove one" do
110
+ rendered.should have_tag 'div', :with => { :class => 'filepicker-button' } do
111
+ with_tag "a", :text => "Pick", :with => { :style => "display:none;" }
112
+ with_tag "a", :text => "Remove", :with => { :style => "" }
113
+ end
114
+ end
115
+
116
+ it "displays the image" do
117
+ rendered.should have_tag "div", :with => { :class => 'filepicker-image', :style => '' } do
118
+ with_tag "img", :alt => "image_url thumbnail", :src => "http://filepicker.io/images/1/convert?w=260&amp;h=180"
119
+ end
120
+ end
83
121
 
84
- builder.filepicker_image_field(:image_url, :picture_config).should ==
85
- "<div class=\"filepicker-button\">" +
86
- "<a data-action=\"pickImage\" href=\"#\" style=\"\">Add Picture</a>" +
87
- "<a href=\"#\" data-action=\"removeImage\" style=\"display:none;\">Remove Picture</a>" +
88
- "</div>" +
89
- "<div class=\"filepicker-image\" style=\"display:none;\"></div>" +
90
- "<input id=\"test_model_image_url\" name=\"test_model[image_url]\" type=\"hidden\" />"
122
+ it "displays the hidden input with a value" do
123
+ rendered.should have_tag "input", :with => {
124
+ :id => "test_model_image_url",
125
+ :name => "test_model[image_url]",
126
+ :type => "hidden",
127
+ :value => "http://filepicker.io/images/1"
128
+ }
129
+ end
91
130
  end
92
131
 
93
132
  end
data/spec/spec_helper.rb CHANGED
@@ -5,6 +5,7 @@ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
5
5
 
6
6
  require 'rails/all'
7
7
  require 'rspec/rails'
8
+ require 'rspec-html-matchers'
8
9
  require 'has_filepicker_image'
9
10
 
10
11
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_filepicker_image
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,17 +9,33 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-04 00:00:00.000000000 Z
12
+ date: 2013-11-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rspec-rails
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '3.2'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.2'
30
+ - !ruby/object:Gem::Dependency
31
+ name: railties
16
32
  requirement: !ruby/object:Gem::Requirement
17
33
  none: false
18
34
  requirements:
19
35
  - - ! '>='
20
36
  - !ruby/object:Gem::Version
21
37
  version: '0'
22
- type: :development
38
+ type: :runtime
23
39
  prerelease: false
24
40
  version_requirements: !ruby/object:Gem::Requirement
25
41
  none: false
@@ -28,7 +44,7 @@ dependencies:
28
44
  - !ruby/object:Gem::Version
29
45
  version: '0'
30
46
  - !ruby/object:Gem::Dependency
31
- name: sqlite3
47
+ name: rspec-rails
32
48
  requirement: !ruby/object:Gem::Requirement
33
49
  none: false
34
50
  requirements:
@@ -44,7 +60,7 @@ dependencies:
44
60
  - !ruby/object:Gem::Version
45
61
  version: '0'
46
62
  - !ruby/object:Gem::Dependency
47
- name: coveralls
63
+ name: rspec-html-matchers
48
64
  requirement: !ruby/object:Gem::Requirement
49
65
  none: false
50
66
  requirements:
@@ -60,43 +76,37 @@ dependencies:
60
76
  - !ruby/object:Gem::Version
61
77
  version: '0'
62
78
  - !ruby/object:Gem::Dependency
63
- name: railties
79
+ name: sqlite3
64
80
  requirement: !ruby/object:Gem::Requirement
65
81
  none: false
66
82
  requirements:
67
83
  - - ! '>='
68
84
  - !ruby/object:Gem::Version
69
- version: 3.1.0
70
- - - <
71
- - !ruby/object:Gem::Version
72
- version: '5.0'
73
- type: :runtime
85
+ version: '0'
86
+ type: :development
74
87
  prerelease: false
75
88
  version_requirements: !ruby/object:Gem::Requirement
76
89
  none: false
77
90
  requirements:
78
91
  - - ! '>='
79
92
  - !ruby/object:Gem::Version
80
- version: 3.1.0
81
- - - <
82
- - !ruby/object:Gem::Version
83
- version: '5.0'
93
+ version: '0'
84
94
  - !ruby/object:Gem::Dependency
85
- name: rails
95
+ name: coveralls
86
96
  requirement: !ruby/object:Gem::Requirement
87
97
  none: false
88
98
  requirements:
89
99
  - - ! '>='
90
100
  - !ruby/object:Gem::Version
91
- version: 3.2.0
92
- type: :runtime
101
+ version: '0'
102
+ type: :development
93
103
  prerelease: false
94
104
  version_requirements: !ruby/object:Gem::Requirement
95
105
  none: false
96
106
  requirements:
97
107
  - - ! '>='
98
108
  - !ruby/object:Gem::Version
99
- version: 3.2.0
109
+ version: '0'
100
110
  description: Easily add filepicker images to your models
101
111
  email:
102
112
  - polmiro@gmail.com
@@ -107,7 +117,6 @@ files:
107
117
  - .gitignore
108
118
  - .travis.yml
109
119
  - Gemfile
110
- - Gemfile.lock
111
120
  - MIT-LICENSE
112
121
  - README.md
113
122
  - Rakefile
@@ -137,12 +146,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
137
146
  - - ! '>='
138
147
  - !ruby/object:Gem::Version
139
148
  version: '0'
149
+ segments:
150
+ - 0
151
+ hash: 3317842162528816829
140
152
  required_rubygems_version: !ruby/object:Gem::Requirement
141
153
  none: false
142
154
  requirements:
143
155
  - - ! '>='
144
156
  - !ruby/object:Gem::Version
145
157
  version: '0'
158
+ segments:
159
+ - 0
160
+ hash: 3317842162528816829
146
161
  requirements: []
147
162
  rubyforge_project:
148
163
  rubygems_version: 1.8.24
data/Gemfile.lock DELETED
@@ -1,124 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- has_filepicker_image (0.1.0)
5
- rails (>= 3.2.0)
6
- railties (>= 3.1.0, < 5.0)
7
-
8
- GEM
9
- remote: http://rubygems.org/
10
- specs:
11
- actionmailer (3.2.11)
12
- actionpack (= 3.2.11)
13
- mail (~> 2.4.4)
14
- actionpack (3.2.11)
15
- activemodel (= 3.2.11)
16
- activesupport (= 3.2.11)
17
- builder (~> 3.0.0)
18
- erubis (~> 2.7.0)
19
- journey (~> 1.0.4)
20
- rack (~> 1.4.0)
21
- rack-cache (~> 1.2)
22
- rack-test (~> 0.6.1)
23
- sprockets (~> 2.2.1)
24
- activemodel (3.2.11)
25
- activesupport (= 3.2.11)
26
- builder (~> 3.0.0)
27
- activerecord (3.2.11)
28
- activemodel (= 3.2.11)
29
- activesupport (= 3.2.11)
30
- arel (~> 3.0.2)
31
- tzinfo (~> 0.3.29)
32
- activeresource (3.2.11)
33
- activemodel (= 3.2.11)
34
- activesupport (= 3.2.11)
35
- activesupport (3.2.11)
36
- i18n (~> 0.6)
37
- multi_json (~> 1.0)
38
- arel (3.0.2)
39
- builder (3.0.4)
40
- coveralls (0.7.0)
41
- multi_json (~> 1.3)
42
- rest-client
43
- simplecov (>= 0.7)
44
- term-ansicolor
45
- thor
46
- diff-lcs (1.1.3)
47
- erubis (2.7.0)
48
- hike (1.2.1)
49
- i18n (0.6.1)
50
- journey (1.0.4)
51
- json (1.7.6)
52
- mail (2.4.4)
53
- i18n (>= 0.4.0)
54
- mime-types (~> 1.16)
55
- treetop (~> 1.4.8)
56
- mime-types (1.25)
57
- multi_json (1.5.0)
58
- polyglot (0.3.3)
59
- rack (1.4.4)
60
- rack-cache (1.2)
61
- rack (>= 0.4)
62
- rack-ssl (1.3.3)
63
- rack
64
- rack-test (0.6.2)
65
- rack (>= 1.0)
66
- rails (3.2.11)
67
- actionmailer (= 3.2.11)
68
- actionpack (= 3.2.11)
69
- activerecord (= 3.2.11)
70
- activeresource (= 3.2.11)
71
- activesupport (= 3.2.11)
72
- bundler (~> 1.0)
73
- railties (= 3.2.11)
74
- railties (3.2.11)
75
- actionpack (= 3.2.11)
76
- activesupport (= 3.2.11)
77
- rack-ssl (~> 1.3.2)
78
- rake (>= 0.8.7)
79
- rdoc (~> 3.4)
80
- thor (>= 0.14.6, < 2.0)
81
- rake (10.0.3)
82
- rdoc (3.12.1)
83
- json (~> 1.4)
84
- rest-client (1.6.7)
85
- mime-types (>= 1.16)
86
- rspec-core (2.12.2)
87
- rspec-expectations (2.12.1)
88
- diff-lcs (~> 1.1.3)
89
- rspec-mocks (2.12.2)
90
- rspec-rails (2.12.2)
91
- actionpack (>= 3.0)
92
- activesupport (>= 3.0)
93
- railties (>= 3.0)
94
- rspec-core (~> 2.12.0)
95
- rspec-expectations (~> 2.12.0)
96
- rspec-mocks (~> 2.12.0)
97
- simplecov (0.7.1)
98
- multi_json (~> 1.0)
99
- simplecov-html (~> 0.7.1)
100
- simplecov-html (0.7.1)
101
- sprockets (2.2.2)
102
- hike (~> 1.2)
103
- multi_json (~> 1.0)
104
- rack (~> 1.0)
105
- tilt (~> 1.1, != 1.3.0)
106
- sqlite3 (1.3.7)
107
- term-ansicolor (1.2.2)
108
- tins (~> 0.8)
109
- thor (0.17.0)
110
- tilt (1.3.3)
111
- tins (0.12.0)
112
- treetop (1.4.15)
113
- polyglot
114
- polyglot (>= 0.3.1)
115
- tzinfo (0.3.38)
116
-
117
- PLATFORMS
118
- ruby
119
-
120
- DEPENDENCIES
121
- coveralls
122
- has_filepicker_image!
123
- rspec-rails
124
- sqlite3