radiant-page_attachments-extension 1.0.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.
- data/.gitignore +5 -0
- data/LICENSE +20 -0
- data/README.md +129 -0
- data/Rakefile +57 -0
- data/VERSION +1 -0
- data/app/models/observe_page_attachments.rb +5 -0
- data/app/models/page_attachment.rb +28 -0
- data/app/models/page_attachment_associations.rb +20 -0
- data/app/models/page_attachment_tags.rb +261 -0
- data/app/models/page_attachments_interface.rb +19 -0
- data/app/views/admin/pages/_attachment.html.haml +12 -0
- data/app/views/admin/pages/_attachments_box.html.haml +12 -0
- data/db/migrate/001_create_page_attachments_extension_schema.rb +22 -0
- data/db/migrate/002_add_page_attachments_fields.rb +23 -0
- data/features/attachments.feature +42 -0
- data/features/step_definitions/attachment_steps.rb +61 -0
- data/features/support/env.rb +57 -0
- data/features/support/paths.rb +14 -0
- data/lib/difference_test_helper.rb +20 -0
- data/lib/radiant-page_attachments-extension.rb +0 -0
- data/lib/tasks/page_attachments_extension_tasks.rake +28 -0
- data/page_attachments_extension.rb +27 -0
- data/public/images/admin/drag_order.png +0 -0
- data/public/javascripts/admin/page_attachments.js +30 -0
- data/public/stylesheets/admin/page_attachments.css +133 -0
- data/radiant-page_attachments-extension.gemspec +139 -0
- data/spec/controllers/pages_controller_spec.rb +10 -0
- data/spec/datasets/page_attachments_dataset.rb +31 -0
- data/spec/fixtures/foo.txt +1 -0
- data/spec/fixtures/rails.png +0 -0
- data/spec/models/observe_page_attachments_spec.rb +14 -0
- data/spec/models/page_attachment_spec.rb +18 -0
- data/spec/models/page_attachment_tags_spec.rb +172 -0
- data/spec/models/page_spec.rb +32 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +39 -0
- data/vendor/plugins/acts_as_list/README +23 -0
- data/vendor/plugins/acts_as_list/init.rb +3 -0
- data/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb +256 -0
- data/vendor/plugins/acts_as_list/test/list_test.rb +332 -0
- data/vendor/plugins/attachment_fu/CHANGELOG +35 -0
- data/vendor/plugins/attachment_fu/LICENSE +20 -0
- data/vendor/plugins/attachment_fu/README +193 -0
- data/vendor/plugins/attachment_fu/Rakefile +22 -0
- data/vendor/plugins/attachment_fu/amazon_s3.yml.tpl +17 -0
- data/vendor/plugins/attachment_fu/init.rb +16 -0
- data/vendor/plugins/attachment_fu/install.rb +7 -0
- data/vendor/plugins/attachment_fu/lib/geometry.rb +93 -0
- data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/cloud_file_backend.rb +211 -0
- data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/db_file_backend.rb +39 -0
- data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/file_system_backend.rb +126 -0
- data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/s3_backend.rb +394 -0
- data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/core_image_processor.rb +59 -0
- data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/gd2_processor.rb +54 -0
- data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/image_science_processor.rb +61 -0
- data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/mini_magick_processor.rb +132 -0
- data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/rmagick_processor.rb +57 -0
- data/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb +514 -0
- data/vendor/plugins/attachment_fu/rackspace_cloudfiles.yml.tpl +14 -0
- data/vendor/plugins/attachment_fu/test/backends/db_file_test.rb +16 -0
- data/vendor/plugins/attachment_fu/test/backends/file_system_test.rb +143 -0
- data/vendor/plugins/attachment_fu/test/backends/remote/cloudfiles_test.rb +102 -0
- data/vendor/plugins/attachment_fu/test/backends/remote/s3_test.rb +119 -0
- data/vendor/plugins/attachment_fu/test/base_attachment_tests.rb +77 -0
- data/vendor/plugins/attachment_fu/test/basic_test.rb +70 -0
- data/vendor/plugins/attachment_fu/test/database.yml +18 -0
- data/vendor/plugins/attachment_fu/test/extra_attachment_test.rb +67 -0
- data/vendor/plugins/attachment_fu/test/fixtures/attachment.rb +226 -0
- data/vendor/plugins/attachment_fu/test/fixtures/files/fake/rails.png +0 -0
- data/vendor/plugins/attachment_fu/test/fixtures/files/foo.txt +1 -0
- data/vendor/plugins/attachment_fu/test/fixtures/files/rails.png +0 -0
- data/vendor/plugins/attachment_fu/test/geometry_test.rb +108 -0
- data/vendor/plugins/attachment_fu/test/processors/core_image_test.rb +37 -0
- data/vendor/plugins/attachment_fu/test/processors/gd2_test.rb +31 -0
- data/vendor/plugins/attachment_fu/test/processors/image_science_test.rb +31 -0
- data/vendor/plugins/attachment_fu/test/processors/mini_magick_test.rb +103 -0
- data/vendor/plugins/attachment_fu/test/processors/rmagick_test.rb +255 -0
- data/vendor/plugins/attachment_fu/test/schema.rb +134 -0
- data/vendor/plugins/attachment_fu/test/test_helper.rb +150 -0
- data/vendor/plugins/attachment_fu/test/validation_test.rb +55 -0
- data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/color.rb +27 -0
- data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/effects.rb +31 -0
- data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/perspective.rb +25 -0
- data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/quality.rb +25 -0
- data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/scale.rb +47 -0
- data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/watermark.rb +32 -0
- data/vendor/plugins/attachment_fu/vendor/red_artisan/core_image/processor.rb +123 -0
- metadata +178 -0
@@ -0,0 +1,139 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{radiant-page_attachments-extension}
|
8
|
+
s.version = "1.0.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Sean Cribbs"]
|
12
|
+
s.date = %q{2010-04-29}
|
13
|
+
s.description = %q{Page Attachments adds support for file uploads realized as attachments to individual pages. Attachments can have an order via acts_as_list, a title, a description and various metadata fields as provided by AttachmentFu.}
|
14
|
+
s.email = %q{radiant@radiantcms.org}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.md"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".gitignore",
|
21
|
+
"LICENSE",
|
22
|
+
"README.md",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"app/models/observe_page_attachments.rb",
|
26
|
+
"app/models/page_attachment.rb",
|
27
|
+
"app/models/page_attachment_associations.rb",
|
28
|
+
"app/models/page_attachment_tags.rb",
|
29
|
+
"app/models/page_attachments_interface.rb",
|
30
|
+
"app/views/admin/pages/_attachment.html.haml",
|
31
|
+
"app/views/admin/pages/_attachments_box.html.haml",
|
32
|
+
"db/migrate/001_create_page_attachments_extension_schema.rb",
|
33
|
+
"db/migrate/002_add_page_attachments_fields.rb",
|
34
|
+
"features/attachments.feature",
|
35
|
+
"features/step_definitions/attachment_steps.rb",
|
36
|
+
"features/support/env.rb",
|
37
|
+
"features/support/paths.rb",
|
38
|
+
"lib/difference_test_helper.rb",
|
39
|
+
"lib/radiant-page_attachments-extension.rb",
|
40
|
+
"lib/tasks/page_attachments_extension_tasks.rake",
|
41
|
+
"page_attachments_extension.rb",
|
42
|
+
"public/images/admin/drag_order.png",
|
43
|
+
"public/javascripts/admin/page_attachments.js",
|
44
|
+
"public/stylesheets/admin/page_attachments.css",
|
45
|
+
"radiant-page_attachments-extension.gemspec",
|
46
|
+
"spec/controllers/pages_controller_spec.rb",
|
47
|
+
"spec/datasets/page_attachments_dataset.rb",
|
48
|
+
"spec/fixtures/foo.txt",
|
49
|
+
"spec/fixtures/rails.png",
|
50
|
+
"spec/models/observe_page_attachments_spec.rb",
|
51
|
+
"spec/models/page_attachment_spec.rb",
|
52
|
+
"spec/models/page_attachment_tags_spec.rb",
|
53
|
+
"spec/models/page_spec.rb",
|
54
|
+
"spec/spec.opts",
|
55
|
+
"spec/spec_helper.rb",
|
56
|
+
"vendor/plugins/acts_as_list/README",
|
57
|
+
"vendor/plugins/acts_as_list/init.rb",
|
58
|
+
"vendor/plugins/acts_as_list/lib/active_record/acts/list.rb",
|
59
|
+
"vendor/plugins/acts_as_list/test/list_test.rb",
|
60
|
+
"vendor/plugins/attachment_fu/CHANGELOG",
|
61
|
+
"vendor/plugins/attachment_fu/LICENSE",
|
62
|
+
"vendor/plugins/attachment_fu/README",
|
63
|
+
"vendor/plugins/attachment_fu/Rakefile",
|
64
|
+
"vendor/plugins/attachment_fu/amazon_s3.yml.tpl",
|
65
|
+
"vendor/plugins/attachment_fu/init.rb",
|
66
|
+
"vendor/plugins/attachment_fu/install.rb",
|
67
|
+
"vendor/plugins/attachment_fu/lib/geometry.rb",
|
68
|
+
"vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb",
|
69
|
+
"vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/cloud_file_backend.rb",
|
70
|
+
"vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/db_file_backend.rb",
|
71
|
+
"vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/file_system_backend.rb",
|
72
|
+
"vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/s3_backend.rb",
|
73
|
+
"vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/core_image_processor.rb",
|
74
|
+
"vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/gd2_processor.rb",
|
75
|
+
"vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/image_science_processor.rb",
|
76
|
+
"vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/mini_magick_processor.rb",
|
77
|
+
"vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/rmagick_processor.rb",
|
78
|
+
"vendor/plugins/attachment_fu/rackspace_cloudfiles.yml.tpl",
|
79
|
+
"vendor/plugins/attachment_fu/test/backends/db_file_test.rb",
|
80
|
+
"vendor/plugins/attachment_fu/test/backends/file_system_test.rb",
|
81
|
+
"vendor/plugins/attachment_fu/test/backends/remote/cloudfiles_test.rb",
|
82
|
+
"vendor/plugins/attachment_fu/test/backends/remote/s3_test.rb",
|
83
|
+
"vendor/plugins/attachment_fu/test/base_attachment_tests.rb",
|
84
|
+
"vendor/plugins/attachment_fu/test/basic_test.rb",
|
85
|
+
"vendor/plugins/attachment_fu/test/database.yml",
|
86
|
+
"vendor/plugins/attachment_fu/test/extra_attachment_test.rb",
|
87
|
+
"vendor/plugins/attachment_fu/test/fixtures/attachment.rb",
|
88
|
+
"vendor/plugins/attachment_fu/test/fixtures/files/fake/rails.png",
|
89
|
+
"vendor/plugins/attachment_fu/test/fixtures/files/foo.txt",
|
90
|
+
"vendor/plugins/attachment_fu/test/fixtures/files/rails.png",
|
91
|
+
"vendor/plugins/attachment_fu/test/geometry_test.rb",
|
92
|
+
"vendor/plugins/attachment_fu/test/processors/core_image_test.rb",
|
93
|
+
"vendor/plugins/attachment_fu/test/processors/gd2_test.rb",
|
94
|
+
"vendor/plugins/attachment_fu/test/processors/image_science_test.rb",
|
95
|
+
"vendor/plugins/attachment_fu/test/processors/mini_magick_test.rb",
|
96
|
+
"vendor/plugins/attachment_fu/test/processors/rmagick_test.rb",
|
97
|
+
"vendor/plugins/attachment_fu/test/schema.rb",
|
98
|
+
"vendor/plugins/attachment_fu/test/test_helper.rb",
|
99
|
+
"vendor/plugins/attachment_fu/test/validation_test.rb",
|
100
|
+
"vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/color.rb",
|
101
|
+
"vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/effects.rb",
|
102
|
+
"vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/perspective.rb",
|
103
|
+
"vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/quality.rb",
|
104
|
+
"vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/scale.rb",
|
105
|
+
"vendor/plugins/attachment_fu/vendor/red_artisan/core_image/filters/watermark.rb",
|
106
|
+
"vendor/plugins/attachment_fu/vendor/red_artisan/core_image/processor.rb"
|
107
|
+
]
|
108
|
+
s.homepage = %q{http://github.com/radiant/radiant-page-attachments-extension}
|
109
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
110
|
+
s.require_paths = ["lib"]
|
111
|
+
s.rubygems_version = %q{1.3.6}
|
112
|
+
s.summary = %q{Adds page-attachment-style asset management.}
|
113
|
+
s.test_files = [
|
114
|
+
"spec/controllers/pages_controller_spec.rb",
|
115
|
+
"spec/datasets/page_attachments_dataset.rb",
|
116
|
+
"spec/models/observe_page_attachments_spec.rb",
|
117
|
+
"spec/models/page_attachment_spec.rb",
|
118
|
+
"spec/models/page_attachment_tags_spec.rb",
|
119
|
+
"spec/models/page_spec.rb",
|
120
|
+
"spec/spec_helper.rb"
|
121
|
+
]
|
122
|
+
|
123
|
+
if s.respond_to? :specification_version then
|
124
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
125
|
+
s.specification_version = 3
|
126
|
+
|
127
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
128
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
129
|
+
s.add_development_dependency(%q<cucumber>, [">= 0"])
|
130
|
+
else
|
131
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
132
|
+
s.add_dependency(%q<cucumber>, [">= 0"])
|
133
|
+
end
|
134
|
+
else
|
135
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
136
|
+
s.add_dependency(%q<cucumber>, [">= 0"])
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class PageAttachmentsDataset < Dataset::Base
|
2
|
+
uses :pages, :users
|
3
|
+
|
4
|
+
def load
|
5
|
+
create_page_attachment "rails.png", :title => "Rails logo", :content_type => "image/png", :width => 50, :height => 64, :description => "The awesome Rails logo."
|
6
|
+
create_page_attachment "foo.txt", :title => "Simple text file", :content_type => "text/plain", :description => "Nice shootin', text."
|
7
|
+
end
|
8
|
+
|
9
|
+
helpers do
|
10
|
+
def create_page_attachment(filename, attributes={})
|
11
|
+
create_record :page_attachment, filename.symbolize, page_attachment_params(attributes.reverse_merge(:filename => filename))
|
12
|
+
end
|
13
|
+
|
14
|
+
def page_attachment_params(attributes={})
|
15
|
+
page = pages(:home)
|
16
|
+
{
|
17
|
+
:size => File.join(File.dirname(__FILE__), '/../fixtures/', attributes[:filename]).size,
|
18
|
+
:page => page,
|
19
|
+
:position => next_position(page),
|
20
|
+
:created_by => users(:admin)
|
21
|
+
}.merge(attributes)
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def next_position(page)
|
27
|
+
(page.attachments.maximum(:position) || 0) + 1
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
foo
|
Binary file
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe UserActionObserver do
|
4
|
+
|
5
|
+
it "should include ObservePageAttachments" do
|
6
|
+
UserActionObserver.included_modules.should include(ObservePageAttachments)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should include the observed_class method" do
|
10
|
+
UserActionObserver.methods.should include('observed_class')
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe PageAttachment do
|
4
|
+
dataset :pages, :page_attachments
|
5
|
+
|
6
|
+
it "should change position when first attachment is moved lower" do
|
7
|
+
img = page_attachments(:rails_png)
|
8
|
+
txt = page_attachments(:foo_txt)
|
9
|
+
|
10
|
+
img.position.should == 1
|
11
|
+
txt.position.should == 2
|
12
|
+
img.move_lower
|
13
|
+
txt.reload
|
14
|
+
img.position.should == 2
|
15
|
+
txt.position.should == 1
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,172 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe "page attachment tags" do
|
4
|
+
dataset :pages, :page_attachments
|
5
|
+
|
6
|
+
it "should raise an error when required attributes missing" do
|
7
|
+
[:url, :content_type, :size, :width, :height, :date, :image, :link, :author, :title].each do |key|
|
8
|
+
message = "'name' attribute required"
|
9
|
+
page.should render("<r:attachment:#{key} />").with_error(message)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
it "<r:attachment /> should render nothing when empty" do
|
14
|
+
page.should render("<r:attachment></r:attachment>").as("")
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should render the URL tag" do
|
18
|
+
page.should render('<r:attachment:url name="rails.png" />').as(img.public_filename)
|
19
|
+
end
|
20
|
+
it "should render the title tag" do
|
21
|
+
page.should render('<r:attachment:title name="rails.png" />').as(img.title)
|
22
|
+
end
|
23
|
+
it "should render the content type" do
|
24
|
+
page.should render('<r:attachment:content_type name="rails.png" />').as(img.content_type)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should render the size" do
|
28
|
+
page.should render('<r:attachment:size name="rails.png" />').as(img.size.to_s)
|
29
|
+
end
|
30
|
+
it "should render the size in bytes when unit is invalid" do
|
31
|
+
page.should render('<r:attachment:size name="rails.png" units="blargobytes" />').as(img.size.to_s)
|
32
|
+
end
|
33
|
+
it "should render the size in the units specified" do
|
34
|
+
page.should render('<r:attachment:size name="rails.png" units="kilobytes" />').as('%.2f' % (img.size / 1024.00))
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should render the width" do
|
38
|
+
page.should render('<r:attachment:width name="rails.png" />').as(img.width.to_s)
|
39
|
+
end
|
40
|
+
it "should render the height" do
|
41
|
+
page.should render('<r:attachment:height name="rails.png" />').as(img.height.to_s)
|
42
|
+
end
|
43
|
+
it "should render the date" do
|
44
|
+
page.should render('<r:attachment:date name="rails.png" format="%Y-%m-%d" />').as(img.created_at.strftime("%Y-%m-%d"))
|
45
|
+
end
|
46
|
+
it "should render the author" do
|
47
|
+
page.should render('<r:attachment:author name="rails.png" />').as(img.created_by.name)
|
48
|
+
end
|
49
|
+
it "should render empty width and height for non-images" do
|
50
|
+
page.should render('<r:attachment:height name="foo.txt"/>').as("")
|
51
|
+
page.should render('<r:attachment:width name="foo.txt"/>').as("")
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should render image tag" do
|
55
|
+
page.should render('<r:attachment:image name="rails.png" />').as(%{<img src="#{img.public_filename}" />})
|
56
|
+
end
|
57
|
+
it "should render image tag with HTML attributes" do
|
58
|
+
page.should render('<r:attachment:image name="rails.png" style="float: right;"/>').as(%{<img src="#{img.public_filename}" style="float: right;" />})
|
59
|
+
end
|
60
|
+
it "should render link tag" do
|
61
|
+
page.should render('<r:attachment:link name="rails.png" />').as(%{<a href="#{img.public_filename}">rails.png</a>})
|
62
|
+
end
|
63
|
+
it "should render link tag with HTML attributes" do
|
64
|
+
page.should render('<r:attachment:link name="rails.png" id="mylink" />').as(%{<a href="#{img.public_filename}" id="mylink">rails.png</a>})
|
65
|
+
end
|
66
|
+
it "should render link tag" do
|
67
|
+
page.should render('<r:attachment:link name="rails.png">Rails</r:attachment:link>').as(%{<a href="#{img.public_filename}">Rails</a>})
|
68
|
+
end
|
69
|
+
it "should render link tag with HTML attributes" do
|
70
|
+
page.should render('<r:attachment:link name="rails.png" label="Rails"/>').as(%{<a href="#{img.public_filename}">Rails</a>})
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should render the title" do
|
74
|
+
page.should render('<r:attachment:title name="rails.png"/>').as(%{Rails logo})
|
75
|
+
end
|
76
|
+
it "should render the short title" do
|
77
|
+
page.should render('<r:attachment:short_title name="rails.png"/>').as(%{Rails logo})
|
78
|
+
end
|
79
|
+
it "should render the description" do
|
80
|
+
page.should render('<r:attachment:description name="rails.png"/>').as(%{The awesome Rails logo.})
|
81
|
+
end
|
82
|
+
it "should render the short description" do
|
83
|
+
page.should render('<r:attachment:short_description name="rails.png"/>').as(%{The awesome ...})
|
84
|
+
end
|
85
|
+
it "should render the short description at the specified length" do
|
86
|
+
page.should render('<r:attachment:short_description name="rails.png" length="13" />').as(%{The aweso ...})
|
87
|
+
end
|
88
|
+
it "should render the short description at a length greater than the description length" do
|
89
|
+
page.should render('<r:attachment:short_description name="rails.png" length="35" />').as(%{The awesome Rails logo.})
|
90
|
+
end
|
91
|
+
it "should render the short description with a custom length and suffix" do
|
92
|
+
page.should render('<r:attachment:short_description name="rails.png" length="15" suffix="...." />').as(%{The awesome....})
|
93
|
+
end
|
94
|
+
it "should render the filename" do
|
95
|
+
page.should render('<r:attachment:filename name="rails.png"/>').as(%{rails.png})
|
96
|
+
end
|
97
|
+
it "should render the short filename" do
|
98
|
+
page.should render('<r:attachment:short_filename name="rails.png"/>').as(%{rails.png})
|
99
|
+
end
|
100
|
+
it "should render the short filename with a custom length and suffix" do
|
101
|
+
page.should render('<r:attachment:short_filename name="rails.png" suffix="..." length="8" />').as(%{rails...})
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should render error when image tag used on non-image" do
|
105
|
+
page.should render('<r:attachment:image name="foo.txt" />').with_error("attachment is not an image.")
|
106
|
+
end
|
107
|
+
|
108
|
+
it "should render the contents for each attachment" do
|
109
|
+
page.should render("<r:attachment:each>* </r:attachment:each>").as("* * ")
|
110
|
+
end
|
111
|
+
it "should render contained tags for each attachment" do
|
112
|
+
page.should render(%{<r:attachment:each by="filename"><r:link/></r:attachment:each>}).as(%{<a href="#{txt.public_filename}">foo.txt</a><a href="#{img.public_filename}">rails.png</a>})
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should render the contents for each attachment with offset and limit" do
|
116
|
+
page.should render(%{<r:attachment:each limit="1" offset="1" by="filename"><r:link/></r:attachment:each>}).as(%{<a href="#{img.public_filename}">rails.png</a>})
|
117
|
+
end
|
118
|
+
it "should render the contents for each attachment with limit, offset, and order column" do
|
119
|
+
page.should render(%{<r:attachment:each limit="1" offset="0" by="filename"><r:link/></r:attachment:each>}).as(%{<a href="#{txt.public_filename}">foo.txt</a>})
|
120
|
+
end
|
121
|
+
it "should render the contents for each attachment with limit and order column" do
|
122
|
+
page.should render(%{<r:attachment:each limit="1" by="filename"><r:link/></r:attachment:each>}).as(%{<a href="#{txt.public_filename}">foo.txt</a>})
|
123
|
+
end
|
124
|
+
it "should render the contents for each attachment with offset and order column" do
|
125
|
+
page.should render(%{<r:attachment:each offset="1" by="filename"><r:link/></r:attachment:each>}).as(%{<a href="#{img.public_filename}">rails.png</a>})
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should filter attachments by extension" do
|
129
|
+
page.should render(%{<r:attachment:each extensions="png"><r:filename/></r:attachment:each>}).as("rails.png")
|
130
|
+
end
|
131
|
+
it "should filter attachments by multiple extensions" do
|
132
|
+
page.should render(%{<r:attachment:each extensions="png|txt"><r:filename/></r:attachment:each>}).as("rails.pngfoo.txt")
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should render if attachments" do
|
136
|
+
page.should render(%{<r:if_attachments>content</r:if_attachments>}).as("content")
|
137
|
+
end
|
138
|
+
it "should only render if has the minimum attachments" do
|
139
|
+
page.should render(%{<r:if_attachments min_count="3">content</r:if_attachments>}).as("")
|
140
|
+
end
|
141
|
+
it "should only render if has the minimum attachments with the specified extension" do
|
142
|
+
page.should render(%{<r:if_attachments min_count="1" extensions="png">content</r:if_attachments>}).as("content")
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should render the extension" do
|
146
|
+
page.should render(%{<r:attachment:each><r:extension/></r:attachment:each>}).as("pngtxt")
|
147
|
+
end
|
148
|
+
|
149
|
+
|
150
|
+
it "should render an attachment inherited from the parent" do
|
151
|
+
child_page = pages(:first)
|
152
|
+
child_page.should render('<r:attachment:url name="rails.png" />').as(img.public_filename)
|
153
|
+
child_page.should render('<r:attachment:url name="foo.txt" />').as(txt.public_filename)
|
154
|
+
end
|
155
|
+
|
156
|
+
private
|
157
|
+
|
158
|
+
def page(symbol = nil)
|
159
|
+
if symbol.nil?
|
160
|
+
@page ||= pages(:home)
|
161
|
+
else
|
162
|
+
@page = pages(symbol)
|
163
|
+
end
|
164
|
+
end
|
165
|
+
def img
|
166
|
+
page_attachments(:rails_png)
|
167
|
+
end
|
168
|
+
def txt
|
169
|
+
page_attachments(:foo_txt)
|
170
|
+
end
|
171
|
+
|
172
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe Page, 'page attachments' do
|
4
|
+
dataset :pages, :page_attachments
|
5
|
+
|
6
|
+
it "should include page attachment modules" do
|
7
|
+
Page.included_modules.should include(PageAttachmentTags)
|
8
|
+
Page.included_modules.should include(PageAttachmentAssociations)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should have attachment methods" do
|
12
|
+
Page.instance_methods.should include("attachments")
|
13
|
+
Page.instance_methods.should include("attachments=")
|
14
|
+
Page.instance_methods.should include("attachment")
|
15
|
+
|
16
|
+
Page.instance_methods.should include("tag:attachment")
|
17
|
+
[:content_type, :size, :width, :height, :date, :image, :link, :author, :title, :short_title, :short_description, :short_filename, :description, :position].each do |key|
|
18
|
+
Page.instance_methods.should include("tag:attachment:#{key}")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should receive nested attributes for attachments" do
|
23
|
+
page = pages(:home)
|
24
|
+
page.attachments.length.should == 2
|
25
|
+
file =
|
26
|
+
|
27
|
+
page.attachments_attributes = [{:uploaded_data => fixture_file_upload("#{PageAttachmentsExtension.root}/spec/fixtures/rails.png", 'image/png')}]
|
28
|
+
page.save!
|
29
|
+
page.reload.attachments.length.should == 1
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
unless defined? RADIANT_ROOT
|
2
|
+
ENV["RAILS_ENV"] = "test"
|
3
|
+
case
|
4
|
+
when ENV["RADIANT_ENV_FILE"]
|
5
|
+
require ENV["RADIANT_ENV_FILE"]
|
6
|
+
when File.dirname(__FILE__) =~ %r{vendor/radiant/vendor/extensions}
|
7
|
+
require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../../")}/config/environment"
|
8
|
+
else
|
9
|
+
require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../")}/config/environment"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
require "#{RADIANT_ROOT}/spec/spec_helper"
|
13
|
+
|
14
|
+
require 'webrat'
|
15
|
+
|
16
|
+
Dataset::Resolver.default << (File.dirname(__FILE__) + "/datasets")
|
17
|
+
|
18
|
+
if File.directory?(File.dirname(__FILE__) + "/matchers")
|
19
|
+
Dir[File.dirname(__FILE__) + "/matchers/*.rb"].each {|file| require file }
|
20
|
+
end
|
21
|
+
|
22
|
+
Spec::Runner.configure do |config|
|
23
|
+
# config.use_transactional_fixtures = true
|
24
|
+
# config.use_instantiated_fixtures = false
|
25
|
+
# config.fixture_path = RAILS_ROOT + '/spec/fixtures'
|
26
|
+
|
27
|
+
# You can declare fixtures for each behaviour like this:
|
28
|
+
# describe "...." do
|
29
|
+
# fixtures :table_a, :table_b
|
30
|
+
#
|
31
|
+
# Alternatively, if you prefer to declare them only once, you can
|
32
|
+
# do so here, like so ...
|
33
|
+
#
|
34
|
+
# config.global_fixtures = :table_a, :table_b
|
35
|
+
#
|
36
|
+
# If you declare global fixtures, be aware that they will be declared
|
37
|
+
# for all of your examples, even those that don't use them.
|
38
|
+
config.include Webrat::Matchers, :type => [:views]
|
39
|
+
end
|