crudtree 0.1.2

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.
@@ -0,0 +1,55 @@
1
+ require 'crudtree/interface/usher'
2
+ require 'ostruct'
3
+
4
+ module CRUDtree::Interface::Usher
5
+ public :compile_subnode, :compile_node
6
+ extend self
7
+ end
8
+
9
+ BareTest.suite "CRUDtree" do
10
+
11
+ suite "interface" do
12
+
13
+ suite "usher" do
14
+
15
+ suite "#compile_subnode" do
16
+
17
+ setup :subnode, "Node" do
18
+ @pre_path = "/foo"
19
+ @subnode = Node.new(nil, klass: Object, paths: "foo", model: Object) {:foo}
20
+ CRUDtree::Interface::Usher.expects(:compile_node).with("/foo/:id", @subnode).returns(true)
21
+ end
22
+
23
+ setup :subnode, "EndNode" do
24
+ @pre_path = ""
25
+ @subnode = EndNode.allocate
26
+ CRUDtree::Interface::Usher.expects(:compile_subnode).with(@pre_path, @subnode).returns(true)
27
+ end
28
+
29
+ assert "Compilation with a :subnode as subnode" do
30
+ CRUDtree::Interface::Usher.compile_subnode(@pre_path, @subnode)
31
+ end
32
+
33
+ end
34
+
35
+ suite "#compile_node" do
36
+
37
+ setup do
38
+ @subnode = Object.new
39
+ @pre_path = "/baz"
40
+ @node = OpenStruct.new(paths: ["foo", "bar"], subnodes: [@subnode])
41
+ CRUDtree::Interface::Usher.expects(:compile_subnode).with("/baz/foo", @subnode).returns(true)
42
+ CRUDtree::Interface::Usher.expects(:compile_subnode).with("/baz/bar", @subnode).returns(true)
43
+ end
44
+
45
+ assert "compilation" do
46
+ CRUDtree::Interface::Usher.compile_node(@pre_path, @node)
47
+ end
48
+
49
+ end
50
+
51
+ end
52
+
53
+ end
54
+
55
+ end
@@ -0,0 +1,90 @@
1
+ require 'crudtree/interface/usher/rack'
2
+ require 'ostruct'
3
+
4
+
5
+
6
+ BareTest.suite "CRUDtree" do
7
+
8
+ suite "interface" do
9
+
10
+ suite "usher" do
11
+
12
+ suite "rack" do
13
+
14
+ setup do
15
+ module CRUDtree::Interface::Usher::Rack
16
+ public :compile_path
17
+ extend self
18
+ end
19
+
20
+ class TestObj < Object; end
21
+ class TestObj2 < Object; end
22
+ class Cont1 < Object; end
23
+ class Cont2 < Object; end
24
+ end
25
+
26
+ suite "#compile_path" do
27
+
28
+ setup :subnode, "a simple member subnode" do
29
+ @pre_path = ""
30
+ @node = OpenStruct.new(klass: TestObj, identifier: :id, paths: "testobj")
31
+ @subnode = EndNode.new(@node, type: :member, call: :foo, name: "foo")
32
+ @path = "/testobj/:id/foo"
33
+ @params = {conditions: {}}
34
+ @send = [:foo]
35
+ @master_params = {}
36
+ end
37
+
38
+ setup :subnode, "a more complex collection subnode" do
39
+ @pre_path = "/bar"
40
+ @node = OpenStruct.new(klass: TestObj, identifier: :id, paths: "testobj")
41
+ @subnode = EndNode.new(@node, type: :collection, call: :foo, name: "foo")
42
+ @path = "/bar/testobj/foo"
43
+ @params = {conditions: {}}
44
+ @send = [:dispatcher, :foo]
45
+ @master_params = {rango: true}
46
+ end
47
+
48
+ setup :subnode, "a nested collection subnode" do
49
+ @pre_path = ""
50
+ @node1 = Node.new(nil, klass: Cont1, identifier: :id, paths: "cont1", model: Object){:foo}
51
+ @node2 = Node.new(@node1, klass: TestObj, model: Object){:foo}
52
+ @subnode = EndNode.new(@node2, type: :collection, call: :foo, name: "foo", model: Object)
53
+ @path = "/cont1/:id/testobj/foo"
54
+ @params = {conditions: {}}
55
+ @send = [:dispatcher, :foo]
56
+ @master_params = {rango: true}
57
+ end
58
+
59
+ setup :subnode, "a nested member subnode" do
60
+ @pre_path = ""
61
+ @node1 = Node.new(nil, klass: Cont1, identifier: :id, paths: "cont1", model: Object){:foo}
62
+ @node2 = Node.new(@node1, klass: TestObj, model: Object){:foo}
63
+ @subnode = EndNode.new(@node2, type: :member, call: :foo, name: "foo")
64
+ @path = "/cont1/:id/testobj/:id/foo"
65
+ @params = {conditions: {}}
66
+ @send = [:foo]
67
+ @master_params = {}
68
+ end
69
+
70
+ setup :foo, "Foo" do
71
+ TestObj.expects(:send).with(*@send).returns(:yeah)
72
+ TestObj2.any_instance.expects(:to).with(:yeah)
73
+ CRUDtree::Interface::Usher::Rack.expects(:master_params).returns(@master_params)
74
+ CRUDtree::Interface::Usher::Rack.expects(:path).with(@path, @params).returns(TestObj2.new)
75
+ end
76
+
77
+ assert "compilaton with :subnode" do
78
+ CRUDtree::Interface::Usher::Rack.compile_path(@pre_path, @subnode)
79
+ true
80
+ end
81
+
82
+ end
83
+
84
+ end
85
+
86
+ end
87
+
88
+ end
89
+
90
+ end
@@ -0,0 +1,27 @@
1
+ BareTest.suite "CRUDtree" do
2
+
3
+ suite "tree" do
4
+
5
+ suite "EndNode" do
6
+
7
+ suite "initialize" do
8
+
9
+ assert ":type should only accept :member or :collection" do
10
+ raises(ArgumentError) {EndNode.new(nil, type: :foo, call: :foo)}
11
+ end
12
+
13
+ assert ":call should not accept an empty argument" do
14
+ raises(ArgumentError) {EndNode.new(nil, type: :member, path: "/foo")}
15
+ end
16
+
17
+ assert ":path should default to :call" do
18
+ EndNode.new(nil, type: :member, call: :foo, name: :foo).path == "foo"
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,9 @@
1
+ BareTest.suite "CRUDtree" do
2
+
3
+ suite "tree" do
4
+
5
+ suite "master"
6
+
7
+ end
8
+
9
+ end
@@ -0,0 +1,91 @@
1
+ BareTest.suite "CRUDtree" do
2
+
3
+ suite "tree" do
4
+
5
+ suite "node" do
6
+
7
+ suite "initialize" do
8
+
9
+ suite "paths" do
10
+
11
+ assert "defaults to the name of the class" do
12
+ Node.new(nil, klass: Node, model: Object){:foo}.paths == ["node"]
13
+ end
14
+
15
+ assert "raises if no path is given" do
16
+ raises(ArgumentError) {Node.new(nil, foo: :bar){:foo}}
17
+ end
18
+
19
+ end
20
+
21
+ assert "raises if no block is given" do
22
+ raises(ArgumentError) {Node.new(nil, foo: :bar)}
23
+ end
24
+
25
+ end
26
+
27
+ suite "extended subnodes" do
28
+
29
+ setup :method, "#member" do
30
+ @method = :member
31
+ end
32
+
33
+ setup :method, "#collection" do
34
+ @method = :collection
35
+ end
36
+
37
+ setup :node, "node" do
38
+ @node = Node.allocate
39
+ @params = {foo: :bar}
40
+ @result = @params.merge({type: @method})
41
+ @node.expects(:endnode).with(@result)
42
+ end
43
+
44
+ assert ":method" do
45
+ case @method
46
+ when :member
47
+ @node.member @params
48
+ when :collection
49
+ @node.collection @params
50
+ end
51
+ true
52
+ end
53
+
54
+ end
55
+
56
+ suite "tree walking" do
57
+
58
+ setup :master, "a simple master" do
59
+ @master = Master.new
60
+ @node = @master.node(klass: Object, model: Object){:foo}
61
+ @parents = []
62
+ @children = {}
63
+ end
64
+
65
+ suite "#parents" do
66
+
67
+ setup :master, "a more complex master" do
68
+ @master = Master.new
69
+ @master.node(klass: Object, model: Object){
70
+ node(klass: Object, model: Object){
71
+ node(klass: Object, model: Object){:foo}
72
+ node(klass: Object, model: Object){:foo}
73
+ }
74
+ }
75
+ @node = @master.nodes.first.nodes.first.nodes.first
76
+ @parents = [@master.nodes.first.nodes.first,@master.nodes.first]
77
+ end
78
+
79
+ assert "it find the parents in :master" do
80
+ equal(@node.parents, @parents)
81
+ end
82
+
83
+ end
84
+
85
+ end
86
+
87
+ end
88
+
89
+ end
90
+
91
+ end
metadata ADDED
@@ -0,0 +1,77 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: crudtree
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Simon Hafner aka Tass
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ date: 2010-02-15 00:00:00 +01:00
12
+ default_executable:
13
+ dependencies: []
14
+
15
+ description: ""
16
+ email: hafnersimon@gmail.com
17
+ executables: []
18
+
19
+ extensions: []
20
+
21
+ extra_rdoc_files: []
22
+
23
+ files:
24
+ - lib/crudtree/generator.rb
25
+ - lib/crudtree/helper.rb
26
+ - lib/crudtree/interface/usher/rack.rb
27
+ - lib/crudtree/interface/usher.rb
28
+ - lib/crudtree/interface.rb
29
+ - lib/crudtree/tree/endnode.rb
30
+ - lib/crudtree/tree/master.rb
31
+ - lib/crudtree/tree/node.rb
32
+ - lib/crudtree/tree.rb
33
+ - lib/crudtree.rb
34
+ - test/helper/suite/lib/generator.rb
35
+ - test/helper/suite/lib/integration.rb
36
+ - test/helper/suite/lib/interface/blackbox.rb
37
+ - test/setup.rb
38
+ - test/suite/lib/generator.rb
39
+ - test/suite/lib/integration.rb
40
+ - test/suite/lib/interface/blackbox.rb
41
+ - test/suite/lib/interface/usher/rack.rb
42
+ - test/suite/lib/interface/usher.rb
43
+ - test/suite/lib/tree/endnode.rb
44
+ - test/suite/lib/tree/master.rb
45
+ - test/suite/lib/tree/node.rb
46
+ - LICENSE
47
+ - README.rdoc
48
+ has_rdoc: true
49
+ homepage: http://github.com/Tass/CRUDtree
50
+ licenses: []
51
+
52
+ post_install_message:
53
+ rdoc_options: []
54
+
55
+ require_paths:
56
+ - lib
57
+ required_ruby_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: "1.9"
62
+ version:
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ version:
69
+ requirements: []
70
+
71
+ rubyforge_project:
72
+ rubygems_version: 1.3.5
73
+ signing_key:
74
+ specification_version: 3
75
+ summary: A resource helper mainly for usher, but may be adapted for other routers as well.
76
+ test_files: []
77
+