alchemy_cms 2.4.1 → 2.5.0.b2
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +1 -1
- data/README.md +18 -17
- data/alchemy_cms.gemspec +5 -10
- data/app/assets/images/alchemy/icons.png +0 -0
- data/app/assets/stylesheets/alchemy/archive.scss +27 -0
- data/app/assets/stylesheets/alchemy/base.scss +0 -51
- data/app/assets/stylesheets/alchemy/elements.scss +37 -2
- data/app/assets/stylesheets/alchemy/icons.scss +4 -0
- data/app/assets/stylesheets/alchemy/modules.scss +4 -0
- data/app/assets/stylesheets/alchemy/sitemap.scss +1 -1
- data/app/assets/stylesheets/alchemy/tables.scss +1 -1
- data/app/assets/stylesheets/alchemy/variables.scss +1 -0
- data/app/controllers/alchemy/admin/pages_controller.rb +1 -0
- data/app/controllers/alchemy/admin/pictures_controller.rb +22 -8
- data/app/controllers/alchemy/admin/resources_controller.rb +1 -1
- data/app/controllers/alchemy/admin/sites_controller.rb +6 -0
- data/app/controllers/alchemy/base_controller.rb +8 -0
- data/app/controllers/alchemy/elements_controller.rb +33 -3
- data/app/controllers/alchemy/messages_controller.rb +47 -40
- data/app/controllers/alchemy/pages_controller.rb +8 -31
- data/app/controllers/alchemy/pictures_controller.rb +64 -30
- data/app/helpers/alchemy/admin/base_helper.rb +7 -0
- data/app/helpers/alchemy/admin/pages_helper.rb +12 -0
- data/app/helpers/alchemy/elements_helper.rb +2 -0
- data/app/helpers/alchemy/pages_helper.rb +30 -10
- data/app/helpers/alchemy/url_helper.rb +1 -0
- data/app/models/alchemy/content.rb +1 -2
- data/app/models/alchemy/element.rb +47 -2
- data/app/models/alchemy/language.rb +27 -14
- data/app/models/alchemy/page.rb +1 -1
- data/app/models/alchemy/picture.rb +46 -41
- data/app/models/alchemy/site.rb +44 -0
- data/app/views/alchemy/admin/elements/_element_head.html.erb +1 -0
- data/app/views/alchemy/admin/languages/index.html.erb +23 -0
- data/app/views/alchemy/admin/pages/edit.html.erb +27 -1
- data/app/views/alchemy/admin/pages/fold.js.erb +1 -0
- data/app/views/alchemy/admin/partials/_upload_form.html.erb +2 -0
- data/app/views/alchemy/admin/pictures/_picture.html.erb +24 -2
- data/app/views/alchemy/admin/pictures/_tag_list.html.erb +5 -4
- data/app/views/alchemy/admin/pictures/create.js.erb +1 -9
- data/app/views/alchemy/admin/pictures/info.html.erb +42 -0
- data/app/views/alchemy/admin/resources/_form.html.erb +0 -2
- data/app/views/alchemy/admin/resources/_resource.html.erb +2 -1
- data/app/views/alchemy/admin/resources/index.html.erb +2 -1
- data/app/views/alchemy/elements/show.html.erb +1 -6
- data/app/views/alchemy/elements/show.js.erb +4 -10
- data/app/views/alchemy/essences/_essence_link_view.html.erb +1 -0
- data/app/views/alchemy/search/_form.html.erb +9 -6
- data/app/views/alchemy/search/_result.html.erb +1 -1
- data/bin/alchemy +13 -120
- data/config/alchemy/config.yml +7 -11
- data/config/alchemy/modules.yml +24 -12
- data/config/authorization_rules.rb +6 -2
- data/config/initializers/dragonfly.rb +20 -0
- data/config/locales/alchemy.de.yml +57 -28
- data/config/locales/alchemy.en.yml +18 -4
- data/config/routes.rb +4 -2
- data/db/migrate/20121121162313_switch_from_fleximage_to_dragonfly.rb +21 -0
- data/db/migrate/20121205155004_create_alchemy_sites.rb +14 -0
- data/db/migrate/20121211163003_add_public_to_alchemy_sites.rb +6 -0
- data/lib/alchemy/capistrano.rb +7 -2
- data/lib/alchemy/ferret_search.rb +84 -0
- data/lib/alchemy/picture_attributes.rb +29 -0
- data/lib/alchemy/seeder.rb +10 -16
- data/lib/alchemy/upgrader.rb +59 -8
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +7 -4
- data/lib/rails/generators/alchemy/deploy_script/templates/deploy.rb.tt +3 -0
- data/lib/rails/generators/alchemy/elements/elements_generator.rb +5 -1
- data/lib/rails/generators/alchemy/page_layouts/page_layouts_generator.rb +1 -0
- data/lib/rails/generators/alchemy/scaffold/files/{pages.html.erb → application.html.erb} +0 -0
- data/lib/rails/generators/alchemy/scaffold/scaffold_generator.rb +11 -20
- data/lib/rails/templates/alchemy.rb +1 -7
- data/lib/tasks/{database.rake → alchemy/db.rake} +1 -1
- data/lib/tasks/{install.rake → alchemy/install.rake} +9 -14
- data/lib/tasks/{upgrade.rake → alchemy/upgrade.rake} +1 -1
- data/spec/controllers/elements_controller_spec.rb +24 -9
- data/spec/controllers/pictures_controller_spec.rb +11 -8
- data/{app → spec/dummy/app}/views/alchemy/elements/_article_editor.html.erb +0 -0
- data/{app → spec/dummy/app}/views/alchemy/elements/_article_view.html.erb +0 -0
- data/{app → spec/dummy/app}/views/alchemy/elements/_headline_view.html.erb +0 -0
- data/{app → spec/dummy/app}/views/alchemy/elements/_news_view.html.erb +0 -0
- data/{app → spec/dummy/app}/views/alchemy/elements/_searchresult_view.html.erb +0 -0
- data/{app → spec/dummy/app}/views/alchemy/page_layouts/_standard.html.erb +0 -0
- data/spec/dummy/config/alchemy/elements.yml +86 -0
- data/spec/dummy/config/alchemy/page_layouts.yml +26 -0
- data/spec/dummy/config/application.rb +1 -1
- data/spec/dummy/db/migrate/20121121162313_switch_from_fleximage_to_dragonfly.rb +21 -0
- data/spec/dummy/db/migrate/20121205155004_create_alchemy_sites.rb +14 -0
- data/spec/dummy/db/migrate/20121211163003_add_public_to_alchemy_sites.rb +6 -0
- data/spec/dummy/db/schema.rb +21 -6
- data/spec/factories.rb +6 -2
- data/spec/integration/translation_integration_spec.rb +4 -18
- data/spec/models/element_spec.rb +4 -4
- data/spec/models/picture_spec.rb +37 -20
- data/spec/models/site_spec.rb +69 -0
- data/spec/routing_spec.rb +115 -115
- data/spec/spec_helper.rb +1 -3
- data/spec/support/alchemy/specs_helpers.rb +4 -4
- data/vendor/assets/javascripts/jquery_plugins/jquery.html5uploader.js +1 -1
- metadata +72 -96
- data/app/assets/stylesheets/alchemy/standard_set.css +0 -440
- data/app/views/alchemy/elements/_bild_editor.html.erb +0 -1
- data/app/views/alchemy/elements/_bild_text_editor.html.erb +0 -7
- data/app/views/alchemy/elements/_bild_text_view.html.erb +0 -9
- data/app/views/alchemy/elements/_bild_view.html.erb +0 -9
- data/app/views/alchemy/elements/_claim_editor.html.erb +0 -1
- data/app/views/alchemy/elements/_claim_view.html.erb +0 -1
- data/app/views/alchemy/elements/_contactform_editor.html.erb +0 -4
- data/app/views/alchemy/elements/_contactform_view.html.erb +0 -78
- data/app/views/alchemy/elements/_download_editor.html.erb +0 -4
- data/app/views/alchemy/elements/_download_view.html.erb +0 -7
- data/app/views/alchemy/elements/_footnote_editor.html.erb +0 -1
- data/app/views/alchemy/elements/_footnote_view.html.erb +0 -5
- data/app/views/alchemy/elements/_header_editor.html.erb +0 -1
- data/app/views/alchemy/elements/_header_view.html.erb +0 -1
- data/app/views/alchemy/elements/_headline_editor.html.erb +0 -1
- data/app/views/alchemy/elements/_image_mosaic_editor.html.erb +0 -3
- data/app/views/alchemy/elements/_image_mosaic_view.html.erb +0 -14
- data/app/views/alchemy/elements/_intro_editor.html.erb +0 -1
- data/app/views/alchemy/elements/_intro_image_text_editor.html.erb +0 -3
- data/app/views/alchemy/elements/_intro_image_text_view.html.erb +0 -16
- data/app/views/alchemy/elements/_intro_view.html.erb +0 -3
- data/app/views/alchemy/elements/_news_editor.html.erb +0 -3
- data/app/views/alchemy/elements/_searchresult_editor.html.erb +0 -4
- data/app/views/alchemy/elements/_sitemap_editor.html.erb +0 -3
- data/app/views/alchemy/elements/_sitemap_view.html.erb +0 -38
- data/app/views/alchemy/elements/_sitename_editor.html.erb +0 -1
- data/app/views/alchemy/elements/_sitename_view.html.erb +0 -1
- data/app/views/alchemy/elements/_subheadline_editor.html.erb +0 -1
- data/app/views/alchemy/elements/_subheadline_view.html.erb +0 -5
- data/app/views/alchemy/elements/_text_editor.html.erb +0 -1
- data/app/views/alchemy/elements/_text_view.html.erb +0 -3
- data/app/views/alchemy/page_layouts/_contact.html.erb +0 -14
- data/app/views/alchemy/page_layouts/_external.html.erb +0 -0
- data/app/views/alchemy/page_layouts/_intro.html.erb +0 -14
- data/app/views/alchemy/page_layouts/_layout_footer.html.erb +0 -14
- data/app/views/alchemy/page_layouts/_layout_header.html.erb +0 -14
- data/app/views/alchemy/page_layouts/_news.html.erb +0 -14
- data/app/views/alchemy/page_layouts/_newsletter_layout.html.erb +0 -1
- data/app/views/alchemy/page_layouts/_search.html.erb +0 -14
- data/app/views/alchemy/pictures/show.gif.flexi +0 -19
- data/app/views/alchemy/pictures/show.jpg.flexi +0 -19
- data/app/views/alchemy/pictures/show.png.flexi +0 -19
- data/app/views/alchemy/pictures/thumbnail.png.flexi +0 -13
- data/app/views/alchemy/pictures/zoom.jpg.flexi +0 -3
- data/app/views/alchemy/pictures/zoom.png.flexi +0 -3
- data/app/views/layouts/alchemy/pages.html.erb +0 -51
- data/config/alchemy/elements.yml +0 -274
- data/config/alchemy/page_layouts.yml +0 -75
- data/config/asset_packages.yml +0 -30
- data/config/initializers/localeapp.rb +0 -9
- data/lib/rails/generators/alchemy/plugin/files/translation.pot +0 -3
- data/lib/rails/generators/alchemy/plugin/files/translation_de.po +0 -3
- data/lib/rails/generators/alchemy/plugin/files/translation_en.po +0 -3
- data/lib/rails/generators/alchemy/plugin/plugin_generator.rb +0 -37
- data/lib/rails/generators/alchemy/plugin/templates/authorization_rules.rb +0 -34
- data/lib/rails/generators/alchemy/plugin/templates/config.yml +0 -30
- data/lib/rails/generators/alchemy/plugin/templates/init.rb +0 -1
- data/lib/rails/generators/alchemy/plugin/templates/plugin.rb +0 -0
- data/lib/rails/generators/alchemy/plugin/templates/routes.rb +0 -10
- data/lib/tasks/fleximage.rake +0 -154
- data/spec/dummy/app/views/layouts/.gitkeep +0 -0
@@ -4,34 +4,33 @@ describe "Translation integration" do
|
|
4
4
|
|
5
5
|
context "in admin backend" do
|
6
6
|
|
7
|
-
|
7
|
+
before do
|
8
8
|
authorize_as_admin
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should be possible to set the locale of the admin backend via params" do
|
9
12
|
visit admin_dashboard_path(:locale => :de)
|
10
13
|
page.should have_content('Willkommen')
|
11
14
|
end
|
12
15
|
|
13
16
|
it "should store the current locale in the session" do
|
14
|
-
authorize_as_admin
|
15
17
|
visit admin_dashboard_path(:locale => :de)
|
16
18
|
visit admin_dashboard_path
|
17
19
|
page.should have_content('Willkommen')
|
18
20
|
end
|
19
21
|
|
20
22
|
it "should be possible to change the current locale in the session" do
|
21
|
-
authorize_as_admin
|
22
23
|
visit admin_dashboard_path(:locale => :de)
|
23
24
|
visit admin_dashboard_path(:locale => :en)
|
24
25
|
page.should have_content('Welcome')
|
25
26
|
end
|
26
27
|
|
27
28
|
it "should not be possible to switch the locale of the admin backend to an unknown locale" do
|
28
|
-
authorize_as_admin
|
29
29
|
visit admin_dashboard_path(:locale => :ko)
|
30
30
|
page.should have_content('Welcome')
|
31
31
|
end
|
32
32
|
|
33
33
|
it "should use the current users language setting if no other parameter is given" do
|
34
|
-
authorize_as_admin(locale = nil)
|
35
34
|
Alchemy::User.first.update_attributes(:language => :de)
|
36
35
|
visit admin_dashboard_path
|
37
36
|
page.should have_content('Willkommen')
|
@@ -39,17 +38,4 @@ describe "Translation integration" do
|
|
39
38
|
|
40
39
|
end
|
41
40
|
|
42
|
-
context "with translated header" do
|
43
|
-
|
44
|
-
before do
|
45
|
-
Capybara.current_driver = :rack_test_translated_header
|
46
|
-
end
|
47
|
-
|
48
|
-
it "should use the browsers language setting if no other parameter is given" do
|
49
|
-
visit root_path
|
50
|
-
::I18n.locale.should == :de
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
41
|
end
|
data/spec/models/element_spec.rb
CHANGED
@@ -102,16 +102,16 @@ module Alchemy
|
|
102
102
|
|
103
103
|
context "no description files are found" do
|
104
104
|
|
105
|
-
before
|
106
|
-
FileUtils.mv(File.join(File.dirname(__FILE__), '
|
105
|
+
before do
|
106
|
+
FileUtils.mv(File.join(File.dirname(__FILE__), '../dummy/config/alchemy/elements.yml'), File.join(File.dirname(__FILE__), '../dummy/config/alchemy/elements.yml.bak'))
|
107
107
|
end
|
108
108
|
|
109
109
|
it "should raise an error" do
|
110
110
|
expect { Element.descriptions }.to raise_error(LoadError)
|
111
111
|
end
|
112
112
|
|
113
|
-
after
|
114
|
-
FileUtils.mv(File.join(File.dirname(__FILE__), '
|
113
|
+
after do
|
114
|
+
FileUtils.mv(File.join(File.dirname(__FILE__), '../dummy/config/alchemy/elements.yml.bak'), File.join(File.dirname(__FILE__), '../dummy/config/alchemy/elements.yml'))
|
115
115
|
end
|
116
116
|
|
117
117
|
end
|
data/spec/models/picture_spec.rb
CHANGED
@@ -12,23 +12,25 @@ module Alchemy
|
|
12
12
|
picture.should be_valid
|
13
13
|
end
|
14
14
|
|
15
|
+
it "is not valid without image file" do
|
16
|
+
picture = Picture.new
|
17
|
+
picture.should_not be_valid
|
18
|
+
end
|
19
|
+
|
15
20
|
describe '#suffix' do
|
16
21
|
|
17
22
|
it "should return the suffix of original filename" do
|
18
|
-
pic = stub_model(Picture, :
|
23
|
+
pic = stub_model(Picture, :image_file_name => 'kitten.JPG')
|
24
|
+
pic.stub(:image_file).and_return(OpenStruct.new({:ext => 'jpg'}))
|
19
25
|
pic.suffix.should == "jpg"
|
20
26
|
end
|
21
27
|
|
22
28
|
context "image has no suffix" do
|
23
|
-
|
24
|
-
before(:each) do
|
25
|
-
@pic = stub_model(Picture, :image_filename => 'kitten')
|
26
|
-
end
|
27
|
-
|
28
29
|
it "should return empty string" do
|
29
|
-
|
30
|
+
pic = stub_model(Picture, :image_file_name => 'kitten')
|
31
|
+
pic.stub(:image_file).and_return(OpenStruct.new({:ext => ''}))
|
32
|
+
pic.suffix.should == ""
|
30
33
|
end
|
31
|
-
|
32
34
|
end
|
33
35
|
|
34
36
|
end
|
@@ -36,27 +38,24 @@ module Alchemy
|
|
36
38
|
describe '#humanized_name' do
|
37
39
|
|
38
40
|
it "should return a humanized version of original filename" do
|
39
|
-
pic = stub_model(Picture, :
|
41
|
+
pic = stub_model(Picture, :image_file_name => 'cute_kitten.JPG')
|
42
|
+
pic.stub(:image_file).and_return(OpenStruct.new({:ext => 'jpg'}))
|
40
43
|
pic.humanized_name.should == "Cute kitten"
|
41
44
|
end
|
42
45
|
|
43
46
|
it "should not remove incidents of suffix from filename" do
|
44
|
-
pic = stub_model(Picture, :
|
47
|
+
pic = stub_model(Picture, :image_file_name => 'cute_kitten_mo.jpgi.JPG')
|
48
|
+
pic.stub(:image_file).and_return(OpenStruct.new({:ext => 'jpg'}))
|
45
49
|
pic.humanized_name.should == "Cute kitten mo.jpgi"
|
46
50
|
pic.humanized_name.should_not == "Cute kitten moi"
|
47
51
|
end
|
48
52
|
|
49
53
|
context "image has no suffix" do
|
50
|
-
|
51
|
-
before(:each) do
|
52
|
-
@pic = stub_model(Picture, :image_filename => 'cute_kitten')
|
53
|
-
@pic.stub!(:suffix).and_return("")
|
54
|
-
end
|
55
|
-
|
56
54
|
it "should return humanized name" do
|
57
|
-
|
55
|
+
pic = stub_model(Picture, :image_file_name => 'cute_kitten')
|
56
|
+
pic.stub(:suffix).and_return("")
|
57
|
+
pic.humanized_name.should == "Cute kitten"
|
58
58
|
end
|
59
|
-
|
60
59
|
end
|
61
60
|
|
62
61
|
end
|
@@ -76,11 +75,15 @@ module Alchemy
|
|
76
75
|
end
|
77
76
|
|
78
77
|
it "should convert crop true value into string" do
|
79
|
-
|
80
|
-
digest = Digest::SHA1.hexdigest(p)[0..15]
|
78
|
+
digest = PictureAttributes.secure({:id => @pic.id, :crop => 'crop'})
|
81
79
|
@pic.security_token(:crop => true).should == digest
|
82
80
|
end
|
83
81
|
|
82
|
+
it "should always include picture id" do
|
83
|
+
digest = PictureAttributes.secure({:id => @pic.id})
|
84
|
+
@pic.security_token.should == digest
|
85
|
+
end
|
86
|
+
|
84
87
|
end
|
85
88
|
|
86
89
|
describe '.last_upload' do
|
@@ -119,5 +122,19 @@ module Alchemy
|
|
119
122
|
|
120
123
|
end
|
121
124
|
|
125
|
+
describe '#destroy' do
|
126
|
+
context "a picture that is assigned in an essence" do
|
127
|
+
|
128
|
+
let(:essence_picture) { EssencePicture.create }
|
129
|
+
let(:picture) { FactoryGirl.create :picture }
|
130
|
+
before { essence_picture.update_attributes(:picture_id => picture.id) }
|
131
|
+
|
132
|
+
it "should raise error message" do
|
133
|
+
expect { picture.destroy }.to raise_error PictureInUseError
|
134
|
+
end
|
135
|
+
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
122
139
|
end
|
123
140
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Alchemy
|
4
|
+
describe Site do
|
5
|
+
let(:site) { FactoryGirl.create(:site) }
|
6
|
+
let(:another_site) { FactoryGirl.create(:site, name: 'Another Site', host: 'another.com') }
|
7
|
+
|
8
|
+
describe 'new instances' do
|
9
|
+
subject { FactoryGirl.build(:site) }
|
10
|
+
|
11
|
+
it 'should start out with on languages' do
|
12
|
+
subject.languages.should be_empty
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'when being saved' do
|
16
|
+
context 'when it has no languages yet' do
|
17
|
+
it 'should automatically create a default language' do
|
18
|
+
subject.save!
|
19
|
+
subject.languages.count.should == 1
|
20
|
+
subject.languages.first.should be_default
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'when it already has a language' do
|
25
|
+
let(:language) { FactoryGirl.build(:language, site: nil) }
|
26
|
+
before { subject.languages << language }
|
27
|
+
|
28
|
+
it 'should not create any additional languages' do
|
29
|
+
subject.languages.should == [language]
|
30
|
+
|
31
|
+
expect { subject.save! }.
|
32
|
+
to_not change(subject, "languages")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '.current' do
|
39
|
+
context 'when set to a site' do
|
40
|
+
before { Site.current = site }
|
41
|
+
specify "Language should be scoped to that site"
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'when set to nil' do
|
45
|
+
before { Site.current = nil }
|
46
|
+
specify "Language should not be scoped to a site"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#current?' do
|
51
|
+
subject { site.current? }
|
52
|
+
|
53
|
+
context 'when Site.current is set to the same site' do
|
54
|
+
before { Site.current = site }
|
55
|
+
it { should be_true }
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'when Site.current is set to nil' do
|
59
|
+
before { Site.current = nil }
|
60
|
+
it { should be_false }
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'when Site.current is set to a different site' do
|
64
|
+
before { Site.current = another_site }
|
65
|
+
it { should be_false }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/spec/routing_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "The Routing", :type => :routing do
|
4
4
|
|
5
|
-
before { @routes = Alchemy::Engine.routes }
|
5
|
+
before(:each) { @routes = Alchemy::Engine.routes }
|
6
6
|
|
7
7
|
context "for downloads" do
|
8
8
|
|
@@ -10,44 +10,44 @@ describe "The Routing", :type => :routing do
|
|
10
10
|
{
|
11
11
|
:get => "/attachment/32/download/Presseveranstaltung.pdf"
|
12
12
|
}.should route_to(
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
:controller => "alchemy/attachments",
|
14
|
+
:action => "download",
|
15
|
+
:id => "32",
|
16
|
+
:name => "Presseveranstaltung",
|
17
|
+
:format => "pdf"
|
18
|
+
)
|
19
19
|
end
|
20
20
|
|
21
21
|
it "should have a route for legacy Alchemy 1.x downloads" do
|
22
22
|
{
|
23
23
|
:get => "/attachment/32/download?name=Presseveranstaltung.pdf"
|
24
24
|
}.should route_to(
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
:controller => "alchemy/attachments",
|
26
|
+
:action => "download",
|
27
|
+
:id => "32"
|
28
|
+
)
|
29
29
|
end
|
30
30
|
|
31
31
|
it "should have a route for legacy washAPP downloads" do
|
32
32
|
{
|
33
33
|
:get => "/wa_files/download/11"
|
34
34
|
}.should route_to(
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
35
|
+
:controller => "alchemy/attachments",
|
36
|
+
:action => "download",
|
37
|
+
:id => "11"
|
38
|
+
)
|
39
39
|
end
|
40
40
|
|
41
41
|
it "should have a route for legacy WebMate downloads" do
|
42
42
|
{
|
43
43
|
:get => "/uploads/files/0000/0028/Pressetext.pdf"
|
44
44
|
}.should route_to(
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
45
|
+
:controller => "alchemy/attachments",
|
46
|
+
:action => "download",
|
47
|
+
:id => "0028",
|
48
|
+
:name => "Pressetext",
|
49
|
+
:suffix => "pdf"
|
50
|
+
)
|
51
51
|
end
|
52
52
|
|
53
53
|
end
|
@@ -60,11 +60,11 @@ describe "The Routing", :type => :routing do
|
|
60
60
|
{
|
61
61
|
:get => "/products/my-product"
|
62
62
|
}.should route_to(
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
63
|
+
:controller => "alchemy/pages",
|
64
|
+
:action => "show",
|
65
|
+
:level1 => "products",
|
66
|
+
:urlname => "my-product"
|
67
|
+
)
|
68
68
|
end
|
69
69
|
|
70
70
|
context "and language" do
|
@@ -73,12 +73,12 @@ describe "The Routing", :type => :routing do
|
|
73
73
|
{
|
74
74
|
:get => "/de/products/my-product"
|
75
75
|
}.should route_to(
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
76
|
+
:controller => "alchemy/pages",
|
77
|
+
:action => "show",
|
78
|
+
:level1 => "products",
|
79
|
+
:urlname => "my-product",
|
80
|
+
:lang => "de"
|
81
|
+
)
|
82
82
|
end
|
83
83
|
|
84
84
|
end
|
@@ -91,12 +91,12 @@ describe "The Routing", :type => :routing do
|
|
91
91
|
{
|
92
92
|
:get => "/catalog/products/my-product"
|
93
93
|
}.should route_to(
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
94
|
+
:controller => "alchemy/pages",
|
95
|
+
:action => "show",
|
96
|
+
:level1 => "catalog",
|
97
|
+
:level2 => "products",
|
98
|
+
:urlname => "my-product"
|
99
|
+
)
|
100
100
|
end
|
101
101
|
|
102
102
|
context "and language" do
|
@@ -105,13 +105,13 @@ describe "The Routing", :type => :routing do
|
|
105
105
|
{
|
106
106
|
:get => "/de/catalog/products/my-product"
|
107
107
|
}.should route_to(
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
108
|
+
:controller => "alchemy/pages",
|
109
|
+
:action => "show",
|
110
|
+
:level1 => "catalog",
|
111
|
+
:level2 => "products",
|
112
|
+
:urlname => "my-product",
|
113
|
+
:lang => "de"
|
114
|
+
)
|
115
115
|
end
|
116
116
|
|
117
117
|
end
|
@@ -124,13 +124,13 @@ describe "The Routing", :type => :routing do
|
|
124
124
|
{
|
125
125
|
:get => "/2011/12/08/my-post"
|
126
126
|
}.should route_to(
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
127
|
+
:controller => "alchemy/pages",
|
128
|
+
:action => "show",
|
129
|
+
:level1 => "2011",
|
130
|
+
:level2 => "12",
|
131
|
+
:level3 => "08",
|
132
|
+
:urlname => "my-post"
|
133
|
+
)
|
134
134
|
end
|
135
135
|
|
136
136
|
context "and language" do
|
@@ -139,14 +139,14 @@ describe "The Routing", :type => :routing do
|
|
139
139
|
{
|
140
140
|
:get => "/de/2011/12/08/my-post"
|
141
141
|
}.should route_to(
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
142
|
+
:controller => "alchemy/pages",
|
143
|
+
:action => "show",
|
144
|
+
:level1 => "2011",
|
145
|
+
:level2 => "12",
|
146
|
+
:level3 => "08",
|
147
|
+
:urlname => "my-post",
|
148
|
+
:lang => "de"
|
149
|
+
)
|
150
150
|
end
|
151
151
|
|
152
152
|
end
|
@@ -161,97 +161,97 @@ describe "The Routing", :type => :routing do
|
|
161
161
|
{
|
162
162
|
:get => "/pictures/3/show/900x300/kitten.jpg"
|
163
163
|
}.should route_to(
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
164
|
+
:controller => "alchemy/pictures",
|
165
|
+
:action => "show",
|
166
|
+
:id => "3",
|
167
|
+
:size => "900x300",
|
168
|
+
:name => "kitten",
|
169
|
+
:format => "jpg"
|
170
|
+
)
|
171
171
|
end
|
172
172
|
|
173
173
|
it "should route to cropped show action" do
|
174
174
|
{
|
175
175
|
:get => "/pictures/3/show/900x300/crop/kitten.jpg"
|
176
176
|
}.should route_to(
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
177
|
+
:controller => "alchemy/pictures",
|
178
|
+
:action => "show",
|
179
|
+
:id => "3",
|
180
|
+
:size => "900x300",
|
181
|
+
:crop => "crop",
|
182
|
+
:name => "kitten",
|
183
|
+
:format => "jpg"
|
184
|
+
)
|
185
185
|
end
|
186
186
|
|
187
187
|
it "should route to cropped mask show action" do
|
188
188
|
get(
|
189
189
|
"/pictures/3/show/300x300/crop/200x50/100x100/kitten.jpg"
|
190
190
|
).should route_to(
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
191
|
+
:controller => "alchemy/pictures",
|
192
|
+
:action => "show",
|
193
|
+
:id => "3",
|
194
|
+
:size => "300x300",
|
195
|
+
:crop => "crop",
|
196
|
+
:crop_from => "200x50",
|
197
|
+
:crop_size => "100x100",
|
198
|
+
:name => "kitten",
|
199
|
+
:format => "jpg"
|
200
|
+
)
|
201
201
|
end
|
202
202
|
|
203
203
|
it "should route to thumbnail action" do
|
204
204
|
get(
|
205
205
|
"/pictures/3/thumbnails/small/kitten.jpg"
|
206
206
|
).should route_to(
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
207
|
+
:controller => "alchemy/pictures",
|
208
|
+
:action => "thumbnail",
|
209
|
+
:id => "3",
|
210
|
+
:size => "small",
|
211
|
+
:name => "kitten",
|
212
|
+
:format => "jpg"
|
213
|
+
)
|
214
214
|
end
|
215
215
|
|
216
216
|
it "should route to cropped thumbnail action" do
|
217
217
|
get(
|
218
218
|
"/pictures/3/thumbnails/small/crop/kitten.jpg"
|
219
219
|
).should route_to(
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
220
|
+
:controller => "alchemy/pictures",
|
221
|
+
:action => "thumbnail",
|
222
|
+
:id => "3",
|
223
|
+
:crop => "crop",
|
224
|
+
:size => "small",
|
225
|
+
:name => "kitten",
|
226
|
+
:format => "jpg"
|
227
|
+
)
|
228
228
|
end
|
229
229
|
|
230
230
|
it "should route to cropped and masked thumbnail" do
|
231
231
|
get(
|
232
232
|
"/pictures/3/thumbnails/small/0x0/200x200/kitten.jpg"
|
233
233
|
).should route_to(
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
234
|
+
:controller => "alchemy/pictures",
|
235
|
+
:action => "thumbnail",
|
236
|
+
:id => "3",
|
237
|
+
:crop_from => "0x0",
|
238
|
+
:crop_size => "200x200",
|
239
|
+
:size => "small",
|
240
|
+
:name => "kitten",
|
241
|
+
:format => "jpg"
|
242
|
+
)
|
243
243
|
end
|
244
244
|
|
245
245
|
it "should route to zoomed picture" do
|
246
246
|
get(
|
247
247
|
"/pictures/3/zoom/kitten.jpg"
|
248
248
|
).should route_to(
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
249
|
+
:controller => "alchemy/pictures",
|
250
|
+
:action => "zoom",
|
251
|
+
:id => "3",
|
252
|
+
:name => "kitten",
|
253
|
+
:format => "jpg"
|
254
|
+
)
|
255
255
|
end
|
256
256
|
|
257
257
|
end
|