gom 0.4.3 → 0.5.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.
@@ -0,0 +1,47 @@
1
+
2
+ shared_examples_for "an adapter with search view" do
3
+
4
+ before :all do
5
+ GOM::Storage.setup
6
+ end
7
+
8
+ after :all do
9
+ GOM::Storage.teardown
10
+ end
11
+
12
+ before :each do
13
+ @object_one = GOM::Spec::Object.new
14
+ @object_one.number = 11
15
+
16
+ @object_two = GOM::Spec::Object.new
17
+ @object_two.number = 24
18
+
19
+ @object_three = Object.new
20
+ @object_three.instance_variable_set :@number, 11
21
+ end
22
+
23
+ describe "fetching a search collection" do
24
+
25
+ before :each do
26
+ GOM::Storage.store @object_one, :test_storage
27
+ GOM::Storage.store @object_two, :test_storage
28
+
29
+ sleep 1.0 # wait until changes go through the river in the index
30
+ end
31
+
32
+ after :each do
33
+ GOM::Storage.remove @object_one
34
+ GOM::Storage.remove @object_two
35
+ end
36
+
37
+ it "should return the right results" do
38
+ collection = GOM::Storage.collection :test_storage, :test_search_view, :query => "11"
39
+ collection.should be_instance_of(GOM::Object::Collection)
40
+ collection.size.should == 1
41
+ collection.map(&:class).should == [ GOM::Spec::Object ]
42
+ collection.map(&:number).should == [ 11 ]
43
+ end
44
+
45
+ end
46
+
47
+ end
@@ -143,6 +143,29 @@ shared_examples_for "an adapter connected to a stateful storage" do
143
143
 
144
144
  end
145
145
 
146
+ describe "fetching an all collection" do
147
+
148
+ before :each do
149
+ GOM::Storage.store @object, :test_storage
150
+ end
151
+
152
+ after :each do
153
+ GOM::Storage.remove @related_object
154
+ GOM::Storage.remove @object
155
+ end
156
+
157
+ it "should provide a collection of the property view" do
158
+ collection = GOM::Storage.collection :test_storage, :test_all_view
159
+ collection.should be_instance_of(GOM::Object::Collection)
160
+ end
161
+
162
+ it "should provide a collection that contains all object of the database" do
163
+ collection = GOM::Storage.collection :test_storage, :test_all_view
164
+ collection.size.should == 2
165
+ end
166
+
167
+ end
168
+
146
169
  describe "fetching a property collection" do
147
170
 
148
171
  before :each do
@@ -66,6 +66,20 @@ shared_examples_for "a read-only adapter connected to a stateless storage" do
66
66
 
67
67
  end
68
68
 
69
+ describe "fetching an all collection" do
70
+
71
+ it "should return a collection" do
72
+ collection = GOM::Storage.collection :test_storage, :test_all_view
73
+ collection.should be_instance_of(GOM::Object::Collection)
74
+ end
75
+
76
+ it "should return a collection that contains all objects of the database" do
77
+ collection = GOM::Storage.collection :test_storage, :test_all_view
78
+ collection.size.should == 2
79
+ end
80
+
81
+ end
82
+
69
83
  describe "fetching a class collection" do
70
84
 
71
85
  it "should return a collection" do
@@ -75,7 +89,7 @@ shared_examples_for "a read-only adapter connected to a stateless storage" do
75
89
 
76
90
  it "should return a collection that contains all object of class Object" do
77
91
  collection = GOM::Storage.collection :test_storage, :test_object_class_view
78
- collection.size > 0
92
+ collection.size.should > 0
79
93
  collection.each do |object|
80
94
  [ 5, 7 ].should include(object.number)
81
95
  end
data/lib/gom/spec.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'rspec'
2
2
 
3
3
  require File.join(File.dirname(__FILE__), "spec", "acceptance", "adapter_that_needs_setup")
4
+ require File.join(File.dirname(__FILE__), "spec", "acceptance", "adapter_with_search")
4
5
  require File.join(File.dirname(__FILE__), "spec", "acceptance", "adapter_with_stateful_storage")
5
6
  require File.join(File.dirname(__FILE__), "spec", "acceptance", "read_only_adapter_with_stateless_storage")
6
7
 
@@ -0,0 +1,5 @@
1
+
2
+ # Contains all the parameters for an all view.
3
+ class GOM::Storage::Configuration::View::All
4
+
5
+ end
@@ -0,0 +1,11 @@
1
+
2
+ # Contains all the parameters for a search view.
3
+ class GOM::Storage::Configuration::View::Search
4
+
5
+ attr_accessor :class_name
6
+
7
+ def initialize(class_name)
8
+ @class_name = class_name
9
+ end
10
+
11
+ end
@@ -1,8 +1,10 @@
1
1
 
