fedora_lens 0.0.2 → 0.0.3
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 +4 -4
- data/lib/fedora_lens/attribute_methods.rb +12 -0
- data/lib/fedora_lens/version.rb +1 -1
- data/lib/fedora_lens.rb +6 -1
- data/spec/fedora_lens_spec.rb +42 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7eaf60a6e220490635c6c9eef2c99cbe7453eaf
|
4
|
+
data.tar.gz: a0e300edb02fbd2abfdeee0c5368e43df86a35e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bd613f55ea525abba224a54ad39df2fcb0e8779bdbd4f95238c81e3c5b74dde7aeffb771e56b1d0bfdacdd2b3ce902db62747854b8cc4dfc682977f5eab7d06
|
7
|
+
data.tar.gz: 75a8cf0ac3f5d4ce1f7f26d3877e1cb64cc5d7bdd419458156cb84177d1ae2601cb6dbc6c3a40f9bb7fc2c2ff6029c126e81fcb39d077c5a643bb32fd93725b0
|
@@ -39,6 +39,18 @@ module FedoraLens
|
|
39
39
|
included do
|
40
40
|
class_attribute :attributes_as_lenses
|
41
41
|
self.attributes_as_lenses = {}.with_indifferent_access
|
42
|
+
class << self
|
43
|
+
def inherited_with_lenses(kls) #:nodoc:
|
44
|
+
## Do some inheritance logic that doesn't override Base.inherited
|
45
|
+
inherited_without_lenses kls
|
46
|
+
# each subclass should get a copy of the parent's attributes_as_lenses table,
|
47
|
+
# it should not add to the parent's definition table.
|
48
|
+
kls.attributes_as_lenses = kls.attributes_as_lenses.dup
|
49
|
+
end
|
50
|
+
alias_method_chain :inherited, :lenses
|
51
|
+
end
|
52
|
+
|
53
|
+
|
42
54
|
|
43
55
|
initialize_generated_modules
|
44
56
|
include Read
|
data/lib/fedora_lens/version.rb
CHANGED
data/lib/fedora_lens.rb
CHANGED
@@ -69,7 +69,6 @@ module FedoraLens
|
|
69
69
|
end
|
70
70
|
|
71
71
|
def save
|
72
|
-
@orm = self.class.orm_to_hash.put(@orm, @attributes)
|
73
72
|
new_record? ? create_record : update_record
|
74
73
|
end
|
75
74
|
|
@@ -111,12 +110,14 @@ module FedoraLens
|
|
111
110
|
end
|
112
111
|
|
113
112
|
def create_record
|
113
|
+
push_attributes_to_orm
|
114
114
|
orm.resource.create
|
115
115
|
@new_record = false
|
116
116
|
true
|
117
117
|
end
|
118
118
|
|
119
119
|
def update_record
|
120
|
+
push_attributes_to_orm
|
120
121
|
# Fedora errors out when you try to set the rdf:type
|
121
122
|
# see https://github.com/cbeer/ldp/issues/2
|
122
123
|
orm.graph.delete([@orm.resource.subject_uri,
|
@@ -129,6 +130,10 @@ module FedoraLens
|
|
129
130
|
|
130
131
|
private
|
131
132
|
|
133
|
+
def push_attributes_to_orm
|
134
|
+
@orm = self.class.orm_to_hash.put(@orm, @attributes)
|
135
|
+
end
|
136
|
+
|
132
137
|
def get_attributes_from_orm(orm)
|
133
138
|
self.class.orm_to_hash.get(orm).with_indifferent_access
|
134
139
|
end
|
data/spec/fedora_lens_spec.rb
CHANGED
@@ -6,6 +6,7 @@ describe FedoraLens do
|
|
6
6
|
class TestClass
|
7
7
|
include FedoraLens
|
8
8
|
attribute :title, [RDF::DC11.title, Lenses.single, Lenses.literal_to_string]
|
9
|
+
attribute :size, [RDF::DC11.subject, Lenses.single, Lenses.literal_to_string]
|
9
10
|
# attribute :xml_title, [RDF::DC11.title, Lenses.single]
|
10
11
|
end
|
11
12
|
|
@@ -16,6 +17,13 @@ describe FedoraLens do
|
|
16
17
|
|
17
18
|
subject { TestClass.new }
|
18
19
|
|
20
|
+
# before do
|
21
|
+
# require 'logger'
|
22
|
+
# Ldp.logger = Logger.new(STDOUT).tap do |l|
|
23
|
+
# l.level = Logger::DEBUG
|
24
|
+
# end
|
25
|
+
# end
|
26
|
+
|
19
27
|
describe ".find" do
|
20
28
|
context "when the object doesn't exist" do
|
21
29
|
it "should raise an error" do
|
@@ -42,12 +50,14 @@ describe FedoraLens do
|
|
42
50
|
|
43
51
|
describe ".create" do
|
44
52
|
subject { TestClass.create(attributes) }
|
53
|
+
|
45
54
|
context "with a hash" do
|
46
55
|
let(:attributes) { { title: "created resource" } }
|
47
56
|
it "creates a resource" do
|
48
57
|
expect(TestClass.find(subject.id).title).to eq "created resource"
|
49
58
|
end
|
50
59
|
end
|
60
|
+
|
51
61
|
context "with nil" do
|
52
62
|
let(:attributes) { nil }
|
53
63
|
it "creates a resource" do
|
@@ -95,7 +105,9 @@ describe FedoraLens do
|
|
95
105
|
describe ".attribute" do
|
96
106
|
it "makes a setter/getter" do
|
97
107
|
subject.title = "foo"
|
108
|
+
subject.size = "bar"
|
98
109
|
expect(subject.title).to eq "foo"
|
110
|
+
expect(subject.size).to eq "bar"
|
99
111
|
end
|
100
112
|
|
101
113
|
it "should return nil if it hasn't been set" do
|
@@ -112,5 +124,35 @@ describe FedoraLens do
|
|
112
124
|
|
113
125
|
it "mixes rdf and xml" do
|
114
126
|
end
|
127
|
+
|
128
|
+
context "that are inherited" do
|
129
|
+
class TestSubclass < TestClass
|
130
|
+
attribute :description, [RDF::DC11.description, Lenses.single, Lenses.literal_to_string]
|
131
|
+
end
|
132
|
+
|
133
|
+
subject { TestSubclass.new }
|
134
|
+
|
135
|
+
it "should have accessor methods defined by the parent" do
|
136
|
+
subject.title = "foo"
|
137
|
+
subject.description = "bar"
|
138
|
+
expect(subject.title).to eq "foo"
|
139
|
+
expect(subject.description).to eq "bar"
|
140
|
+
end
|
141
|
+
|
142
|
+
context "a sibling class" do
|
143
|
+
class TestAnotherSubclass < TestClass
|
144
|
+
end
|
145
|
+
|
146
|
+
subject { TestAnotherSubclass }
|
147
|
+
|
148
|
+
it "instances should not have accessor methods defined by the other sibling" do
|
149
|
+
expect { subject.new.description }.to raise_error NoMethodError
|
150
|
+
end
|
151
|
+
|
152
|
+
it "should not have attribute lenses defined by the other sibling" do
|
153
|
+
expect(TestAnotherSubclass.attributes_as_lenses.keys).to_not include "description"
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
115
157
|
end
|
116
158
|
end
|