store 0.0.7 → 0.0.8

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: 4b8b967c6d3ba58a8051a867938a7b4d27bfafb0
4
- data.tar.gz: de319d311003addd0b4ba4d23a49b2cf6d1bbad5
3
+ metadata.gz: 15236ed7a3059649b7fc2d2a176f301f0f2e86a6
4
+ data.tar.gz: dcd61648154c9dd8ed07ef6109fdfb69a3793020
5
5
  SHA512:
6
- metadata.gz: 90e236478c7c99cfaacc1c31956f1d185a9746c82824cdd59d0ae565e0450311205389dcf5c21a588148e7389eda845d1d1558061875982a68be7f0a6b27cadc
7
- data.tar.gz: e7ce1711703f946ddfd5731ab3d12542c1f0ba26496421cb0c375baadc56998c5c872ff298770ea6814db44d979c304104873dad7850f97a4531c072cf814cdd
6
+ metadata.gz: b72660068c02629603b61c5d866d0372d16bbc1eda9f68ec7d9a884a2586fd109d68e67a40ac3c5db44abfab794b3b370ae3ac073db9ca43cf53f43c726b243a
7
+ data.tar.gz: 7ca0022f25758605563cf494bbe9b65d2fe5fd0cb2baac9873d0414e5e627267cec9411aeaa20ef66e1e188c8fadad875eaa92d19391e2778826b3ec6ecf9f97
data/README.md CHANGED
@@ -27,6 +27,11 @@ Or install it yourself as:
27
27
 
28
28
  See [example.rb](https://github.com/holderbaum/store/blob/master/example.rb) for capabilities of the current implementation.
29
29
 
30
+ ## DataMapper
31
+
32
+ * [Memory](https://github.com/janowiesniak/store-memory)
33
+ * [ActiveRecord](https://github.com/janowiesniak/store-active_record)
34
+
30
35
  ## Contributing
31
36
 
32
37
  1. Fork it
@@ -106,6 +106,12 @@ class Store
106
106
  entities
107
107
  end
108
108
 
109
+ def reference(entity)
110
+ reference = find_entity_reference(entity)
111
+ raise "Unknown entity #{entity.inspect}" unless reference
112
+ build_reference entity, reference if reference
113
+ end
114
+
109
115
  private
110
116
  def save_entity(entity)
111
117
  return nil unless entity
@@ -121,6 +127,10 @@ class Store
121
127
  data_mapper.update(reference, extract_entity_attributes(entity))
122
128
  end
123
129
 
130
+ build_reference entity, reference
131
+ end
132
+
133
+ def build_reference(entity, reference)
124
134
  Ref.new(extract_entity_class_name(entity), reference)
125
135
  end
126
136
 
@@ -33,5 +33,9 @@ class Store
33
33
  def query(query)
34
34
  @store.query(query)
35
35
  end
36
+
37
+ def reference(entity)
38
+ @store.reference(entity)
39
+ end
36
40
  end
37
41
  end
@@ -3,6 +3,16 @@ require 'store/resolver/data_mapper'
3
3
 
4
4
  module Resolver
5
5
 
6
+ def extract_entity_class_name(obj)
7
+ if obj.kind_of? Store::Ref
8
+ extract_entity_class_name_from_ref(obj)
9
+ elsif obj.kind_of? Store::Query
10
+ extract_entity_class_name_from_query(obj)
11
+ else
12
+ extract_entity_class_name_from_object(obj)
13
+ end
14
+ end
15
+
6
16
  def extract_entity_class_name_from_ref(ref)
7
17
  ref.entity_type
8
18
  end
@@ -7,15 +7,7 @@ module Resolver
7
7
  end
8
8
 
9
9
  def resolve_data_mapper(obj)
10
- @mapping[
11
- if obj.kind_of? Store::Ref
12
- extract_entity_class_name_from_ref(obj)
13
- elsif obj.kind_of? Store::Query
14
- extract_entity_class_name_from_query(obj)
15
- else
16
- extract_entity_class_name_from_object(obj)
17
- end
18
- ]
10
+ @mapping[extract_entity_class_name(obj)]
19
11
  end
20
12
 
21
13
  end
@@ -8,15 +8,7 @@ module Resolver
8
8
  end
9
9
 
10
10
  def resolve_entity_mapper(obj)
11
- @mapping[
12
- if obj.kind_of? Store::Ref
13
- extract_entity_class_name_from_ref(obj)
14
- elsif obj.kind_of? Store::Query
15
- extract_entity_class_name_from_query(obj)
16
- else
17
- extract_entity_class_name_from_object(obj)
18
- end
19
- ].new(@store)
11
+ @mapping[extract_entity_class_name(obj)].new(@store)
20
12
  end
21
13
 
22
14
  end
@@ -1,3 +1,3 @@
1
1
  class Store
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -68,4 +68,24 @@ describe 'Store::Repo' do
68
68
  assert_equal :result, result
69
69
  end
70
70
 
71
+ describe 'private' do
72
+ it 'delegeates query to @store' do
73
+ store.expect :query, :result, [:arg]
74
+
75
+ result = repo.send :query, :arg
76
+
77
+ assert store.verify
78
+ assert_equal :result, result
79
+ end
80
+
81
+ it 'delegeates reference to @store' do
82
+ store.expect :reference, :result, [:arg]
83
+
84
+ result = repo.send :reference, :arg
85
+
86
+ assert store.verify
87
+ assert_equal :result, result
88
+ end
89
+ end
90
+
71
91
  end
@@ -134,11 +134,10 @@ describe 'store' do
134
134
 
135
135
  describe 'reload' do
136
136
  it 'delegates to load with reference' do
137
- ref = Store::Ref.new('name', :ref22)
138
- data_mapper.expect(:insert, ref, [entity_hash])
137
+ data_mapper.expect(:insert, :ref22, [entity_hash])
139
138
  store.save(entity)
140
139
 
141
- data_mapper.expect(:single_find, {'email' => '1', 'gender' => '2'}, [ref])
140
+ data_mapper.expect(:single_find, {'email' => '1', 'gender' => '2'}, [:ref22])
142
141
  result = store.reload(entity)
143
142
 
144
143
  assert data_mapper.verify
@@ -194,6 +193,25 @@ describe 'store' do
194
193
  end
195
194
  end
196
195
 
196
+ describe 'reference' do
197
+ it 'returns the reference for the given entity' do
198
+ ref = Store::Ref.new('name', :ref22)
199
+ data_mapper.expect(:insert, :ref22, [entity_hash])
200
+ store.save(entity)
201
+
202
+ result = store.reference(entity)
203
+ assert_equal ref, result
204
+ end
205
+
206
+ it 'raises if reference not known' do
207
+ error = assert_raises RuntimeError do
208
+ store.reference(entity)
209
+ end
210
+
211
+ assert_match(/unknown/i, error.message)
212
+ end
213
+ end
214
+
197
215
  describe 'building' do
198
216
  Project = Struct.new(:name, :due_date)
199
217
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jakob Holderbaum
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-31 00:00:00.000000000 Z
11
+ date: 2013-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler