gom 0.1.0 → 0.2.0
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.
- data/README.rdoc +70 -0
- data/lib/gom/object.rb +4 -1
- data/lib/gom/object/builder.rb +47 -0
- data/lib/gom/object/cached_builder.rb +42 -0
- data/lib/gom/object/collection.rb +72 -0
- data/lib/gom/object/draft.rb +34 -0
- data/lib/gom/object/inspector.rb +29 -15
- data/lib/gom/spec/acceptance/adapter_with_stateful_storage.rb +74 -5
- data/lib/gom/spec/acceptance/read_only_adapter_with_stateless_storage.rb +20 -0
- data/lib/gom/storage.rb +6 -2
- data/lib/gom/storage/adapter.rb +11 -4
- data/lib/gom/storage/configuration.rb +30 -1
- data/lib/gom/storage/configuration/view.rb +20 -0
- data/lib/gom/storage/configuration/view/class.rb +28 -0
- data/lib/gom/storage/configuration/view/map_reduce.rb +29 -0
- data/lib/gom/storage/fetcher.rb +9 -34
- data/lib/gom/storage/saver.rb +5 -7
- data/spec/acceptance/object_spec.rb +1 -0
- data/spec/fake_adapter.rb +55 -10
- data/spec/lib/gom/object/builder_spec.rb +51 -0
- data/spec/lib/gom/object/cached_builder_spec.rb +43 -0
- data/spec/lib/gom/object/collection_spec.rb +158 -0
- data/spec/lib/gom/object/draft_spec.rb +59 -0
- data/spec/lib/gom/object/inspector_spec.rb +8 -10
- data/spec/lib/gom/storage/adapter_spec.rb +7 -33
- data/spec/lib/gom/storage/configuration/view/class_spec.rb +17 -0
- data/spec/lib/gom/storage/configuration/view/map_reduce_spec.rb +21 -0
- data/spec/lib/gom/storage/configuration_spec.rb +29 -0
- data/spec/lib/gom/storage/fetcher_spec.rb +7 -38
- data/spec/lib/gom/storage/remover_spec.rb +7 -9
- data/spec/lib/gom/storage/saver_spec.rb +17 -33
- data/spec/lib/gom/storage_spec.rb +33 -9
- data/spec/storage.configuration +10 -0
- metadata +22 -6
- data/lib/gom/object/injector.rb +0 -45
- data/spec/lib/gom/object/injector_spec.rb +0 -51
@@ -6,14 +6,12 @@ describe GOM::Storage::Remover do
|
|
6
6
|
@id = GOM::Object::Id.new "test_storage", "object_1"
|
7
7
|
@object = Object.new
|
8
8
|
|
9
|
-
@adapter =
|
10
|
-
@adapter
|
11
|
-
@configuration
|
12
|
-
@configuration.stub!(:adapter).and_return(@adapter)
|
13
|
-
GOM::Storage::Configuration.stub!(:[]).and_return(@configuration)
|
9
|
+
@adapter = mock GOM::Storage::Adapter, :remove => nil
|
10
|
+
@configuration = mock GOM::Storage::Configuration, :adapter => @adapter
|
11
|
+
GOM::Storage::Configuration.stub(:[]).and_return(@configuration)
|
14
12
|
|
15
|
-
GOM::Object::Mapping.stub
|
16
|
-
GOM::Object::Mapping.stub
|
13
|
+
GOM::Object::Mapping.stub(:id_by_object).with(@object).and_return(@id)
|
14
|
+
GOM::Object::Mapping.stub(:remove_by_object)
|
17
15
|
|
18
16
|
@remover = GOM::Storage::Remover.new @object
|
19
17
|
end
|
@@ -30,8 +28,8 @@ describe GOM::Storage::Remover do
|
|
30
28
|
@remover.perform
|
31
29
|
end
|
32
30
|
|
33
|
-
it "should raise an
|
34
|
-
GOM::Object::Mapping.stub
|
31
|
+
it "should raise an #{ArgumentError} if no mapping for the given object exists" do
|
32
|
+
GOM::Object::Mapping.stub(:id_by_object).with(@object).and_return(nil)
|
35
33
|
lambda do
|
36
34
|
@remover.perform
|
37
35
|
end.should raise_error(ArgumentError)
|
@@ -7,29 +7,18 @@ describe GOM::Storage::Saver do
|
|
7
7
|
@object = Object.new
|
8
8
|
@object.instance_variable_set :@test, "test value"
|
9
9
|
@object.freeze
|
10
|
-
@
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
GOM::
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
@adapter.stub!(:store).and_return("object_1")
|
23
|
-
@configuration = Object.new
|
24
|
-
@configuration.stub!(:name).and_return("default_test_storage")
|
25
|
-
@configuration.stub!(:adapter).and_return(@adapter)
|
26
|
-
GOM::Storage::Configuration.stub!(:[]).and_return(@configuration)
|
27
|
-
GOM::Storage::Configuration.stub!(:default).and_return(@configuration)
|
28
|
-
|
29
|
-
@inspector = Object.new
|
30
|
-
@inspector.stub!(:perform)
|
31
|
-
@inspector.stub!(:object_hash).and_return(@object_hash)
|
32
|
-
GOM::Object::Inspector.stub!(:new).and_return(@inspector)
|
10
|
+
@draft = GOM::Object::Draft.new "object_1", "Object", { :test => "test value" }
|
11
|
+
|
12
|
+
GOM::Object::Mapping.stub(:id_by_object).with(@object).and_return(@id)
|
13
|
+
GOM::Object::Mapping.stub(:put)
|
14
|
+
|
15
|
+
@adapter = mock GOM::Storage::Adapter, :store => "object_1"
|
16
|
+
@configuration = mock GOM::Storage::Configuration, :name => "default_test_storage", :adapter => @adapter
|
17
|
+
GOM::Storage::Configuration.stub(:[]).and_return(@configuration)
|
18
|
+
GOM::Storage::Configuration.stub(:default).and_return(@configuration)
|
19
|
+
|
20
|
+
@inspector = mock GOM::Object::Inspector, :draft => @draft
|
21
|
+
GOM::Object::Inspector.stub(:new).and_return(@inspector)
|
33
22
|
|
34
23
|
@saver = GOM::Storage::Saver.new @object
|
35
24
|
end
|
@@ -48,7 +37,7 @@ describe GOM::Storage::Saver do
|
|
48
37
|
end
|
49
38
|
|
50
39
|
it "should select the default storage if no storage name can be detected" do
|
51
|
-
GOM::Object::Mapping.stub
|
40
|
+
GOM::Object::Mapping.stub(:id_by_object).with(@object).and_return(nil)
|
52
41
|
@saver.perform
|
53
42
|
@saver.storage_name.should == "default_test_storage"
|
54
43
|
end
|
@@ -59,20 +48,15 @@ describe GOM::Storage::Saver do
|
|
59
48
|
end
|
60
49
|
|
61
50
|
it "should store the object with the adapter instance" do
|
62
|
-
@adapter.should_receive(:store).with(@
|
51
|
+
@adapter.should_receive(:store).with(@draft).and_return("object_1")
|
63
52
|
@saver.perform
|
64
53
|
end
|
65
54
|
|
66
55
|
it "should store the object without an id if no mapping exists" do
|
67
|
-
GOM::Object::Mapping.stub
|
68
|
-
@
|
69
|
-
|
70
|
-
@adapter.should_receive(:store).with(@object_hash).and_return("object_1")
|
71
|
-
@saver.perform
|
72
|
-
end
|
56
|
+
GOM::Object::Mapping.stub(:id_by_object).with(@object).and_return(nil)
|
57
|
+
@draft.id = nil
|
73
58
|
|
74
|
-
|
75
|
-
@inspector.should_receive(:perform)
|
59
|
+
@adapter.should_receive(:store).with(@draft).and_return("object_1")
|
76
60
|
@saver.perform
|
77
61
|
end
|
78
62
|
|
@@ -57,9 +57,8 @@ describe GOM::Storage do
|
|
57
57
|
|
58
58
|
before :each do
|
59
59
|
@storage_name = "another_test_storage"
|
60
|
-
@saver =
|
61
|
-
|
62
|
-
described_class::Saver.stub!(:new).and_return(@saver)
|
60
|
+
@saver = mock described_class::Saver, :perform => nil
|
61
|
+
described_class::Saver.stub(:new).and_return(@saver)
|
63
62
|
end
|
64
63
|
|
65
64
|
it "should initialize the saver correctly" do
|
@@ -77,12 +76,11 @@ describe GOM::Storage do
|
|
77
76
|
describe "remove" do
|
78
77
|
|
79
78
|
before :each do
|
80
|
-
@id = Object
|
81
|
-
GOM::Object::Id.stub
|
79
|
+
@id = mock GOM::Object::Id
|
80
|
+
GOM::Object::Id.stub(:new).and_return(@id)
|
82
81
|
|
83
|
-
@remover =
|
84
|
-
|
85
|
-
described_class::Remover.stub!(:new).and_return(@remover)
|
82
|
+
@remover = mock described_class::Remover, :perform => nil
|
83
|
+
described_class::Remover.stub(:new).and_return(@remover)
|
86
84
|
end
|
87
85
|
|
88
86
|
it "should initialize the remover correctly" do
|
@@ -98,7 +96,33 @@ describe GOM::Storage do
|
|
98
96
|
it "should convert a given string into an id" do
|
99
97
|
GOM::Object::Id.should_receive(:new).with("test_storage:object_1").and_return(@id)
|
100
98
|
described_class::Remover.should_receive(:new).with(@id).and_return(@remover)
|
101
|
-
described_class
|
99
|
+
described_class.remove "test_storage:object_1"
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
describe "collection" do
|
105
|
+
|
106
|
+
before :each do
|
107
|
+
@collection = mock GOM::Object::Collection
|
108
|
+
@adapter = mock GOM::Storage::Adapter, :collection => @collection
|
109
|
+
@configuration = mock GOM::Storage::Configuration, :adapter => @adapter
|
110
|
+
GOM::Storage::Configuration.stub(:[]).with(:test_storage).and_return(@configuration)
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should select the right configuration" do
|
114
|
+
GOM::Storage::Configuration.should_receive(:[]).with(:test_storage).and_return(@configuration)
|
115
|
+
described_class.collection :test_storage, :argument_one, :argument_two
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should pass all arguments to the adapters collection method" do
|
119
|
+
@adapter.should_receive(:collection).with(:argument_one, :argument_two)
|
120
|
+
described_class.collection :test_storage, :argument_one, :argument_two
|
121
|
+
end
|
122
|
+
|
123
|
+
it "should return the adapter's collection" do
|
124
|
+
collection = described_class.collection :test_storage
|
125
|
+
collection.should == @collection
|
102
126
|
end
|
103
127
|
|
104
128
|
end
|
data/spec/storage.configuration
CHANGED
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 2
|
8
8
|
- 0
|
9
|
-
version: 0.
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- "Philipp Br\xC3\xBCll"
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-12-
|
17
|
+
date: 2010-12-20 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -61,6 +61,9 @@ files:
|
|
61
61
|
- lib/gom/storage/saver.rb
|
62
62
|
- lib/gom/storage/fetcher.rb
|
63
63
|
- lib/gom/storage/remover.rb
|
64
|
+
- lib/gom/storage/configuration/view/class.rb
|
65
|
+
- lib/gom/storage/configuration/view/map_reduce.rb
|
66
|
+
- lib/gom/storage/configuration/view.rb
|
64
67
|
- lib/gom/storage/configuration.rb
|
65
68
|
- lib/gom/object.rb
|
66
69
|
- lib/gom/storage.rb
|
@@ -68,20 +71,28 @@ files:
|
|
68
71
|
- lib/gom/spec/acceptance/read_only_adapter_with_stateless_storage.rb
|
69
72
|
- lib/gom/spec.rb
|
70
73
|
- lib/gom/object/mapping.rb
|
71
|
-
- lib/gom/object/
|
74
|
+
- lib/gom/object/builder.rb
|
72
75
|
- lib/gom/object/inspector.rb
|
73
76
|
- lib/gom/object/id.rb
|
77
|
+
- lib/gom/object/cached_builder.rb
|
78
|
+
- lib/gom/object/draft.rb
|
74
79
|
- lib/gom/object/proxy.rb
|
80
|
+
- lib/gom/object/collection.rb
|
75
81
|
- spec/lib/gom/object_spec.rb
|
76
82
|
- spec/lib/gom/storage/fetcher_spec.rb
|
77
83
|
- spec/lib/gom/storage/configuration_spec.rb
|
78
84
|
- spec/lib/gom/storage/remover_spec.rb
|
79
85
|
- spec/lib/gom/storage/saver_spec.rb
|
86
|
+
- spec/lib/gom/storage/configuration/view/class_spec.rb
|
87
|
+
- spec/lib/gom/storage/configuration/view/map_reduce_spec.rb
|
80
88
|
- spec/lib/gom/storage/adapter_spec.rb
|
81
|
-
- spec/lib/gom/object/injector_spec.rb
|
82
89
|
- spec/lib/gom/object/mapping_spec.rb
|
90
|
+
- spec/lib/gom/object/draft_spec.rb
|
83
91
|
- spec/lib/gom/object/proxy_spec.rb
|
84
92
|
- spec/lib/gom/object/inspector_spec.rb
|
93
|
+
- spec/lib/gom/object/builder_spec.rb
|
94
|
+
- spec/lib/gom/object/collection_spec.rb
|
95
|
+
- spec/lib/gom/object/cached_builder_spec.rb
|
85
96
|
- spec/lib/gom/object/id_spec.rb
|
86
97
|
- spec/lib/gom/storage_spec.rb
|
87
98
|
- spec/storage.configuration
|
@@ -127,11 +138,16 @@ test_files:
|
|
127
138
|
- spec/lib/gom/storage/configuration_spec.rb
|
128
139
|
- spec/lib/gom/storage/remover_spec.rb
|
129
140
|
- spec/lib/gom/storage/saver_spec.rb
|
141
|
+
- spec/lib/gom/storage/configuration/view/class_spec.rb
|
142
|
+
- spec/lib/gom/storage/configuration/view/map_reduce_spec.rb
|
130
143
|
- spec/lib/gom/storage/adapter_spec.rb
|
131
|
-
- spec/lib/gom/object/injector_spec.rb
|
132
144
|
- spec/lib/gom/object/mapping_spec.rb
|
145
|
+
- spec/lib/gom/object/draft_spec.rb
|
133
146
|
- spec/lib/gom/object/proxy_spec.rb
|
134
147
|
- spec/lib/gom/object/inspector_spec.rb
|
148
|
+
- spec/lib/gom/object/builder_spec.rb
|
149
|
+
- spec/lib/gom/object/collection_spec.rb
|
150
|
+
- spec/lib/gom/object/cached_builder_spec.rb
|
135
151
|
- spec/lib/gom/object/id_spec.rb
|
136
152
|
- spec/lib/gom/storage_spec.rb
|
137
153
|
- spec/acceptance/object_spec.rb
|
data/lib/gom/object/injector.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
|
2
|
-
module GOM
|
3
|
-
|
4
|
-
module Object
|
5
|
-
|
6
|
-
# Injects the given properties into the given object.s
|
7
|
-
class Injector
|
8
|
-
|
9
|
-
attr_reader :object
|
10
|
-
|
11
|
-
def initialize(object, object_hash)
|
12
|
-
@object, @object_hash = object, object_hash
|
13
|
-
end
|
14
|
-
|
15
|
-
def perform
|
16
|
-
clear_instance_variables
|
17
|
-
write_properties
|
18
|
-
write_relations
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def clear_instance_variables
|
24
|
-
@object.instance_variables.each do |name|
|
25
|
-
@object.send :remove_instance_variable, name
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def write_properties
|
30
|
-
(@object_hash[:properties] || { }).each do |name, value|
|
31
|
-
@object.instance_variable_set :"@#{name}", value
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def write_relations
|
36
|
-
(@object_hash[:relations] || { }).each do |name, value|
|
37
|
-
@object.instance_variable_set :"@#{name}", value
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "spec_helper"))
|
2
|
-
|
3
|
-
describe GOM::Object::Injector do
|
4
|
-
|
5
|
-
before :each do
|
6
|
-
@related_object_proxy = Object.new
|
7
|
-
|
8
|
-
@object = Object.new
|
9
|
-
@object.instance_variable_set :@old, "old value"
|
10
|
-
@object_hash = {
|
11
|
-
:class => "Object",
|
12
|
-
:properties => { :test => "test value" },
|
13
|
-
:relations => { :related_object => @related_object_proxy }
|
14
|
-
}
|
15
|
-
@injector = GOM::Object::Injector.new @object, @object_hash
|
16
|
-
end
|
17
|
-
|
18
|
-
describe "perform" do
|
19
|
-
|
20
|
-
it "should clear all instance variables" do
|
21
|
-
@injector.perform
|
22
|
-
@injector.object.instance_variables.should_not include(:@old)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should set the properties" do
|
26
|
-
@injector.perform
|
27
|
-
@injector.object.instance_variable_get(:@test).should == "test value"
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should set the relations" do
|
31
|
-
@injector.perform
|
32
|
-
@injector.object.instance_variable_get(:@related_object).should == @related_object_proxy
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should work without a properties hash" do
|
36
|
-
@object_hash.delete :properties
|
37
|
-
lambda do
|
38
|
-
@injector.perform
|
39
|
-
end.should_not raise_error
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should work without a relations hash" do
|
43
|
-
@object_hash.delete :relations
|
44
|
-
lambda do
|
45
|
-
@injector.perform
|
46
|
-
end.should_not raise_error
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|