kissifer-hash-persistent 0.2.1 → 0.2.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{hash-persistent}
5
- s.version = "0.2.1"
5
+ s.version = "0.2.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["kissifer"]
9
- s.date = %q{2009-05-28}
9
+ s.date = %q{2009-06-02}
10
10
  s.email = %q{tierneydrchris@gmail.com}
11
11
  s.extra_rdoc_files = [
12
12
  "LICENSE",
@@ -9,10 +9,13 @@ module HashPersistent
9
9
  end
10
10
 
11
11
  module ClassMethods
12
+ attr_reader :resource_class
13
+
12
14
  def attach(resource_class, collection_basis)
13
15
  raise ArgumentError unless resource_class.included_modules.include?(HashPersistent::Resource)
14
16
  raise ArgumentError unless resource_class.instance_methods.include?(collection_basis.to_s)
15
17
  @collection_basis = collection_basis
18
+ @resource_class = resource_class
16
19
  resource_class.on_save do |resource|
17
20
  collected_resource_saved(resource)
18
21
  end
@@ -46,5 +49,11 @@ module HashPersistent
46
49
  end
47
50
 
48
51
  attr_accessor :collected_keys
52
+
53
+ def collected_resources
54
+ collected_keys.collect do |key|
55
+ self.class.resource_class.send(:find, key)
56
+ end
57
+ end
49
58
  end
50
59
  end
@@ -183,7 +183,28 @@ describe "A class that includes HashPersistent::Collection" do
183
183
 
184
184
  CollectionFoo.find("the_basis").should == nil
185
185
  end
186
+
187
+ it "should be helpful and derefence its keys when asked" do
188
+ CollectionFoo.persist_to({}, "")
189
+ CollectedResource.persist_to({}, "")
190
+
191
+ CollectionFoo.attach(CollectedResource, :basis)
192
+
193
+ resource_1 = CollectedResource.new
194
+ resource_1.basis = "the_basis"
195
+ resource_1.key = "fred"
196
+ resource_1.save
186
197
 
198
+ CollectionFoo.find("the_basis").collected_resources.should == [resource_1]
199
+
200
+ resource_2 = CollectedResource.new
201
+ resource_2.basis = "the_basis"
202
+ resource_2.key = "barney"
203
+ resource_2.save
204
+
205
+ CollectionFoo.find("the_basis").collected_resources.should == [resource_1, resource_2]
206
+
207
+ end
187
208
  end
188
209
 
189
210
  context "(concurrent access)" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kissifer-hash-persistent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - kissifer
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-28 00:00:00 -07:00
12
+ date: 2009-06-02 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15