described_routes 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/lib/described_routes.rb +1 -1
- data/lib/resource_template.rb +24 -0
- data/test/test_resource_template.rb +36 -1
- metadata +1 -1
data/History.txt
CHANGED
data/lib/described_routes.rb
CHANGED
data/lib/resource_template.rb
CHANGED
@@ -203,6 +203,16 @@ class ResourceTemplate
|
|
203
203
|
resource_templates.select{|resource_template| matching_rel === resource_template.rel}
|
204
204
|
end
|
205
205
|
|
206
|
+
# self and descendants
|
207
|
+
def all_preorder
|
208
|
+
[self] + resource_templates.all_preorder
|
209
|
+
end
|
210
|
+
|
211
|
+
# defendants and self
|
212
|
+
def all_postorder
|
213
|
+
resource_templates.all_postorder + [self]
|
214
|
+
end
|
215
|
+
|
206
216
|
class ResourceTemplates < Array
|
207
217
|
# Initialize Resources (i.e. a new collection of ResourceTemplate objects) from given collection of ResourceTemplates or hashes
|
208
218
|
def initialize(collection=[], parent=nil)
|
@@ -262,6 +272,20 @@ class ResourceTemplate
|
|
262
272
|
end
|
263
273
|
h
|
264
274
|
end
|
275
|
+
|
276
|
+
# All members and their descendants, descendants last
|
277
|
+
def all_preorder
|
278
|
+
inject([]) do |a, resource_template|
|
279
|
+
a += resource_template.all_preorder
|
280
|
+
end
|
281
|
+
end
|
282
|
+
|
283
|
+
# All members and their descendants, descendants first
|
284
|
+
def all_postorder
|
285
|
+
inject([]) do |a, resource_template|
|
286
|
+
a += resource_template.all_postorder
|
287
|
+
end
|
288
|
+
end
|
265
289
|
|
266
290
|
# for #to_text
|
267
291
|
def to_table(parent_template = nil, t = [], indent = '')
|
@@ -2,12 +2,13 @@ require 'test/unit'
|
|
2
2
|
require 'resource_template'
|
3
3
|
|
4
4
|
class TestResourceTemplate < Test::Unit::TestCase
|
5
|
-
attr_reader :json, :resource_templates, :resource_templates_by_name, :user_articles, :user_article, :edit_user_article
|
5
|
+
attr_reader :json, :resource_templates, :resource_templates_by_name, :user, :user_articles, :user_article, :edit_user_article
|
6
6
|
|
7
7
|
def setup
|
8
8
|
@json ||= File.read(File.dirname(__FILE__) + '/fixtures/described_routes_test.json')
|
9
9
|
@resource_templates = ResourceTemplate::ResourceTemplates.new(JSON.parse(@json))
|
10
10
|
@resource_templates_by_name = @resource_templates.all_by_name
|
11
|
+
@user = @resource_templates_by_name['user']
|
11
12
|
@user_articles = @resource_templates_by_name['user_articles']
|
12
13
|
@user_article = @resource_templates_by_name['user_article']
|
13
14
|
@edit_user_article = @resource_templates_by_name['edit_user_article']
|
@@ -128,4 +129,38 @@ class TestResourceTemplate < Test::Unit::TestCase
|
|
128
129
|
],
|
129
130
|
user_articles.resource_templates.expand_links({'user_id' => 'dojo'}).to_parsed)
|
130
131
|
end
|
132
|
+
|
133
|
+
def test_all_preorder
|
134
|
+
assert_equal(
|
135
|
+
[
|
136
|
+
"user",
|
137
|
+
"user_articles",
|
138
|
+
"user_article",
|
139
|
+
"edit_user_article",
|
140
|
+
"new_user_article",
|
141
|
+
"recent_user_articles",
|
142
|
+
"edit_user",
|
143
|
+
"user_profile",
|
144
|
+
"edit_user_profile",
|
145
|
+
"new_user_profile"
|
146
|
+
],
|
147
|
+
user.all_preorder.map{|rt| rt.name})
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_all_postorder
|
151
|
+
assert_equal(
|
152
|
+
[
|
153
|
+
"edit_user_article",
|
154
|
+
"user_article",
|
155
|
+
"new_user_article",
|
156
|
+
"recent_user_articles",
|
157
|
+
"user_articles",
|
158
|
+
"edit_user",
|
159
|
+
"edit_user_profile",
|
160
|
+
"new_user_profile",
|
161
|
+
"user_profile",
|
162
|
+
"user"
|
163
|
+
],
|
164
|
+
user.all_postorder.map{|rt| rt.name})
|
165
|
+
end
|
131
166
|
end
|