nested 0.0.28 → 0.0.29
Sign up to get free protection for your applications and to get access to all the features.
- 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
|