2
2
  module GOM::Storage::Configuration::View
3
3
 
4
+ autoload :All, File.join(File.dirname(__FILE__), "view", "all")
4
5
  autoload :Class, File.join(File.dirname(__FILE__), "view", "class")
5
6
  autoload :MapReduce, File.join(File.dirname(__FILE__), "view", "map_reduce")
6
7
  autoload :Property, File.join(File.dirname(__FILE__), "view", "property")
8
+ autoload :Search, File.join(File.dirname(__FILE__), "view", "search")
7
9
 
8
10
  end
@@ -89,6 +89,10 @@ class GOM::Storage::Configuration
89
89
  self.send method_name, hash
90
90
  end
91
91
 
92
+ def self.all_view(hash)
93
+ View::All.new
94
+ end
95
+
92
96
  def self.class_view(hash)
93
97
  View::Class.new hash[:model_class]
94
98
  end
@@ -101,6 +105,10 @@ class GOM::Storage::Configuration
101
105
  View::Property.new *hash.values_at(:filter, :properties)
102
106
  end
103
107
 
108
+ def self.search_view(hash)
109
+ View::Search.new hash[:model_class]
110
+ end
111
+
104
112
  def self.setup_all
105
113
  @configurations.values.each do |configuration|
106
114
  configuration.setup
data/spec/fake_adapter.rb CHANGED
@@ -1,6 +1,18 @@
1
1
 
2
2
  class FakeAdapter < GOM::Storage::Adapter
3
3
 
4
+ class AllCollectionFetcher
5
+
6
+ def initialize(store, storage_name)
7
+ @store, @storage_name = store, storage_name
8
+ end
9
+
10
+ def drafts
11
+ @store.values
12
+ end
13
+
14
+ end
15
+
4
16
  class PropertyCollectionFetcher
5
17
 
6
18
  def initialize(store, storage_name, filter, properties)
@@ -109,6 +121,8 @@ class FakeAdapter < GOM::Storage::Adapter
109
121
  raise GOM::Storage::Adapter::NoSetupError unless @store
110
122
  view = configuration.views[view_name]
111
123
  case view_name.to_sym
124
+ when :test_all_view
125
+ GOM::Object::Collection.new AllCollectionFetcher.new(@store, configuration.name), configuration.name
112
126
  when :test_property_view
113
127
  GOM::Object::Collection.new PropertyCollectionFetcher.new(@store, configuration.name, view.filter, view.properties), configuration.name
114
128
  when :test_object_class_view
