radiant-layouts-extension 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/MIT-LICENSE +27 -0
- data/README.md +81 -0
- data/Rakefile +125 -0
- data/VERSION +1 -0
- data/app/models/rails_page.rb +39 -0
- data/app/views/layouts/radiant.html.haml +1 -0
- data/layouts_extension.rb +16 -0
- data/lib/nested_layouts.rb +2 -0
- data/lib/nested_layouts/tags.rb +127 -0
- data/lib/share_layouts.rb +2 -0
- data/lib/share_layouts/helper.rb +39 -0
- data/lib/share_layouts/radiant_layouts.rb +21 -0
- data/lib/tasks/layouts_extension_tasks.rake +34 -0
- data/radiant-layouts-extension.gemspec +94 -0
- data/spec/controllers/nested_layouts_spec.rb +45 -0
- data/spec/controllers/share_layouts_spec.rb +119 -0
- data/spec/datasets/nested_layouts_dataset.rb +38 -0
- data/spec/datasets/share_layouts_dataset.rb +38 -0
- data/spec/helpers/share_layouts_helper_spec.rb +168 -0
- data/spec/lib/nested_layouts/tags_spec.rb +91 -0
- data/spec/lib/share_layouts_extension_spec.rb +25 -0
- data/spec/models/rails_page_spec.rb +63 -0
- data/spec/rcov.opts +2 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +22 -0
- metadata +211 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
module ShareLayouts::RadiantLayouts
|
2
|
+
|
3
|
+
def self.included(base)
|
4
|
+
base.extend ClassMethods
|
5
|
+
end
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def radiant_layout(name=nil, options={}, &block)
|
9
|
+
raise ArgumentError, "A layout name or block is required!" unless name || block
|
10
|
+
write_inheritable_attribute 'radiant_layout', name || block
|
11
|
+
before_filter :set_radiant_layout
|
12
|
+
layout 'radiant', options
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def set_radiant_layout
|
17
|
+
@radiant_layout = self.class.read_inheritable_attribute 'radiant_layout'
|
18
|
+
@radiant_layout = @radiant_layout.call(self) if @radiant_layout.is_a? Proc
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
namespace :radiant do
|
2
|
+
namespace :extensions do
|
3
|
+
namespace :layouts do
|
4
|
+
|
5
|
+
desc "Runs the migration of the Shop Products extension and its dependancies"
|
6
|
+
task :migrate => :environment do
|
7
|
+
puts "radiant:layouts:migrate - Nohing to do"
|
8
|
+
end
|
9
|
+
|
10
|
+
desc "Copies public assets of the Shop Products to the instance public/ directory."
|
11
|
+
task :update => :environment do
|
12
|
+
puts "radiant:layouts:update - Nohing to do"
|
13
|
+
end
|
14
|
+
|
15
|
+
desc "Syncs all available translations for this ext to the English ext master"
|
16
|
+
task :sync => :environment do
|
17
|
+
# The main translation root, basically where English is kept
|
18
|
+
language_root = LayoutsExtension.root + "/config/locales"
|
19
|
+
words = TranslationSupport.get_translation_keys(language_root)
|
20
|
+
|
21
|
+
Dir["#{language_root}/*.yml"].each do |filename|
|
22
|
+
next if filename.match('_available_tags')
|
23
|
+
basename = File.basename(filename, '.yml')
|
24
|
+
puts "Syncing #{basename}"
|
25
|
+
(comments, other) = TranslationSupport.read_file(filename, basename)
|
26
|
+
words.each { |k,v| other[k] ||= words[k] } # Initializing hash variable as empty if it does not exist
|
27
|
+
other.delete_if { |k,v| !words[k] } # Remove if not defined in en.yml
|
28
|
+
TranslationSupport.write_file(filename, basename, comments, other)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,94 @@
|
|
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-layouts-extension}
|
8
|
+
s.version = "0.9.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Dirk Kelly"]
|
12
|
+
s.date = %q{2010-08-30}
|
13
|
+
s.description = %q{Provides extensions to standard layouts, including nesting of layouts within each other and sharing radiant layouts with rails controllers}
|
14
|
+
s.email = %q{dk@squaretalent.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README.md"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
".gitignore",
|
20
|
+
"MIT-LICENSE",
|
21
|
+
"README.md",
|
22
|
+
"Rakefile",
|
23
|
+
"VERSION",
|
24
|
+
"app/models/rails_page.rb",
|
25
|
+
"app/views/layouts/radiant.html.haml",
|
26
|
+
"layouts_extension.rb",
|
27
|
+
"lib/nested_layouts.rb",
|
28
|
+
"lib/nested_layouts/tags.rb",
|
29
|
+
"lib/share_layouts.rb",
|
30
|
+
"lib/share_layouts/helper.rb",
|
31
|
+
"lib/share_layouts/radiant_layouts.rb",
|
32
|
+
"lib/tasks/layouts_extension_tasks.rake",
|
33
|
+
"radiant-layouts-extension.gemspec",
|
34
|
+
"spec/controllers/nested_layouts_spec.rb",
|
35
|
+
"spec/controllers/share_layouts_spec.rb",
|
36
|
+
"spec/datasets/nested_layouts_dataset.rb",
|
37
|
+
"spec/datasets/share_layouts_dataset.rb",
|
38
|
+
"spec/helpers/share_layouts_helper_spec.rb",
|
39
|
+
"spec/lib/nested_layouts/tags_spec.rb",
|
40
|
+
"spec/lib/share_layouts_extension_spec.rb",
|
41
|
+
"spec/models/rails_page_spec.rb",
|
42
|
+
"spec/rcov.opts",
|
43
|
+
"spec/spec.opts",
|
44
|
+
"spec/spec_helper.rb"
|
45
|
+
]
|
46
|
+
s.homepage = %q{http://github.com/squaretalent/radiant-layouts-extension}
|
47
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
48
|
+
s.require_paths = ["lib"]
|
49
|
+
s.rubygems_version = %q{1.3.7}
|
50
|
+
s.summary = %q{Provides extensions to standard layouts, including nesting and sharing}
|
51
|
+
s.test_files = [
|
52
|
+
"spec/controllers/nested_layouts_spec.rb",
|
53
|
+
"spec/controllers/share_layouts_spec.rb",
|
54
|
+
"spec/datasets/nested_layouts_dataset.rb",
|
55
|
+
"spec/datasets/share_layouts_dataset.rb",
|
56
|
+
"spec/helpers/share_layouts_helper_spec.rb",
|
57
|
+
"spec/lib/nested_layouts/tags_spec.rb",
|
58
|
+
"spec/lib/share_layouts_extension_spec.rb",
|
59
|
+
"spec/models/rails_page_spec.rb",
|
60
|
+
"spec/spec_helper.rb"
|
61
|
+
]
|
62
|
+
|
63
|
+
if s.respond_to? :specification_version then
|
64
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
65
|
+
s.specification_version = 3
|
66
|
+
|
67
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
68
|
+
s.add_development_dependency(%q<rspec>, [">= 1.3.0"])
|
69
|
+
s.add_development_dependency(%q<rspec-rails>, [">= 1.3.2"])
|
70
|
+
s.add_development_dependency(%q<cucumber>, [">= 0.8.5"])
|
71
|
+
s.add_development_dependency(%q<cucumber-rails>, [">= 0.3.2"])
|
72
|
+
s.add_development_dependency(%q<database_cleaner>, [">= 0.4.3"])
|
73
|
+
s.add_development_dependency(%q<ruby-debug>, [">= 0.10.3"])
|
74
|
+
s.add_development_dependency(%q<webrat>, [">= 0.10.3"])
|
75
|
+
else
|
76
|
+
s.add_dependency(%q<rspec>, [">= 1.3.0"])
|
77
|
+
s.add_dependency(%q<rspec-rails>, [">= 1.3.2"])
|
78
|
+
s.add_dependency(%q<cucumber>, [">= 0.8.5"])
|
79
|
+
s.add_dependency(%q<cucumber-rails>, [">= 0.3.2"])
|
80
|
+
s.add_dependency(%q<database_cleaner>, [">= 0.4.3"])
|
81
|
+
s.add_dependency(%q<ruby-debug>, [">= 0.10.3"])
|
82
|
+
s.add_dependency(%q<webrat>, [">= 0.10.3"])
|
83
|
+
end
|
84
|
+
else
|
85
|
+
s.add_dependency(%q<rspec>, [">= 1.3.0"])
|
86
|
+
s.add_dependency(%q<rspec-rails>, [">= 1.3.2"])
|
87
|
+
s.add_dependency(%q<cucumber>, [">= 0.8.5"])
|
88
|
+
s.add_dependency(%q<cucumber-rails>, [">= 0.3.2"])
|
89
|
+
s.add_dependency(%q<database_cleaner>, [">= 0.4.3"])
|
90
|
+
s.add_dependency(%q<ruby-debug>, [">= 0.10.3"])
|
91
|
+
s.add_dependency(%q<webrat>, [">= 0.10.3"])
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'spec/spec_helper'
|
2
|
+
|
3
|
+
class ControllerWithRadiantLayout < ApplicationController
|
4
|
+
radiant_layout 'main'
|
5
|
+
end
|
6
|
+
|
7
|
+
class ControllerWithRadiantLayoutBlock < ApplicationController
|
8
|
+
radiant_layout {|c| c.action_name == "index" ? "main" : "utf8"}
|
9
|
+
end
|
10
|
+
|
11
|
+
describe ControllerWithRadiantLayout do
|
12
|
+
dataset :layouts
|
13
|
+
|
14
|
+
before(:each) do
|
15
|
+
#layouts(:radiant)
|
16
|
+
layouts(:main)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should have radiant layout attribute" do
|
20
|
+
ControllerWithRadiantLayout.read_inheritable_attribute('radiant_layout').should == 'main'
|
21
|
+
# This doesn't seem to work anymore, but calling "active_layout" on an instance still correctly returns "layouts/radiant.rhtml"
|
22
|
+
#ControllerWithRadiantLayout.read_inheritable_attribute('layout').should == 'radiant'
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should return 'radiant' when read_inheritable_attribute('layout') is called"
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
describe ControllerWithRadiantLayoutBlock do
|
30
|
+
dataset :layouts
|
31
|
+
|
32
|
+
before(:each) do
|
33
|
+
layouts(:main)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should have radiant layout block" do
|
37
|
+
ControllerWithRadiantLayoutBlock.read_inheritable_attribute('radiant_layout').should be_kind_of(Proc)
|
38
|
+
# This doesn't seem to work anymore, but calling "active_layout" on an instance still correctly returns "layouts/radiant.rhtml"
|
39
|
+
#ControllerWithRadiantLayoutBlock.read_inheritable_attribute('layout').should == 'radiant'
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should return 'radiant' when read_inheritable_attribute('layout') is called"
|
43
|
+
|
44
|
+
end
|
45
|
+
|
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'spec/spec_helper'
|
2
|
+
|
3
|
+
module TestShareLayoutsTags
|
4
|
+
include Radiant::Taggable
|
5
|
+
|
6
|
+
desc 'some tag'
|
7
|
+
tag 'test_has_request' do |tag|
|
8
|
+
tag.locals.page.request.class
|
9
|
+
end
|
10
|
+
|
11
|
+
desc 'some tag'
|
12
|
+
tag 'test_has_response' do |tag|
|
13
|
+
tag.locals.page.response.class
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
Page.send(:include, TestShareLayoutsTags)
|
19
|
+
|
20
|
+
class ShareController < ApplicationController
|
21
|
+
radiant_layout 'Default'
|
22
|
+
|
23
|
+
no_login_required
|
24
|
+
|
25
|
+
def normal_erb_in_radiant_layout
|
26
|
+
@name = 'Chester McTester'
|
27
|
+
render :inline => 'Hello there, <%= @name %>', :layout => true
|
28
|
+
end
|
29
|
+
|
30
|
+
def normal_erb_with_no_layout
|
31
|
+
@name = 'Chester McTester'
|
32
|
+
render :inline => 'Hello there, <%= @name %>', :layout => false
|
33
|
+
end
|
34
|
+
|
35
|
+
def normal_erb_with_different_radiant_layout
|
36
|
+
@radiant_layout = 'Different'
|
37
|
+
|
38
|
+
@name = 'Chester McTester'
|
39
|
+
render :inline => 'Hello there, <%= @name %>', :layout => true
|
40
|
+
end
|
41
|
+
|
42
|
+
def normal_erb_with_different_erb_layout
|
43
|
+
@name = 'Chester McTester'
|
44
|
+
render :inline => 'Hello there, <%= @name %>', :layout => 'application'
|
45
|
+
end
|
46
|
+
|
47
|
+
def with_request_layout
|
48
|
+
@radiant_layout = 'Test Request'
|
49
|
+
|
50
|
+
render :inline => '', :layout => true
|
51
|
+
end
|
52
|
+
|
53
|
+
def with_response_layout
|
54
|
+
@radiant_layout = 'Test Response'
|
55
|
+
|
56
|
+
render :inline => '', :layout => true
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe ShareController do
|
61
|
+
dataset :layouts
|
62
|
+
|
63
|
+
before(:each) do
|
64
|
+
@controller = ShareController.new
|
65
|
+
@request = ActionController::TestRequest.new
|
66
|
+
@response = ActionController::TestResponse.new
|
67
|
+
|
68
|
+
@erb_content = "Hello there, Chester McTester"
|
69
|
+
|
70
|
+
layout = "Content: <r:content />"
|
71
|
+
Layout.create!(:name => 'Default', :content => layout)
|
72
|
+
|
73
|
+
layout = "Different: <r:content />"
|
74
|
+
Layout.create!(:name => 'Different', :content => layout)
|
75
|
+
|
76
|
+
layout = "Request: <r:test_has_request />\nContent: <r:content />"
|
77
|
+
Layout.create!(:name => 'Test Request', :content => layout)
|
78
|
+
|
79
|
+
layout = "Response: <r:test_has_response />\nContent: <r:content />"
|
80
|
+
Layout.create!(:name => 'Test Response', :content => layout)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should render normal erb in radiant layout" do
|
84
|
+
get :normal_erb_in_radiant_layout
|
85
|
+
response.should be_success
|
86
|
+
@response.body.strip.should == "Content: #{@erb_content}"
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should normal_erb_with_no_layout" do
|
90
|
+
get :normal_erb_with_no_layout
|
91
|
+
response.should be_success
|
92
|
+
@response.body.strip.should == @erb_content
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should normal_erb_with_different_radiant_layout" do
|
96
|
+
get :normal_erb_with_different_radiant_layout
|
97
|
+
response.should be_success
|
98
|
+
@response.body.strip.should == "Different: #{@erb_content}"
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should normal_erb_with_different_erb_layout" do
|
102
|
+
get :normal_erb_with_different_erb_layout
|
103
|
+
response.should be_success
|
104
|
+
@response.body.should =~ /#{@erb_content}/
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should should_assign_request" do
|
108
|
+
get :with_request_layout
|
109
|
+
response.should be_success
|
110
|
+
@response.body.should =~ /Request: .*Request$/
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should should_assign_response" do
|
114
|
+
get :with_response_layout
|
115
|
+
response.should be_success
|
116
|
+
@response.body.should =~ /Response: .*Response$/
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
class NestedLayoutsDataset < Dataset::Base
|
2
|
+
def load
|
3
|
+
create_record :layout, :parent,
|
4
|
+
:name => 'parent',
|
5
|
+
:content => <<-CONTENT
|
6
|
+
<html>
|
7
|
+
<body class="<r:layout />">
|
8
|
+
<r:content_for_layout />
|
9
|
+
</body>
|
10
|
+
</html>
|
11
|
+
CONTENT
|
12
|
+
|
13
|
+
create_record :layout, :child,
|
14
|
+
:name => 'child',
|
15
|
+
:content => <<-CONTENT
|
16
|
+
<r:inside_layout name='parent'>
|
17
|
+
<h1>child</h1>
|
18
|
+
</r:inside_layout>
|
19
|
+
CONTENT
|
20
|
+
|
21
|
+
create_record :page, :parent_layout,
|
22
|
+
:title => 'child layout',
|
23
|
+
:layout_id => layouts(:parent).id,
|
24
|
+
:breadcrumb => 'Homepage',
|
25
|
+
:slug => '/',
|
26
|
+
:status_id => 100,
|
27
|
+
:published_at => '2008-01-01 08:00:00'
|
28
|
+
|
29
|
+
create_record :page, :child_layout,
|
30
|
+
:title => 'child layout',
|
31
|
+
:layout_id => layouts(:child).id,
|
32
|
+
:breadcrumb => 'Homepage',
|
33
|
+
:slug => '/',
|
34
|
+
:status_id => 100,
|
35
|
+
:published_at => '2008-01-01 08:00:00'
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
class ShareLayoutsDataset < Dataset::Base
|
2
|
+
def load
|
3
|
+
create_record :page, :homepage, :id => 1,
|
4
|
+
:title => 'Homepage',
|
5
|
+
:breadcrumb => 'Homepage',
|
6
|
+
:slug => '/',
|
7
|
+
:status_id => 100,
|
8
|
+
:published_at => '2008-01-01 08:00:00'
|
9
|
+
|
10
|
+
create_record :page, :rails_page,
|
11
|
+
:id => 2,
|
12
|
+
:title => 'App page',
|
13
|
+
:breadcrumb => 'App page',
|
14
|
+
:slug => 'app',
|
15
|
+
:class_name => 'RailsPage',
|
16
|
+
:status_id => 100,
|
17
|
+
:parent_id => 1,
|
18
|
+
:published_at => '2008-01-01 08:00:00'
|
19
|
+
|
20
|
+
create_record :page, :rails_page_child,
|
21
|
+
:id => 3,
|
22
|
+
:title => 'Child',
|
23
|
+
:breadcrumb => 'Child',
|
24
|
+
:slug => 'child-page',
|
25
|
+
:status_id => 100,
|
26
|
+
:parent_id => 2,
|
27
|
+
:published_at => '2008-01-01 08:00:00'
|
28
|
+
|
29
|
+
create_record :page, :other,
|
30
|
+
:id => 4,
|
31
|
+
:title => 'Other',
|
32
|
+
:breadcrumb => 'Other',
|
33
|
+
:slug => 'other',
|
34
|
+
:status_id => 100,
|
35
|
+
:parent_id => 1,
|
36
|
+
:published_at => '2008-01-01 08:00:00'
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,168 @@
|
|
1
|
+
require 'spec/spec_helper'
|
2
|
+
|
3
|
+
describe ShareLayouts::Helper do
|
4
|
+
include ShareLayouts::Helper
|
5
|
+
dataset :layouts, :pages, :share_layouts
|
6
|
+
test_helper :page
|
7
|
+
attr_accessor :request, :response
|
8
|
+
|
9
|
+
MAIN_RESULT = <<-TEXT
|
10
|
+
<html>
|
11
|
+
<head>
|
12
|
+
<title>My Title</title>
|
13
|
+
</head>
|
14
|
+
<body>
|
15
|
+
something
|
16
|
+
</body>
|
17
|
+
</html>
|
18
|
+
TEXT
|
19
|
+
|
20
|
+
before(:each) do
|
21
|
+
@page = RailsPage.new(page_params(:class_name => "RailsPage"))
|
22
|
+
@content_for_layout = "something"
|
23
|
+
@radiant_layout = layouts(:main).name
|
24
|
+
@request = OpenStruct.new(:path => "/some/page/")
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should extract_content_captures_as_hash" do
|
28
|
+
extract_captures.should == {:body => "something"}
|
29
|
+
@content_for_sidebar = "sidebar"
|
30
|
+
extract_captures.should == {:body => "something", :sidebar => "sidebar"}
|
31
|
+
end
|
32
|
+
|
33
|
+
# testing assignment of layout
|
34
|
+
it "should assign_layout_of_page" do
|
35
|
+
assign_attributes!(@page)
|
36
|
+
@page.layout.should == layouts(:main)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should assign_layout_of_page_when_missing" do
|
40
|
+
previous_layout = @page.layout
|
41
|
+
@radiant_layout = ''
|
42
|
+
assign_attributes!(@page)
|
43
|
+
previous_layout.should == @page.layout
|
44
|
+
end
|
45
|
+
|
46
|
+
# testing assignment of page.title
|
47
|
+
it "should assign_page_title_from_instance_var" do
|
48
|
+
@title = "My title"
|
49
|
+
assign_attributes!(@page)
|
50
|
+
@page.title.should == "My title"
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should assign_page_title_from_capture" do
|
54
|
+
@content_for_title = "My title"
|
55
|
+
assign_attributes!(@page)
|
56
|
+
@page.title.should == "My title"
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should assign_title_from_existing_page_title_when_not_specified" do
|
60
|
+
assign_attributes!(@page)
|
61
|
+
@page.title.should =~ /Page \d+$/ # was 'New Page' before. I assume this changed in Radiant 0.8
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should assign_empty_title_if_missing" do
|
65
|
+
@page.title = nil
|
66
|
+
@title.should be_nil
|
67
|
+
@content_for_title.should be_nil
|
68
|
+
@page.title.should be_nil
|
69
|
+
assign_attributes!(@page)
|
70
|
+
@page.title.should == ''
|
71
|
+
end
|
72
|
+
|
73
|
+
#testing assignment of page.breadcrumb
|
74
|
+
it "should assign_page_breadcrumb_from_instance_var" do
|
75
|
+
@breadcrumb = "My breadcrumb"
|
76
|
+
assign_attributes!(@page)
|
77
|
+
@page.breadcrumb.should == "My breadcrumb"
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should assign_page_breadcrumb_from_capture" do
|
81
|
+
@content_for_breadcrumb = "My breadcrumb"
|
82
|
+
assign_attributes!(@page)
|
83
|
+
@page.breadcrumb.should == "My breadcrumb"
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should assign_breadcrumb_from_existing_breadcrumb_when_not_specified" do
|
87
|
+
@page.breadcrumb = "existing breadcrumb"
|
88
|
+
assign_attributes!(@page)
|
89
|
+
@page.breadcrumb.should == 'existing breadcrumb'
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should assign_breadcrumb_from_title_if_missing" do
|
93
|
+
@page.title = "Title into BC"
|
94
|
+
@page.breadcrumb = nil
|
95
|
+
@breadcrumb.should be_nil
|
96
|
+
@content_for_breadcrumb.should be_nil
|
97
|
+
@page.breadcrumb.should be_nil
|
98
|
+
assign_attributes!(@page)
|
99
|
+
@page.breadcrumb.should == 'Title into BC'
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should assign_empty_breadcrumb_if_title_missing_too" do
|
103
|
+
@page.title = nil
|
104
|
+
@title.should be_nil
|
105
|
+
@content_for_title.should be_nil
|
106
|
+
@page.title.should be_nil
|
107
|
+
@page.breadcrumb = nil
|
108
|
+
@breadcrumb.should be_nil
|
109
|
+
@content_for_breadcrumb.should be_nil
|
110
|
+
@page.breadcrumb.should be_nil
|
111
|
+
assign_attributes!(@page)
|
112
|
+
@page.breadcrumb.should == ''
|
113
|
+
end
|
114
|
+
|
115
|
+
# testing assignment of page.breadcrumbs
|
116
|
+
it "should assign_breadcrumbs_from_instance_var" do
|
117
|
+
@breadcrumbs = "bc"
|
118
|
+
assign_attributes!(@page)
|
119
|
+
@page.breadcrumbs.should == 'bc'
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should assign_breadcrumbs_from_capture" do
|
123
|
+
@content_for_breadcrumbs = "bc"
|
124
|
+
assign_attributes!(@page)
|
125
|
+
@page.breadcrumbs.should == 'bc'
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should leave_breadcrumbs_nil_if_missing" do
|
129
|
+
@page.breadcrumbs = nil
|
130
|
+
@breadcrumbs.should be_nil
|
131
|
+
@content_for_breadcrumbs.should be_nil
|
132
|
+
@page.breadcrumbs.should be_nil
|
133
|
+
assign_attributes!(@page)
|
134
|
+
@page.breadcrumbs.should be_nil
|
135
|
+
end
|
136
|
+
|
137
|
+
# testing assigment of page.url
|
138
|
+
it "should assign_url_from_request_path" do
|
139
|
+
assign_attributes!(@page)
|
140
|
+
@page.url.should == '/some/page/'
|
141
|
+
end
|
142
|
+
|
143
|
+
# testing assigment of page.slug
|
144
|
+
it "should assign_slug_from_request_path" do
|
145
|
+
assign_attributes!(@page)
|
146
|
+
@page.slug.should == 'page'
|
147
|
+
end
|
148
|
+
|
149
|
+
# testing assignment of page.published_at
|
150
|
+
it "should assign_published_at" do
|
151
|
+
assign_attributes!(@page)
|
152
|
+
@page.published_at.should_not be_nil
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should render_page" do
|
156
|
+
@title = "My Title"
|
157
|
+
radiant_layout.strip.should == MAIN_RESULT.strip
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should find_page" do
|
161
|
+
@request.path = "/app/something/"
|
162
|
+
find_page.should == pages(:rails_page)
|
163
|
+
find_page.should be_a_kind_of(RailsPage)
|
164
|
+
@request.path = "/some-other/url/"
|
165
|
+
find_page.should_not == pages(:rails_page)
|
166
|
+
find_page.should be_a_kind_of(RailsPage)
|
167
|
+
end
|
168
|
+
end
|