active_fedora-registered_attributes 0.2.0 → 0.2.1
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.
@@ -6,9 +6,6 @@ require "active_fedora/registered_attributes/attribute_registry"
|
|
6
6
|
module ActiveFedora
|
7
7
|
module RegisteredAttributes
|
8
8
|
extend ActiveSupport::Concern
|
9
|
-
included do
|
10
|
-
class_attribute :attribute_registry, instance_writer: false, instance_reader: false
|
11
|
-
end
|
12
9
|
|
13
10
|
delegate :attribute_defaults, to: :attribute_registry
|
14
11
|
delegate :input_options_for, to: :attribute_registry
|
@@ -22,6 +19,17 @@ module ActiveFedora
|
|
22
19
|
private :attribute_registry
|
23
20
|
|
24
21
|
module ClassMethods
|
22
|
+
def attribute_registry
|
23
|
+
@attribute_registry ||=
|
24
|
+
begin
|
25
|
+
if superclass.respond_to?(:attribute_registry)
|
26
|
+
superclass.attribute_registry.copy_to(self)
|
27
|
+
else
|
28
|
+
AttributeRegistry.new(self)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
25
33
|
def registered_attribute_names
|
26
34
|
attribute_registry.keys.collect(&:to_s)
|
27
35
|
end
|
@@ -35,7 +43,6 @@ module ActiveFedora
|
|
35
43
|
end
|
36
44
|
|
37
45
|
def attribute(attribute_name, options ={})
|
38
|
-
self.attribute_registry ||= AttributeRegistry.new(self)
|
39
46
|
self.attribute_registry.register(attribute_name, options) do |attribute|
|
40
47
|
|
41
48
|
attribute.with_validation_options do |name, opts|
|
@@ -7,9 +7,13 @@ module ActiveFedora
|
|
7
7
|
module RegisteredAttributes
|
8
8
|
class AttributeRegistry < DelegateClass(HashWithIndifferentAccess)
|
9
9
|
attr_accessor :context_class
|
10
|
-
def initialize(context_class)
|
10
|
+
def initialize(context_class, initial_container = HashWithIndifferentAccess.new)
|
11
11
|
@context_class = context_class
|
12
|
-
super(
|
12
|
+
super(initial_container)
|
13
|
+
end
|
14
|
+
|
15
|
+
def copy_to(target)
|
16
|
+
self.class.new(target, __getobj__.dup)
|
13
17
|
end
|
14
18
|
|
15
19
|
def register(attribute_name, options)
|
@@ -75,6 +75,11 @@ describe 'ActiveFedora::RegisteredAttributes' do
|
|
75
75
|
}
|
76
76
|
}
|
77
77
|
end
|
78
|
+
|
79
|
+
class ChildModel < MockDelegateAttribute
|
80
|
+
attribute :not_on_parent
|
81
|
+
end
|
82
|
+
|
78
83
|
subject { MockDelegateAttribute.new() }
|
79
84
|
|
80
85
|
describe '.registered_attribute_names' do
|
@@ -125,6 +130,29 @@ describe 'ActiveFedora::RegisteredAttributes' do
|
|
125
130
|
end
|
126
131
|
|
127
132
|
describe '.attribute' do
|
133
|
+
|
134
|
+
context 'for model inheritance' do
|
135
|
+
it 'does not add child declared attributes to parent class' do
|
136
|
+
expect {
|
137
|
+
MockDelegateAttribute.attribute_registry.fetch(:not_on_parent)
|
138
|
+
}.to raise_error(KeyError)
|
139
|
+
end
|
140
|
+
|
141
|
+
it 'children have parent attributes' do
|
142
|
+
expect {
|
143
|
+
ChildModel.attribute_registry.fetch(:title)
|
144
|
+
}.to_not raise_error(KeyError)
|
145
|
+
end
|
146
|
+
|
147
|
+
it 'children have attribute setting from parent' do
|
148
|
+
child = ChildModel.new
|
149
|
+
|
150
|
+
expect {
|
151
|
+
child.title = 'Hello'
|
152
|
+
}.to_not raise_error(NoMethodError)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
128
156
|
it 'handles attributes not delegated to a datastream' do
|
129
157
|
subject.not_in_the_datastream = 'World?'
|
130
158
|
expect(subject.not_in_the_datastream).to eq('World?')
|
metadata
CHANGED
@@ -1,32 +1,36 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_fedora-registered_attributes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Jeremy Friesen
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-
|
12
|
+
date: 2013-11-25 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: active-fedora
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- - '>='
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: 6.7.0
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- - '>='
|
27
|
+
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: 6.7.0
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: active_attr
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - ~>
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,7 @@ dependencies:
|
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - ~>
|
39
44
|
- !ruby/object:Gem::Version
|
@@ -41,6 +46,7 @@ dependencies:
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: bundler
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
51
|
- - ~>
|
46
52
|
- !ruby/object:Gem::Version
|
@@ -48,6 +54,7 @@ dependencies:
|
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
59
|
- - ~>
|
53
60
|
- !ruby/object:Gem::Version
|
@@ -55,29 +62,33 @@ dependencies:
|
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: rake
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
|
-
- - '>='
|
67
|
+
- - ! '>='
|
60
68
|
- !ruby/object:Gem::Version
|
61
69
|
version: '0'
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
|
-
- - '>='
|
75
|
+
- - ! '>='
|
67
76
|
- !ruby/object:Gem::Version
|
68
77
|
version: '0'
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: rspec
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
|
-
- - '>='
|
83
|
+
- - ! '>='
|
74
84
|
- !ruby/object:Gem::Version
|
75
85
|
version: '0'
|
76
86
|
type: :development
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
|
-
- - '>='
|
91
|
+
- - ! '>='
|
81
92
|
- !ruby/object:Gem::Version
|
82
93
|
version: '0'
|
83
94
|
description: An ActiveFedora extension for registring attributes
|
@@ -110,26 +121,33 @@ files:
|
|
110
121
|
homepage: http://github.com/projecthydra/active_fedora-registered_attributes
|
111
122
|
licenses:
|
112
123
|
- APACHE2
|
113
|
-
metadata: {}
|
114
124
|
post_install_message:
|
115
125
|
rdoc_options: []
|
116
126
|
require_paths:
|
117
127
|
- lib
|
118
128
|
required_ruby_version: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
119
130
|
requirements:
|
120
|
-
- - '>='
|
131
|
+
- - ! '>='
|
121
132
|
- !ruby/object:Gem::Version
|
122
133
|
version: '0'
|
134
|
+
segments:
|
135
|
+
- 0
|
136
|
+
hash: 136137362571869666
|
123
137
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
124
139
|
requirements:
|
125
|
-
- - '>='
|
140
|
+
- - ! '>='
|
126
141
|
- !ruby/object:Gem::Version
|
127
142
|
version: '0'
|
143
|
+
segments:
|
144
|
+
- 0
|
145
|
+
hash: 136137362571869666
|
128
146
|
requirements: []
|
129
147
|
rubyforge_project:
|
130
|
-
rubygems_version:
|
148
|
+
rubygems_version: 1.8.25
|
131
149
|
signing_key:
|
132
|
-
specification_version:
|
150
|
+
specification_version: 3
|
133
151
|
summary: An ActiveFedora extension for registring attributes
|
134
152
|
test_files:
|
135
153
|
- spec/lib/active_fedora/registered_attributes/attribute_registry_spec.rb
|
@@ -137,4 +155,3 @@ test_files:
|
|
137
155
|
- spec/lib/active_fedora/registered_attributes_spec.rb
|
138
156
|
- spec/spec_helper.rb
|
139
157
|
- spec/support/book.rb
|
140
|
-
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 4dc9320ae00b5cf5bb2128d3d6174300ea078e14
|
4
|
-
data.tar.gz: 669c91334c14819d2c81d2bca307330f9d225b7f
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 2abaf01c420893621250fc64e6f2de6b8dad920611c72ed17824ccb64821689a6c907371602fc486075e2afd900cb37122176c468380985dff90bc6dd3157889
|
7
|
-
data.tar.gz: 72631225b897f31797a2c1cb3abf1084a473e318a47d6ed79f0bd0bb67f341a3ccd70da18fac29ee8084b918fdd9ac9ec358354e9fc06cc3b01cbc4528fa0ff0
|