nested 0.0.28 → 0.0.29
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/nested/app.rb +10 -2
- data/lib/nested/resource.rb +7 -2
- data/nested.gemspec +1 -1
- data/test/app_test.rb +55 -0
- data/test/nested_test.rb +12 -0
- data/test/test_helper.rb +2 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 238405f893ac3d421bb7847af4cf7e9b7193d60b
|
4
|
+
data.tar.gz: c69edcdd615637531b1b590f3f724d233b366c37
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bcc98a9dddd3ad23d069cd5247beea3a72e68a2f59907c6362b772952b04e608bd14d77afa592babdc4c026d701202d0c60cdebcc2b549fd5d6135324568f183
|
7
|
+
data.tar.gz: be247d2bb96f5b2b8518b6b2da5070cbdc006c37664b8573818f47e6e9c84e350870907a22b24fee088d6ee1cb48a8d244f563b07039d7a4838aa8c3f8f4acb7
|
data/lib/nested/app.rb
CHANGED
@@ -2,23 +2,31 @@ module Nested
|
|
2
2
|
class App
|
3
3
|
def self.inherited(clazz)
|
4
4
|
(class << clazz; self; end).instance_eval do
|
5
|
-
attr_accessor :sinatra
|
5
|
+
attr_accessor :sinatra, :behaviors
|
6
6
|
end
|
7
7
|
clazz.sinatra = Class.new(Sinatra::Base)
|
8
8
|
clazz.instance_variable_set("@config", {})
|
9
|
+
clazz.instance_variable_set("@behaviors", {})
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.behavior(name, &block)
|
13
|
+
@behaviors[name] = block
|
14
|
+
self
|
9
15
|
end
|
10
16
|
|
11
17
|
def self.child_resource(name, clazz, resource_if_block, model_block, &block)
|
12
|
-
clazz.new(sinatra, name, nil, resource_if_block, model_block)
|
18
|
+
clazz.new(self, sinatra, name, nil, resource_if_block, model_block)
|
13
19
|
.tap{|r| r.instance_eval(&(block||Proc.new{ }))}
|
14
20
|
end
|
15
21
|
|
16
22
|
def self.before(&block)
|
17
23
|
sinatra.before(&block)
|
24
|
+
self
|
18
25
|
end
|
19
26
|
|
20
27
|
def self.after(&block)
|
21
28
|
sinatra.after(&block)
|
29
|
+
self
|
22
30
|
end
|
23
31
|
|
24
32
|
def self.config(opts={})
|
data/lib/nested/resource.rb
CHANGED
@@ -4,9 +4,10 @@ module Nested
|
|
4
4
|
|
5
5
|
include WithSingleton
|
6
6
|
|
7
|
-
def initialize(sinatra, name, parent, resource_if_block, model_block)
|
7
|
+
def initialize(app, sinatra, name, parent, resource_if_block, model_block)
|
8
8
|
raise "resource must be given a name" unless name
|
9
9
|
|
10
|
+
@app = app
|
10
11
|
@sinatra = sinatra
|
11
12
|
@name = name
|
12
13
|
@parent = parent
|
@@ -32,12 +33,16 @@ module Nested
|
|
32
33
|
@serializer = initialize_serializer_factory
|
33
34
|
end
|
34
35
|
|
36
|
+
def behave(name)
|
37
|
+
instance_exec(&@app.behaviors[name])
|
38
|
+
end
|
39
|
+
|
35
40
|
def initialize_serializer_factory
|
36
41
|
Serializer.new([])
|
37
42
|
end
|
38
43
|
|
39
44
|
def child_resource(name, clazz, resource_if_block, model_block, &block)
|
40
|
-
clazz.new(@sinatra, name, self, resource_if_block, model_block)
|
45
|
+
clazz.new(@app, @sinatra, name, self, resource_if_block, model_block)
|
41
46
|
.tap{|r| r.instance_eval(&(block||Proc.new{ }))}
|
42
47
|
.tap{|r| @resources << r}
|
43
48
|
end
|
data/nested.gemspec
CHANGED
data/test/app_test.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require "mocha/setup"
|
3
|
+
require "active_support/all"
|
4
|
+
require "active_model/errors"
|
5
|
+
require "active_record"
|
6
|
+
require "nested"
|
7
|
+
require "./test/test_helper"
|
8
|
+
|
9
|
+
class NestedTest < Test::Unit::TestCase
|
10
|
+
|
11
|
+
include TestHelper
|
12
|
+
|
13
|
+
def app
|
14
|
+
Class.new(Nested::App)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_inherited
|
18
|
+
a = app
|
19
|
+
|
20
|
+
assert_equal ({}), a.instance_variable_get("@config")
|
21
|
+
assert_equal ({}), a.instance_variable_get("@behaviors")
|
22
|
+
assert_equal true, a.sinatra < Sinatra::Base
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_behavior
|
26
|
+
b = ->{}
|
27
|
+
assert_equal ({:test => b}), app.behavior(:test, &b).instance_variable_get("@behaviors")
|
28
|
+
end
|
29
|
+
|
30
|
+
def test__before
|
31
|
+
a = app
|
32
|
+
|
33
|
+
sinatra = mock
|
34
|
+
sinatra.expects(:before)
|
35
|
+
|
36
|
+
a.instance_variable_set("@sinatra", sinatra)
|
37
|
+
assert_equal a, a.before(&->{})
|
38
|
+
end
|
39
|
+
|
40
|
+
def test__after
|
41
|
+
a = app
|
42
|
+
|
43
|
+
sinatra = mock
|
44
|
+
sinatra.expects(:after)
|
45
|
+
|
46
|
+
a.instance_variable_set("@sinatra", sinatra)
|
47
|
+
assert_equal a, a.after(&->{})
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_config
|
51
|
+
a = app
|
52
|
+
assert_equal ({key1: true}), a.config(key1: true)
|
53
|
+
assert_equal ({key1: true}), a.instance_variable_get("@config")
|
54
|
+
end
|
55
|
+
end
|
data/test/nested_test.rb
CHANGED
@@ -30,6 +30,18 @@ class NestedTest < Test::Unit::TestCase
|
|
30
30
|
assert_equal Nested::Singleton::MODEL_BLOCK, singleton(:project, nil).model_block
|
31
31
|
assert_equal Nested::Many::MODEL_BLOCK, many(:projects, nil).model_block
|
32
32
|
assert_equal Nested::One::MODEL_BLOCK, many(:projects, nil).one.model_block
|
33
|
+
|
34
|
+
assert_equal true, r.instance_variable_get("@app") <= Nested::App
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_behave
|
38
|
+
r = singleton(:project)
|
39
|
+
a = r.instance_variable_get("@app")
|
40
|
+
a.behavior :mybehavior do
|
41
|
+
get
|
42
|
+
end
|
43
|
+
@sinatra.expects(:get)
|
44
|
+
r.behave :mybehavior
|
33
45
|
end
|
34
46
|
|
35
47
|
def test_serialize
|
data/test/test_helper.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
module TestHelper
|
2
2
|
def singleton(name, model_block=Nested::PROC_NIL)
|
3
|
-
Nested::Singleton.new(@sinatra, name, nil, Nested::PROC_TRUE, model_block)
|
3
|
+
Nested::Singleton.new(Class.new(Nested::App), @sinatra, name, nil, Nested::PROC_TRUE, model_block)
|
4
4
|
end
|
5
5
|
|
6
6
|
def many(name, model_block=Nested::PROC_NIL)
|
7
|
-
Nested::Many.new(@sinatra, name, nil, Nested::PROC_TRUE, model_block)
|
7
|
+
Nested::Many.new(Class.new(Nested::App), @sinatra, name, nil, Nested::PROC_TRUE, model_block)
|
8
8
|
end
|
9
9
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nested
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.29
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Zimmek
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -93,6 +93,7 @@ files:
|
|
93
93
|
- lib/nested/with_model_block.rb
|
94
94
|
- lib/nested/with_singleton.rb
|
95
95
|
- nested.gemspec
|
96
|
+
- test/app_test.rb
|
96
97
|
- test/nested_test.rb
|
97
98
|
- test/serializer_field_test.rb
|
98
99
|
- test/serializer_test.rb
|
@@ -121,6 +122,7 @@ signing_key:
|
|
121
122
|
specification_version: 4
|
122
123
|
summary: a nestable dsl to create a restful api
|
123
124
|
test_files:
|
125
|
+
- test/app_test.rb
|
124
126
|
- test/nested_test.rb
|
125
127
|
- test/serializer_field_test.rb
|
126
128
|
- test/serializer_test.rb
|