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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 530eebbefcb6b3078c4e10362b44bb5f86a18d3a
4
- data.tar.gz: 782cad01102d3b0af2baf4f63ce0413228afec18
3
+ metadata.gz: 238405f893ac3d421bb7847af4cf7e9b7193d60b
4
+ data.tar.gz: c69edcdd615637531b1b590f3f724d233b366c37
5
5
  SHA512:
6
- metadata.gz: 7895a40cc84bc8068daea8d4c01b253dea34aac7e84bb0b94519003e9aa5c537261c7cdcfc28df839a8f55c674276076f89a62bf43b44ebde52af096196c591c
7
- data.tar.gz: 55aa216d43349384134b38cbe7a6087610ca6508c3621d0075e40c2e1406bd801eac897104721048606f1857fbce6c8f6131e87895cdf82771954f013e19d0cb
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={})
@@ -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
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "nested"
3
- s.version = "0.0.28"
3
+ s.version = "0.0.29"
4
4
 
5
5
  s.authors = ["Jan Zimmek"]
6
6
  s.email = %q{jan.zimmek@web.de}
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.28
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-06 00:00:00.000000000 Z
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