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 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