@@ -0,0 +1,5 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "..", "..", "spec_helper"))
2
+
3
+ describe GOM::Storage::Configuration::View::All do
4
+
5
+ end
@@ -0,0 +1,17 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "..", "..", "spec_helper"))
2
+
3
+ describe GOM::Storage::Configuration::View::Search do
4
+
5
+ before :each do
6
+ @view = described_class.new [ "Object" ]
7
+ end
8
+
9
+ describe "initialize" do
10
+
11
+ it "should set the view's class name" do
12
+ @view.class_name.should == [ "Object" ]
13
+ end
14
+
15
+ end
16
+
17
+ end
@@ -4,6 +4,10 @@ GOM::Storage.configure {
4
4
  storage {
5
5
  name :test_storage
6
6
  adapter :fake_adapter
7
+ view {
8
+ name :test_all_view
9
+ kind :all
10
+ }
7
11
  view {
8
12
  name :test_property_view
9
13
  kind :property
metadata CHANGED
@@ -1,77 +1,56 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: gom
3
- version: !ruby/object:Gem::Version
4
- hash: 9
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 4
9
- - 3
10
- version: 0.4.3
11
6
  platform: ruby
12
- authors:
13
- - "Philipp Br\xC3\xBCll"
7
+ authors:
8
+ - Philipp Brüll
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-10-10 00:00:00 +02:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2011-10-19 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: configure
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &16490400 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 19
30
- segments:
31
- - 0
32
- - 3
33
- - 0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
34
21
  version: 0.3.0
35
22
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: rspec
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *16490400
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &16488920 !ruby/object:Gem::Requirement
41
28
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 7
46
- segments:
47
- - 2
48
- version: "2"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '2'
49
33
  type: :development
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: reek
53
34
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *16488920
36
+ - !ruby/object:Gem::Dependency
37
+ name: reek
38
+ requirement: &16486660 !ruby/object:Gem::Requirement
55
39
  none: false
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- hash: 11
60
- segments:
61
- - 1
62
- - 2
63
- version: "1.2"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '1.2'
64
44
  type: :development
65
- version_requirements: *id003
45
+ prerelease: false
46
+ version_requirements: *16486660
66
47
  description: Core package of the General Object Mapper.
67
48
  email: b.phifty@gmail.com
68
49
  executables: []
69
-
70
50
  extensions: []
71
-
72
- extra_rdoc_files:
51
+ extra_rdoc_files:
73
52
  - README.rdoc
74
- files:
53
+ files:
75
54
  - README.rdoc
76
55
  - LICENSE
77
56
  - Rakefile
@@ -86,6 +65,8 @@ files:
86
65
  - lib/gom/storage/counter.rb
87
66
  - lib/gom/storage/configuration/view/property.rb
88
67
  - lib/gom/storage/configuration/view/class.rb
68
+ - lib/gom/storage/configuration/view/search.rb
69
+ - lib/gom/storage/configuration/view/all.rb
89
70
  - lib/gom/storage/configuration/view/map_reduce.rb
90
71
  - lib/gom/storage/configuration/view.rb
91
72
  - lib/gom/storage/adapter.rb
@@ -99,6 +80,7 @@ files:
99
80
  - lib/gom/spec/object.rb
100
81
  - lib/gom/spec/acceptance/adapter_with_stateful_storage.rb
101
82
  - lib/gom/spec/acceptance/read_only_adapter_with_stateless_storage.rb
83
+ - lib/gom/spec/acceptance/adapter_with_search.rb
102
84
  - lib/gom/spec/acceptance/adapter_that_needs_setup.rb
103
85
  - lib/gom.rb
104
86
  - spec/fake_adapter.rb
@@ -115,6 +97,8 @@ files:
115
97
  - spec/lib/gom/storage/configuration/view/property_spec.rb
116
98
  - spec/lib/gom/storage/configuration/view/map_reduce_spec.rb
117
99
  - spec/lib/gom/storage/configuration/view/class_spec.rb
100
+ - spec/lib/gom/storage/configuration/view/all_spec.rb
101
+ - spec/lib/gom/storage/configuration/view/search_spec.rb
118
102
  - spec/lib/gom/storage/fetcher_spec.rb
119
103
  - spec/lib/gom/storage/remover_spec.rb
120
104
  - spec/lib/gom/storage/saver_spec.rb
@@ -126,41 +110,32 @@ files:
126
110
  - spec/acceptance/adapter_spec.rb
127
111
  - spec/acceptance/fake_adapter_spec.rb
128
112
  - spec/acceptance/object_spec.rb
129
- has_rdoc: true
130
113
  homepage: http://github.com/phifty/gom
131
114
  licenses: []
132
-
133
115
  post_install_message:
134
116
  rdoc_options: []
135
-
136
- require_paths:
117
+ require_paths:
137
118
  - lib
138
- required_ruby_version: !ruby/object:Gem::Requirement
119
+ required_ruby_version: !ruby/object:Gem::Requirement
139
120
  none: false
140
- requirements:
141
- - - ">="
142
- - !ruby/object:Gem::Version
143
- hash: 3
144
- segments:
145
- - 0
146
- version: "0"
147
- required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
148
126
  none: false
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- hash: 3
153
- segments:
154
- - 0
155
- version: "0"
127
+ requirements:
128
+ - - ! '>='
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
156
131
  requirements: []
157
-
158
132
  rubyforge_project: gom
159
- rubygems_version: 1.6.2
133
+ rubygems_version: 1.8.10
160
134
  signing_key:
161
135
  specification_version: 3
162
- summary: General Object Mapper - maps any ruby object to different kinds of storage engines and vice versa.
163
- test_files:
136
+ summary: General Object Mapper - maps any ruby object to different kinds of storage
137
+ engines and vice versa.
138
+ test_files:
164
139
  - spec/lib/gom/object/cached_builder_spec.rb
165
140
  - spec/lib/gom/object/inspector_spec.rb
166
141
  - spec/lib/gom/object/proxy_spec.rb
@@ -174,6 +149,8 @@ test_files:
174
149
  - spec/lib/gom/storage/configuration/view/property_spec.rb
175
150
  - spec/lib/gom/storage/configuration/view/map_reduce_spec.rb
176
151
  - spec/lib/gom/storage/configuration/view/class_spec.rb
152
+ - spec/lib/gom/storage/configuration/view/all_spec.rb
153
+ - spec/lib/gom/storage/configuration/view/search_spec.rb
177
154
  - spec/lib/gom/storage/fetcher_spec.rb
178
155
  - spec/lib/gom/storage/remover_spec.rb
179
156
  - spec/lib/gom/storage/saver_spec.rb