radiant-images-extension 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -99,5 +99,9 @@
99
99
 
100
100
  #actions
101
101
 
102
+ ul
103
+ :width 120px
104
+ :float left
105
+
102
106
  form
103
107
  :display inline
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{radiant-images-extension}
8
- s.version = "0.3.3"
8
+ s.version = "0.3.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["squaretalent"]
12
- s.date = %q{2010-10-23}
12
+ s.date = %q{2010-11-02}
13
13
  s.description = %q{Image Radiant Extension management tool, meant only to be useful to pages and extensions that need to require images.}
14
14
  s.email = %q{info@squaretalent.com}
15
15
  s.extra_rdoc_files = [
@@ -18,7 +18,6 @@ Gem::Specification.new do |s|
18
18
  ]
19
19
  s.files = [
20
20
  ".gitignore",
21
- "CHANGELOG",
22
21
  "LICENSE",
23
22
  "README.md",
24
23
  "Rakefile",
@@ -51,12 +50,12 @@ Gem::Specification.new do |s|
51
50
  "public/images/extensions/images/missing_icon.png",
52
51
  "public/images/extensions/images/missing_normal.png",
53
52
  "public/images/extensions/images/missing_preview.png",
54
- "public/javascripts/admin/extensions/images/edit.js",
55
53
  "public/stylesheets/sass/admin/extensions/images/edit.sass",
56
54
  "public/stylesheets/sass/admin/extensions/images/index.sass",
57
55
  "radiant-images-extension.gemspec",
58
56
  "spec/controllers/admin/images_controller_spec.rb",
59
57
  "spec/datasets/images.rb",
58
+ "spec/datasets/squaretalent.png",
60
59
  "spec/lib/images/tags/core_spec.rb",
61
60
  "spec/models/image_spec.rb",
62
61
  "spec/spec.opts",
@@ -80,20 +79,23 @@ Gem::Specification.new do |s|
80
79
  s.specification_version = 3
81
80
 
82
81
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
83
- s.add_runtime_dependency(%q<paperclip>, ["~> 2.3.1.1"])
82
+ s.add_runtime_dependency(%q<radiant>, [">= 0.9.1"])
83
+ s.add_runtime_dependency(%q<paperclip>, ["~> 2.3.5"])
84
84
  s.add_runtime_dependency(%q<aws-s3>, [">= 0.6.2"])
85
85
  s.add_runtime_dependency(%q<acts_as_list>, [">= 0.1.2"])
86
86
  s.add_development_dependency(%q<rspec>, [">= 1.3.0"])
87
87
  s.add_development_dependency(%q<rr>, [">= 1.0.0"])
88
88
  else
89
- s.add_dependency(%q<paperclip>, ["~> 2.3.1.1"])
89
+ s.add_dependency(%q<radiant>, [">= 0.9.1"])
90
+ s.add_dependency(%q<paperclip>, ["~> 2.3.5"])
90
91
  s.add_dependency(%q<aws-s3>, [">= 0.6.2"])
91
92
  s.add_dependency(%q<acts_as_list>, [">= 0.1.2"])
92
93
  s.add_dependency(%q<rspec>, [">= 1.3.0"])
93
94
  s.add_dependency(%q<rr>, [">= 1.0.0"])
94
95
  end
95
96
  else
96
- s.add_dependency(%q<paperclip>, ["~> 2.3.1.1"])
97
+ s.add_dependency(%q<radiant>, [">= 0.9.1"])
98
+ s.add_dependency(%q<paperclip>, ["~> 2.3.5"])
97
99
  s.add_dependency(%q<aws-s3>, [">= 0.6.2"])
98
100
  s.add_dependency(%q<acts_as_list>, [">= 0.1.2"])
99
101
  s.add_dependency(%q<rspec>, [">= 1.3.0"])
@@ -1,6 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Admin::ImagesController do
4
+
4
5
  dataset :users
5
6
  dataset :images
6
7
 
@@ -8,64 +9,120 @@ describe Admin::ImagesController do
8
9
  @image = images(:first)
9
10
  @images = Image.all
10
11
  end
11
-
12
- context 'user not logged in' do
12
+
13
+ context 'index action' do
14
+
15
+ context 'user not logged in' do
13
16
 
14
- it 'should redirect to login path' do
15
- get :index
16
- response.should redirect_to login_path
17
- end
17
+ it 'should redirect to login path' do
18
+ get :index
19
+ response.should redirect_to login_path
20
+ end
18
21
 
19
- end
20
-
21
- context 'user logged in' do
22
- before :each do
23
- login_as :admin
24
- stub(AWS::S3::Base).establish_connection!
25
22
  end
26
23
 
27
- context 'index action' do
28
-
24
+ context 'user logged in' do
25
+
26
+ before :each do
27
+ login_as :admin
28
+ stub(AWS::S3::Base).establish_connection!
29
+ end
30
+
29
31
  it 'should render the index template on index action' do
30
32
  get :index
31
33
  response.should render_template(:index)
32
34
  end
33
-
35
+
34
36
  it 'should have a list of images' do
35
37
  get :index
36
38
  assigns(:images).should == @images
37
39
  end
38
-
40
+
39
41
  it 'should use pagination' do
40
42
  get :index
41
43
  assigns(:images).class.should == WillPaginate::Collection
42
44
  end
45
+
46
+ it 'should include the index stylesheet' do
47
+ mock(controller).index_assets
48
+ get :index
49
+ end
50
+
51
+ end
52
+
53
+ end
54
+
55
+ context 'edit action' do
56
+
57
+ context 'user logged in' do
58
+
59
+ before :each do
60
+ login_as :admin
61
+ stub(AWS::S3::Base).establish_connection!
62
+ end
63
+
64
+ it 'should include the edit stylesheet' do
65
+ mock(controller).edit_assets
66
+ get :edit, :id => @image.id
67
+ end
43
68
 
44
69
  end
45
70
 
46
- context 'search action' do
47
-
71
+ end
72
+
73
+ context 'show action' do
74
+
75
+ context 'user logged in' do
76
+
48
77
  before :each do
49
78
  login_as :admin
50
79
  stub(AWS::S3::Base).establish_connection!
51
80
  end
52
81
 
53
- it 'should render the search template on search action' do
54
- get :search
55
- response.should render_template(:search)
82
+ it 'should include the edit stylesheet' do
83
+ mock(controller).edit_assets
84
+ get :show, :id => @image.id
56
85
  end
86
+
87
+ end
88
+
89
+ end
90
+
91
+ context 'rescusing S3 exceptions' do
92
+
93
+ before :each do
94
+ controller = Admin::ImagesController.new
95
+ end
96
+
97
+ it 'should catch any AWS S3 response errors thrown' do
98
+ stub(controller).redirect_to(anything)
99
+ controller.send :rescue_s3_exceptions do
100
+ raise AWS::S3::ResponseError.new('error name', '')
101
+ end
102
+ end
103
+
104
+ it 'should set the flash message' do
105
+ stub(controller).redirect_to(anything)
106
+ controller.send :rescue_s3_exceptions do
107
+ raise AWS::S3::ResponseError.new('some error' ,'')
108
+ end
109
+ (controller.send :flash)[:error].should == 'some error'
57
110
 
58
- it 'should return valid search results'
59
-
60
- it 'should respond to JS requests correctly'
61
-
62
- it 'should respond to xml requests correctly'
63
-
64
- it 'should respond to json requests correctly'
65
-
111
+ end
112
+
113
+ it 'should redirect to the admin images url' do
114
+ mock(controller).redirect_to(admin_images_url)
115
+ controller.send :rescue_s3_exceptions do
116
+ raise AWS::S3::ResponseError.new('error' ,'')
117
+ end
118
+ end
119
+
120
+ it 'should not catch any other errors thrown' do
121
+ lambda { controller.send :rescue_s3_exceptions do
122
+ raise 'another type of error'
123
+ end }.should raise_error 'another type of error'
66
124
  end
67
125
 
68
126
  end
69
127
 
70
-
71
- end
128
+ end
@@ -1,6 +1,6 @@
1
1
  class ImagesDataset < Dataset::Base
2
2
  def load
3
- images = [ :first, :second, :third, :fourth, :fifth ]
3
+ images = [ :first, :second, :third, :fourth, :fifth, :sixth ]
4
4
 
5
5
  images.each_with_index do |image, i|
6
6
  create_record :image, image.to_sym,
Binary file
@@ -1,22 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Images::Tags::Core do
4
- dataset :pages, :images
5
-
6
- it 'should describe these tags' do
7
- Images::Tags::Core.tags.sort.should == [
8
- 'images',
9
- 'images:if_images',
10
- 'images:unless_images',
11
- 'images:each',
12
- 'image',
13
- 'image:url',
14
- 'image:id',
15
- 'image:title'].sort
16
- end
17
4
 
5
+ dataset :pages, :images
6
+
18
7
  before(:all) do
19
- @images = [ images(:first), images(:second) ]
8
+ @images = [ images(:first), images(:second), images(:third),
9
+ images(:fourth), images(:fifth), images(:sixth) ]
20
10
  end
21
11
 
22
12
  before(:each) do
@@ -25,81 +15,209 @@ describe Images::Tags::Core do
25
15
 
26
16
  describe '<r:images>' do
27
17
 
28
- it 'should render' do
29
- tag = '<r:images>success</r:images>'
30
- exp = 'success'
31
-
32
- pages(:home).should render(tag).as(exp)
18
+ it 'should render its contents' do
19
+ input = '<r:images>success</r:images>'
20
+ expected = 'success'
21
+ pages(:home).should render(input).as(expected)
22
+ end
23
+
24
+ it 'should add the images namespace to nested radius tags' do
25
+ input = '<r:images><r:if_images>success</r:if_images></r:images>'
26
+ pages(:home).should render(input)
33
27
  end
34
28
 
35
29
  end
36
30
 
37
31
  describe '<r:images:if_images>' do
38
32
 
39
- context 'success' do
40
- it 'should render' do
41
- tag = '<r:images><r:if_images>success</r:if_images></r:images>'
42
- exp = 'success'
43
-
44
- pages(:home).should render(tag).as(exp)
45
- end
46
- it 'should render' do
47
- tag = '<r:images key="title" value="first"><r:if_images>success</r:if_images></r:images>'
48
- exp = 'success'
49
-
50
- pages(:home).should render(tag).as(exp)
51
- end
33
+ it 'should render its contents when there are images' do
34
+ input = '<r:images><r:if_images>success</r:if_images></r:images>'
35
+ expected = 'success'
36
+ pages(:home).should render(input).as(expected)
37
+ end
38
+
39
+ it 'should not render its contents when there are no images' do
40
+ mock(Image).all { [] }
41
+ input = '<r:images><r:if_images>failure</r:if_images></r:images>'
42
+ expected = ''
43
+ pages(:home).should render(input).as(expected)
44
+ end
45
+
46
+ end
47
+
48
+ describe '<r:images:unless_images>' do
49
+
50
+ it 'should render its contents when there are no images' do
51
+ mock(Image).all { [] }
52
+ input = '<r:images><r:unless_images>success</r:unless_images></r:images>'
53
+ expected = 'success'
54
+ pages(:home).should render(input).as(expected)
55
+ end
56
+
57
+ it 'should not render its contents when there are images' do
58
+ input = '<r:images><r:unless_images>failure</r:unless_images></r:images>'
59
+ expected = ''
60
+ pages(:home).should render(input).as(expected)
52
61
  end
53
62
 
54
- context 'failure' do
55
- it 'should not render' do
56
- mock(Image).all { [] }
57
- tag = '<r:images><r:if_images>failure</r:if_images></r:images>'
58
- exp = ''
59
-
60
- pages(:home).should render(tag).as(exp)
61
- end
62
- it 'should not render' do
63
- tag = '<r:images key="title" value="notme"><r:if_images>failure</r:if_images></r:images>'
64
- exp = ''
65
-
66
- pages(:home).should render(tag).as(exp)
67
- end
63
+ end
64
+
65
+ describe '<r:images:each>' do
66
+
67
+ it 'should expand its contents once for each of the available images' do
68
+ input = '<r:images:each>test </r:images:each>'
69
+ expected = 'test test test test test test '
70
+ pages(:home).should render(input).as(expected)
71
+ end
72
+
73
+ it 'should not expand its contents if there are no images available' do
74
+ mock(Image).all { [] }
75
+ input = '<r:images:each>test </r:images:each>'
76
+ expected = ''
77
+ pages(:home).should render(input).as(expected)
78
+ end
79
+
80
+ it 'should limit the number of images based on the limit parameter passed' do
81
+ input = '<r:images:each limit="3"><r:image:title /> </r:images:each>'
82
+ expected = 'first second third '
83
+ pages(:home).should render(input).as(expected)
84
+ end
85
+
86
+ it 'should use the offset parameter to ignore results before the offset' do
87
+ input = '<r:images:each limit="3" offset="2"><r:image:title /> </r:images:each>'
88
+ expected = 'third fourth fifth '
89
+ pages(:home).should render(input).as(expected)
90
+ end
91
+
92
+ it 'should order the results based by the key passed' do
93
+ input = '<r:images:each by="title"><r:image:title /> </r:images:each>'
94
+ expected = 'third fifth first fourth second sixth '
95
+ pages(:home).should render(input).as(expected)
96
+ end
97
+
98
+ it 'should order the results by ascending order when asc is passed for the order' do
99
+ input = '<r:images:each by="id" order="asc" ><r:image:title /> </r:images:each>'
100
+ expected = 'first second third fourth fifth sixth '
101
+ pages(:home).should render(input).as(expected)
102
+ end
103
+
104
+ it 'should order the results by descending order when desc is passed for the order' do
105
+ input = '<r:images:each by="id" order="desc" ><r:image:title /> </r:images:each>'
106
+ expected = 'sixth fifth fourth third second first '
107
+ pages(:home).should render(input).as(expected)
68
108
  end
69
109
 
70
110
  end
71
111
 
72
- describe '<r:images:unless_images>' do
112
+ describe '<r:image>' do
73
113
 
74
- context 'success' do
75
- it 'should render' do
76
- mock(Image).all { [] }
77
- tag = '<r:images><r:unless_images>success</r:unless_images></r:images>'
78
- exp = 'success'
79
-
80
- pages(:home).should render(tag).as(exp)
81
- end
82
- it 'should render' do
83
- tag = '<r:images key="title" value="notme"><r:unless_images>success</r:unless_images></r:images>'
84
- exp = 'success'
85
-
86
- pages(:home).should render(tag).as(exp)
87
- end
114
+ it 'should add the image namespace to nested radius tags' do
115
+ input = '<r:image title="first"><r:title /></r:image>'
116
+ expected = 'first'
117
+ pages(:home).should render(input).as(expected)
88
118
  end
89
119
 
90
- context 'failure' do
91
- it 'should not render' do
92
- tag = '<r:images><r:unless_images>failure</r:unless_images></r:images>'
93
- exp = ''
120
+ it 'should render its contents if there is a current image' do
121
+ input = '<r:images:each><r:image title="first"><r:title /> </r:image></r:images:each>'
122
+ expected = 'first second third fourth fifth sixth '
123
+ pages(:home).should render(input).as(expected)
124
+ end
125
+
126
+ it 'should not render its contents if there is no current image' do
127
+ input = '<r:image title="invalid"><r:title /></r:image>'
128
+ expected = ''
129
+ pages(:home).should render(input).as(expected)
130
+ end
131
+
132
+ it 'should allow images to be looked up by their id attribute' do
133
+ mock(Image).find('5') { @images[4] }
134
+ input = '<r:image id="5"><r:title /></r:image>'
135
+ expected = 'fifth'
136
+ pages(:home).should render(input).as(expected)
137
+ end
138
+
139
+ it 'should allow images to be looked up by their position attribute' do
140
+ input = '<r:image position="3"><r:title /></r:image>'
141
+ expected = 'third'
142
+ pages(:home).should render(input).as(expected)
143
+ end
94
144
 
95
- pages(:home).should render(tag).as(exp)
96
- end
97
- it 'should not render' do
98
- tag = '<r:images key="title" value="first"><r:unless_images>failure</r:unless_images></r:images>'
99
- exp = ''
145
+ it 'should allow images to be looked up by their title attribute' do
146
+ input = '<r:image title="sixth"><r:title /></r:image>'
147
+ expected = 'sixth'
148
+ pages(:home).should render(input).as(expected)
149
+ end
150
+
151
+ end
152
+
153
+ describe '<r:image:url>' do
154
+
155
+ it 'should render a valid url given a valid image context'
100
156
 
101
- pages(:home).should render(tag).as(exp)
102
- end
157
+ it 'should not render a valid url if there is no current image'
158
+
159
+ it 'should render the url with the default style if not specified'
160
+
161
+ it 'should render the url with the style specified by the user'
162
+
163
+ end
164
+
165
+ describe '<r:image:tag>' do
166
+
167
+ it 'should render a valid img tag given a valid image context'
168
+
169
+ it 'should not render a valid img tag if there is no current image'
170
+
171
+ it 'should render the img tag with the default style if not specified'
172
+
173
+ it 'should render the img tag with the style specified by the user'
174
+
175
+ end
176
+
177
+ describe '<r:image:id>' do
178
+
179
+ it 'should render the id of the current image context' do
180
+ input = '<r:image title="sixth"><r:id /></r:image>'
181
+ expected = @images[5].id.to_s
182
+ pages(:home).should render(input).as(expected)
183
+ end
184
+
185
+ it 'should not render anything if there is no current image context' do
186
+ input = '<r:image title="invalid"><r:id /></r:image>'
187
+ expected = ''
188
+ pages(:home).should render(input).as(expected)
189
+ end
190
+
191
+ end
192
+
193
+ describe '<r:image:title>' do
194
+
195
+ it 'should render the title of the current image context' do
196
+ input = '<r:image title="fourth"><r:title /></r:image>'
197
+ expected = 'fourth'
198
+ pages(:home).should render(input).as(expected)
199
+ end
200
+
201
+ it 'should not render anything if there is no current image context' do
202
+ input = '<r:image title="invalid"><r:title /></r:image>'
203
+ expected = ''
204
+ pages(:home).should render(input).as(expected)
205
+ end
206
+
207
+ end
208
+
209
+ describe '<r:image:position>' do
210
+
211
+ it 'should render the position of the current image context' do
212
+ input = '<r:image title="first"><r:position /></r:image>'
213
+ expected = '1'
214
+ pages(:home).should render(input).as(expected)
215
+ end
216
+
217
+ it 'should not render anything if there is no current image context' do
218
+ input = '<r:image title="invalid"><r:position /></r:image>'
219
+ expected = ''
220
+ pages(:home).should render(input).as(expected)
103
221
  end
104
222
 
105
223
  end