couch_potato 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## Changes
2
2
 
3
+ ### 1.1.1
4
+
5
+ * fixes properties were leaked to sibling classes (Alexander Lang)
6
+
3
7
  ### 1.1.0
4
8
 
5
9
  * adds conflict handling for Database#save/destroy (Alexander Lang)
@@ -21,6 +21,11 @@ module CouchPotato
21
21
  @list << property
22
22
  end
23
23
 
24
+ # XXX
25
+ def inspect
26
+ list.map(&:name).inspect
27
+ end
28
+
24
29
  def inherited_properties
25
30
  superclazz = @clazz.superclass
26
31
  properties = []
@@ -38,6 +43,7 @@ module CouchPotato
38
43
  def self.properties
39
44
  @properties ||= {}
40
45
  @properties[name] ||= PropertyList.new(self)
46
+ @properties[name]
41
47
  end
42
48
  end
43
49
  end
@@ -43,11 +43,12 @@ module CouchPotato
43
43
  private
44
44
 
45
45
  def accessors_module_for(clazz)
46
- unless clazz.const_defined?('AccessorMethods')
47
- accessors_module = clazz.const_set('AccessorMethods', Module.new)
46
+ module_name = "#{clazz.name.to_s.gsub('::', '__')}AccessorMethods"
47
+ unless clazz.const_defined?(module_name)
48
+ accessors_module = clazz.const_set(module_name, Module.new)
48
49
  clazz.send(:include, accessors_module)
49
50
  end
50
- clazz.const_get('AccessorMethods')
51
+ clazz.const_get(module_name)
51
52
  end
52
53
 
53
54
  def define_accessors(base, name, options)
@@ -1,3 +1,3 @@
1
1
  module CouchPotato
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.1"
3
3
  end
@@ -26,11 +26,27 @@ class CuckooClock < Watch
26
26
  property :cuckoo
27
27
  end
28
28
 
29
+ class SportsWatch < Watch
30
+ property :bpm
31
+ end
32
+
29
33
  describe 'properties' do
30
34
  before(:all) do
31
35
  recreate_db
32
36
  end
33
37
 
38
+ context 'inheritance' do
39
+ it 'has access to superclass properties' do
40
+ expect(CuckooClock.new.cuckoo).to be_nil
41
+ end
42
+
43
+ it "does not have access to properties of 'sibling classes'" do
44
+ expect {
45
+ CuckooClock.new.bpm
46
+ }.to raise_error(NoMethodError)
47
+ end
48
+ end
49
+
34
50
  it "should allow me to overwrite read accessor and call super" do
35
51
  Watch.new(:overwritten_read => 1).overwritten_read.should == '1'
36
52
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: couch_potato
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-01 00:00:00.000000000 Z
12
+ date: 2013-11-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json