much-rails 0.1.2 → 0.1.3
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.
- checksums.yaml +4 -4
- data/lib/much-rails/layout.rb +29 -2
- data/lib/much-rails/version.rb +1 -1
- data/test/unit/layout_tests.rb +24 -18
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e37cec5104bf60569eb8a0310184ed80c9083fa3fa0f68fcd02d0ee1a25aee92
|
4
|
+
data.tar.gz: e2cffa2635a4fe025913d78ce78f81dcaba12b232129969ed0a3646a6d8c9928
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfd22f4cdd2dd60540e417606990bdcd13ac92cb1e83d6175462ac37aa066de6c478c0c06dcb27af6112ec35eb0fcd1c0828375cdbbc9e8e60e6f1d4a2249cce
|
7
|
+
data.tar.gz: e7c12b68abe00c404d4ab361ea1a5f49150a8877bf30619b7f01b478190cd14a027f3fec543c0d604339993a5803d9340251d53989d780d692015960e40cb075
|
data/lib/much-rails/layout.rb
CHANGED
@@ -50,6 +50,14 @@ module MuchRails::Layout
|
|
50
50
|
@javascripts ||= []
|
51
51
|
end
|
52
52
|
|
53
|
+
def head_link(url, **attributes)
|
54
|
+
head_links << HeadLink.new(url, **attributes)
|
55
|
+
end
|
56
|
+
|
57
|
+
def head_links
|
58
|
+
@head_links ||= []
|
59
|
+
end
|
60
|
+
|
53
61
|
def layout(value)
|
54
62
|
layouts << value
|
55
63
|
end
|
@@ -104,12 +112,31 @@ module MuchRails::Layout
|
|
104
112
|
@javascripts ||= self.class.javascripts.map(&:call)
|
105
113
|
end
|
106
114
|
|
107
|
-
def
|
108
|
-
|
115
|
+
def head_links
|
116
|
+
@head_links ||= self.class.head_links
|
109
117
|
end
|
110
118
|
|
111
119
|
def layouts
|
112
120
|
self.class.layouts
|
113
121
|
end
|
122
|
+
|
123
|
+
def any_breadcrumbs?
|
124
|
+
breadcrumbs.any?
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
class HeadLink
|
129
|
+
attr_reader :href, :attributes
|
130
|
+
|
131
|
+
def initialize(href, **attributes)
|
132
|
+
@href = href
|
133
|
+
@attributes = attributes
|
134
|
+
end
|
135
|
+
|
136
|
+
def ==(other)
|
137
|
+
super unless other.is_a?(self.class)
|
138
|
+
|
139
|
+
href == other.href && attributes == other.attributes
|
140
|
+
end
|
114
141
|
end
|
115
142
|
end
|
data/lib/much-rails/version.rb
CHANGED
data/test/unit/layout_tests.rb
CHANGED
@@ -6,9 +6,9 @@ require "much-rails/layout"
|
|
6
6
|
module MuchRails::Layout
|
7
7
|
class UnitTests < Assert::Context
|
8
8
|
desc "MuchRails::Layout"
|
9
|
-
subject{
|
9
|
+
subject{ unit_module }
|
10
10
|
|
11
|
-
let(:
|
11
|
+
let(:unit_module){ MuchRails::Layout }
|
12
12
|
|
13
13
|
should "include MuchRails::Mixin" do
|
14
14
|
assert_that(subject).includes(MuchRails::Mixin)
|
@@ -30,15 +30,16 @@ module MuchRails::Layout
|
|
30
30
|
end
|
31
31
|
|
32
32
|
should have_imeths :page_title, :page_titles, :application_page_title
|
33
|
-
should have_imeths :breadcrumb, :breadcrumbs
|
34
|
-
should have_imeths :
|
33
|
+
should have_imeths :breadcrumb, :breadcrumbs
|
34
|
+
should have_imeths :stylesheet, :stylesheets, :javascript, :javascripts
|
35
|
+
should have_imeths :head_link, :head_links, :layout, :layouts
|
35
36
|
end
|
36
37
|
|
37
38
|
class InitTests < ReceiverTests
|
38
39
|
desc "when init"
|
39
40
|
subject{ receiver_class.new }
|
40
41
|
|
41
|
-
should "know its
|
42
|
+
should "know its page title" do
|
42
43
|
assert_that(subject.page_title).is_nil
|
43
44
|
|
44
45
|
receiver_class.page_title{ "Some Portal" }
|
@@ -47,7 +48,7 @@ module MuchRails::Layout
|
|
47
48
|
assert_that(subject.page_title).equals("Some Resource attribute1")
|
48
49
|
end
|
49
50
|
|
50
|
-
should "know its
|
51
|
+
should "know its application page title" do
|
51
52
|
assert_that(subject.application_page_title).is_nil
|
52
53
|
|
53
54
|
receiver_class.application_page_title{ "Some App" }
|
@@ -56,12 +57,12 @@ module MuchRails::Layout
|
|
56
57
|
assert_that(subject.application_page_title).equals("Some App attribute1")
|
57
58
|
end
|
58
59
|
|
59
|
-
should "know its
|
60
|
+
should "know its full page title "\
|
60
61
|
"given no application page title or page title segments" do
|
61
62
|
assert_that(subject.full_page_title).is_nil
|
62
63
|
end
|
63
64
|
|
64
|
-
should "know its
|
65
|
+
should "know its full page title "\
|
65
66
|
"given an application page title but no page title segments" do
|
66
67
|
receiver_class.application_page_title{ "Some App" }
|
67
68
|
|
@@ -69,7 +70,7 @@ module MuchRails::Layout
|
|
69
70
|
.equals(subject.application_page_title)
|
70
71
|
end
|
71
72
|
|
72
|
-
should "know its
|
73
|
+
should "know its full page title "\
|
73
74
|
"given no application page title but page title segments" do
|
74
75
|
receiver_class.page_title{ "Some Portal" }
|
75
76
|
receiver_class.page_title{ "Some Resource #{attribute1}" }
|
@@ -78,7 +79,7 @@ module MuchRails::Layout
|
|
78
79
|
.equals("Some Resource attribute1 - Some Portal")
|
79
80
|
end
|
80
81
|
|
81
|
-
should "know its
|
82
|
+
should "know its full page title "\
|
82
83
|
"given both an application page title and page title segments" do
|
83
84
|
receiver_class.application_page_title{ "Some App" }
|
84
85
|
receiver_class.page_title{ "Some Portal" }
|
@@ -88,13 +89,14 @@ module MuchRails::Layout
|
|
88
89
|
.equals("Some Resource attribute1 - Some Portal | Some App")
|
89
90
|
end
|
90
91
|
|
91
|
-
should "know its
|
92
|
+
should "know its breadcrumbs" do
|
92
93
|
receiver = receiver_class.new
|
94
|
+
assert_that(receiver.any_breadcrumbs?).is_false
|
93
95
|
assert_that(receiver.breadcrumbs).is_empty
|
94
96
|
|
95
97
|
receiver_class.breadcrumb{ ["Item1", "item1-url"] }
|
96
98
|
receiver_class.breadcrumb{ "Item2" }
|
97
|
-
|
99
|
+
assert_that(subject.any_breadcrumbs?).is_true
|
98
100
|
assert_that(subject.breadcrumbs)
|
99
101
|
.equals([
|
100
102
|
MuchRails::ViewModels::Breadcrumb.new("Item1", "item1-url"),
|
@@ -102,7 +104,7 @@ module MuchRails::Layout
|
|
102
104
|
])
|
103
105
|
end
|
104
106
|
|
105
|
-
should "know its
|
107
|
+
should "know its stylesheets" do
|
106
108
|
receiver = receiver_class.new
|
107
109
|
assert_that(receiver.stylesheets).is_empty
|
108
110
|
|
@@ -116,7 +118,7 @@ module MuchRails::Layout
|
|
116
118
|
])
|
117
119
|
end
|
118
120
|
|
119
|
-
should "know its
|
121
|
+
should "know its javascripts" do
|
120
122
|
receiver = receiver_class.new
|
121
123
|
assert_that(receiver.javascripts).is_empty
|
122
124
|
|
@@ -134,12 +136,16 @@ module MuchRails::Layout
|
|
134
136
|
])
|
135
137
|
end
|
136
138
|
|
137
|
-
should "know its
|
139
|
+
should "know its head links" do
|
138
140
|
receiver = receiver_class.new
|
139
|
-
assert_that(receiver.
|
141
|
+
assert_that(receiver.head_links).is_empty
|
140
142
|
|
141
|
-
|
142
|
-
|
143
|
+
url1 = Factory.url
|
144
|
+
attributes1 = { some_attribute: Factory.string }
|
145
|
+
receiver_class.head_link(url1, **attributes1)
|
146
|
+
|
147
|
+
assert_that(subject.head_links)
|
148
|
+
.equals([unit_module::HeadLink.new(url1, **attributes1)])
|
143
149
|
end
|
144
150
|
|
145
151
|
should "know its #layouts" do
|