active-fedora 6.8.0 → 7.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (215) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +15 -5
  4. data/CONTRIBUTING.md +2 -0
  5. data/Gemfile +0 -2
  6. data/History.txt +2 -32
  7. data/README.md +143 -0
  8. data/Rakefile +5 -7
  9. data/active-fedora.gemspec +9 -9
  10. data/gemfiles/rails3.gemfile +11 -0
  11. data/gemfiles/rails4.gemfile +10 -0
  12. data/lib/active_fedora.rb +31 -4
  13. data/lib/active_fedora/association_relation.rb +18 -0
  14. data/lib/active_fedora/associations.rb +38 -171
  15. data/lib/active_fedora/associations/association.rb +163 -0
  16. data/lib/active_fedora/associations/association_scope.rb +39 -0
  17. data/lib/active_fedora/associations/belongs_to_association.rb +47 -25
  18. data/lib/active_fedora/associations/builder/association.rb +55 -0
  19. data/lib/active_fedora/associations/builder/belongs_to.rb +100 -0
  20. data/lib/active_fedora/associations/builder/collection_association.rb +56 -0
  21. data/lib/active_fedora/associations/builder/has_and_belongs_to_many.rb +30 -0
  22. data/lib/active_fedora/associations/builder/has_many.rb +63 -0
  23. data/lib/active_fedora/associations/builder/singular_association.rb +32 -0
  24. data/lib/active_fedora/associations/{association_collection.rb → collection_association.rb} +203 -53
  25. data/lib/active_fedora/associations/collection_proxy.rb +862 -0
  26. data/lib/active_fedora/associations/has_and_belongs_to_many_association.rb +35 -25
  27. data/lib/active_fedora/associations/has_many_association.rb +36 -11
  28. data/lib/active_fedora/associations/singular_association.rb +62 -0
  29. data/lib/active_fedora/attributes.rb +43 -139
  30. data/lib/active_fedora/autosave_association.rb +317 -0
  31. data/lib/active_fedora/base.rb +10 -327
  32. data/lib/active_fedora/callbacks.rb +1 -3
  33. data/lib/active_fedora/content_model.rb +16 -0
  34. data/lib/active_fedora/core.rb +151 -0
  35. data/lib/active_fedora/datastream_attribute.rb +76 -0
  36. data/lib/active_fedora/datastream_hash.rb +8 -13
  37. data/lib/active_fedora/datastreams.rb +39 -26
  38. data/lib/active_fedora/digital_object.rb +2 -2
  39. data/lib/active_fedora/fedora_attributes.rb +45 -0
  40. data/lib/active_fedora/fixture_loader.rb +1 -1
  41. data/lib/active_fedora/indexing.rb +6 -1
  42. data/lib/active_fedora/model.rb +0 -17
  43. data/lib/active_fedora/nested_attributes.rb +2 -2
  44. data/lib/active_fedora/null_relation.rb +7 -0
  45. data/lib/active_fedora/om_datastream.rb +3 -4
  46. data/lib/active_fedora/persistence.rb +41 -29
  47. data/lib/active_fedora/querying.rb +2 -163
  48. data/lib/active_fedora/rdf.rb +1 -0
  49. data/lib/active_fedora/rdf/indexing.rb +67 -0
  50. data/lib/active_fedora/rdf_datastream.rb +2 -50
  51. data/lib/active_fedora/rdf_node.rb +12 -7
  52. data/lib/active_fedora/rdf_node/term_proxy.rb +30 -21
  53. data/lib/active_fedora/rdfxml_rdf_datastream.rb +1 -1
  54. data/lib/active_fedora/reflection.rb +163 -20
  55. data/lib/active_fedora/relation.rb +33 -130
  56. data/lib/active_fedora/relation/calculations.rb +19 -0
  57. data/lib/active_fedora/relation/delegation.rb +22 -0
  58. data/lib/active_fedora/relation/finder_methods.rb +247 -0
  59. data/lib/active_fedora/relation/merger.rb +22 -0
  60. data/lib/active_fedora/relation/query_methods.rb +58 -0
  61. data/lib/active_fedora/relation/spawn_methods.rb +46 -0
  62. data/lib/active_fedora/relationship_graph.rb +0 -2
  63. data/lib/active_fedora/rels_ext_datastream.rb +1 -4
  64. data/lib/active_fedora/rubydora_connection.rb +1 -1
  65. data/lib/active_fedora/scoping.rb +20 -0
  66. data/lib/active_fedora/scoping/default.rb +38 -0
  67. data/lib/active_fedora/scoping/named.rb +32 -0
  68. data/lib/active_fedora/semantic_node.rb +54 -106
  69. data/lib/active_fedora/serialization.rb +19 -0
  70. data/lib/active_fedora/sharding.rb +58 -0
  71. data/lib/active_fedora/solr_digital_object.rb +15 -5
  72. data/lib/active_fedora/solr_instance_loader.rb +1 -1
  73. data/lib/active_fedora/solr_service.rb +1 -1
  74. data/lib/active_fedora/unsaved_digital_object.rb +6 -4
  75. data/lib/active_fedora/version.rb +1 -1
  76. data/lib/tasks/active_fedora.rake +3 -0
  77. data/lib/tasks/active_fedora_dev.rake +6 -5
  78. data/spec/config_helper.rb +14 -14
  79. data/spec/integration/associations_spec.rb +168 -455
  80. data/spec/integration/attributes_spec.rb +12 -11
  81. data/spec/integration/auditable_spec.rb +11 -11
  82. data/spec/integration/autosave_association_spec.rb +25 -0
  83. data/spec/integration/base_spec.rb +163 -163
  84. data/spec/integration/belongs_to_association_spec.rb +166 -0
  85. data/spec/integration/bug_spec.rb +7 -7
  86. data/spec/integration/collection_association_spec.rb +58 -0
  87. data/spec/integration/complex_rdf_datastream_spec.rb +88 -88
  88. data/spec/integration/datastream_collections_spec.rb +69 -69
  89. data/spec/integration/datastream_spec.rb +43 -43
  90. data/spec/integration/datastreams_spec.rb +63 -63
  91. data/spec/integration/delete_all_spec.rb +46 -39
  92. data/spec/integration/fedora_solr_sync_spec.rb +5 -5
  93. data/spec/integration/field_to_solr_name_spec.rb +34 -0
  94. data/spec/integration/full_featured_model_spec.rb +100 -101
  95. data/spec/integration/has_and_belongs_to_many_associations_spec.rb +341 -0
  96. data/spec/integration/has_many_associations_spec.rb +172 -24
  97. data/spec/integration/json_serialization_spec.rb +31 -0
  98. data/spec/integration/load_from_solr_spec.rb +48 -0
  99. data/spec/integration/model_spec.rb +35 -40
  100. data/spec/integration/nested_attribute_spec.rb +42 -43
  101. data/spec/integration/ntriples_datastream_spec.rb +131 -113
  102. data/spec/integration/om_datastream_spec.rb +67 -67
  103. data/spec/integration/persistence_spec.rb +7 -7
  104. data/spec/integration/rdf_nested_attributes_spec.rb +56 -56
  105. data/spec/integration/relation_delegation_spec.rb +26 -25
  106. data/spec/integration/relation_spec.rb +42 -0
  107. data/spec/integration/rels_ext_datastream_spec.rb +20 -20
  108. data/spec/integration/scoped_query_spec.rb +61 -51
  109. data/spec/integration/solr_instance_loader_spec.rb +5 -5
  110. data/spec/integration/solr_service_spec.rb +46 -46
  111. data/spec/samples/hydra-mods_article_datastream.rb +334 -334
  112. data/spec/samples/hydra-rights_metadata_datastream.rb +57 -57
  113. data/spec/samples/marpa-dc_datastream.rb +17 -17
  114. data/spec/samples/models/audio_record.rb +16 -16
  115. data/spec/samples/models/image.rb +2 -2
  116. data/spec/samples/models/mods_article.rb +5 -5
  117. data/spec/samples/models/oral_history.rb +18 -18
  118. data/spec/samples/models/seminar.rb +24 -24
  119. data/spec/samples/models/seminar_audio_file.rb +17 -17
  120. data/spec/samples/oral_history_sample_model.rb +21 -21
  121. data/spec/samples/special_thing.rb +14 -14
  122. data/spec/spec_helper.rb +11 -7
  123. data/spec/support/an_active_model.rb +2 -8
  124. data/spec/support/freeze_mocks.rb +12 -0
  125. data/spec/support/mock_fedora.rb +17 -16
  126. data/spec/unit/active_fedora_spec.rb +58 -60
  127. data/spec/unit/attributes_spec.rb +314 -0
  128. data/spec/unit/base_active_model_spec.rb +28 -27
  129. data/spec/unit/base_cma_spec.rb +5 -5
  130. data/spec/unit/base_datastream_management_spec.rb +27 -27
  131. data/spec/unit/base_extra_spec.rb +76 -48
  132. data/spec/unit/base_spec.rb +277 -348
  133. data/spec/unit/callback_spec.rb +18 -19
  134. data/spec/unit/code_configurator_spec.rb +17 -17
  135. data/spec/unit/config_spec.rb +8 -16
  136. data/spec/unit/content_model_spec.rb +79 -60
  137. data/spec/unit/datastream_collections_spec.rb +229 -229
  138. data/spec/unit/datastream_spec.rb +51 -63
  139. data/spec/unit/datastreams_spec.rb +87 -87
  140. data/spec/unit/file_configurator_spec.rb +217 -217
  141. data/spec/unit/has_and_belongs_to_many_collection_spec.rb +44 -25
  142. data/spec/unit/has_many_collection_spec.rb +26 -8
  143. data/spec/unit/inheritance_spec.rb +13 -12
  144. data/spec/unit/model_spec.rb +39 -45
  145. data/spec/unit/nom_datastream_spec.rb +15 -15
  146. data/spec/unit/ntriples_datastream_spec.rb +123 -118
  147. data/spec/unit/om_datastream_spec.rb +227 -233
  148. data/spec/unit/persistence_spec.rb +34 -15
  149. data/spec/unit/predicates_spec.rb +73 -73
  150. data/spec/unit/property_spec.rb +17 -9
  151. data/spec/unit/qualified_dublin_core_datastream_spec.rb +33 -33
  152. data/spec/unit/query_spec.rb +222 -198
  153. data/spec/unit/rdf_datastream_spec.rb +21 -28
  154. data/spec/unit/rdf_list_nested_attributes_spec.rb +34 -34
  155. data/spec/unit/rdf_list_spec.rb +65 -64
  156. data/spec/unit/rdf_node_spec.rb +7 -7
  157. data/spec/unit/rdf_xml_writer_spec.rb +10 -10
  158. data/spec/unit/rdfxml_rdf_datastream_spec.rb +27 -27
  159. data/spec/unit/relationship_graph_spec.rb +51 -51
  160. data/spec/unit/rels_ext_datastream_spec.rb +68 -74
  161. data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +15 -15
  162. data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +15 -15
  163. data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +15 -15
  164. data/spec/unit/rspec_matchers/match_fedora_datastream_matcher_spec.rb +12 -12
  165. data/spec/unit/rubydora_connection_spec.rb +5 -5
  166. data/spec/unit/semantic_node_spec.rb +48 -107
  167. data/spec/unit/serializers_spec.rb +4 -4
  168. data/spec/unit/service_definitions_spec.rb +26 -26
  169. data/spec/unit/simple_datastream_spec.rb +17 -17
  170. data/spec/unit/solr_config_options_spec.rb +29 -28
  171. data/spec/unit/solr_digital_object_spec.rb +17 -25
  172. data/spec/unit/solr_service_spec.rb +95 -82
  173. data/spec/unit/unsaved_digital_object_spec.rb +24 -23
  174. data/spec/unit/validations_spec.rb +21 -21
  175. metadata +110 -159
  176. data/.rspec +0 -1
  177. data/.rubocop.yml +0 -1
  178. data/.rubocop_todo.yml +0 -938
  179. data/CONSOLE_GETTING_STARTED.textile +0 -1
  180. data/NOKOGIRI_DATASTREAMS.textile +0 -1
  181. data/README.textile +0 -116
  182. data/lib/active_fedora/associations/association_proxy.rb +0 -178
  183. data/lib/active_fedora/delegating.rb +0 -72
  184. data/lib/active_fedora/nokogiri_datastream.rb +0 -11
  185. data/spec/integration/delegating_spec.rb +0 -59
  186. data/spec/rails3_test_app/.gitignore +0 -4
  187. data/spec/rails3_test_app/.rspec +0 -1
  188. data/spec/rails3_test_app/Gemfile +0 -40
  189. data/spec/rails3_test_app/Rakefile +0 -7
  190. data/spec/rails3_test_app/app/controllers/application_controller.rb +0 -3
  191. data/spec/rails3_test_app/app/helpers/application_helper.rb +0 -2
  192. data/spec/rails3_test_app/app/views/layouts/application.html.erb +0 -14
  193. data/spec/rails3_test_app/config.ru +0 -4
  194. data/spec/rails3_test_app/config/application.rb +0 -42
  195. data/spec/rails3_test_app/config/boot.rb +0 -6
  196. data/spec/rails3_test_app/config/database.yml +0 -22
  197. data/spec/rails3_test_app/config/environment.rb +0 -5
  198. data/spec/rails3_test_app/config/environments/development.rb +0 -25
  199. data/spec/rails3_test_app/config/environments/production.rb +0 -49
  200. data/spec/rails3_test_app/config/environments/test.rb +0 -35
  201. data/spec/rails3_test_app/config/initializers/backtrace_silencers.rb +0 -7
  202. data/spec/rails3_test_app/config/initializers/inflections.rb +0 -10
  203. data/spec/rails3_test_app/config/initializers/mime_types.rb +0 -5
  204. data/spec/rails3_test_app/config/initializers/secret_token.rb +0 -7
  205. data/spec/rails3_test_app/config/initializers/session_store.rb +0 -8
  206. data/spec/rails3_test_app/config/locales/en.yml +0 -5
  207. data/spec/rails3_test_app/config/routes.rb +0 -58
  208. data/spec/rails3_test_app/db/seeds.rb +0 -7
  209. data/spec/rails3_test_app/run_tests +0 -3
  210. data/spec/rails3_test_app/script/rails +0 -6
  211. data/spec/rails3_test_app/spec/spec_helper.rb +0 -27
  212. data/spec/rails3_test_app/spec/unit/rails_3_init.rb +0 -15
  213. data/spec/unit/association_proxy_spec.rb +0 -12
  214. data/spec/unit/base_delegate_spec.rb +0 -197
  215. data/spec/unit/base_delegate_to_spec.rb +0 -73
@@ -1,12 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveFedora::Associations::AssociationProxy do
4
- it 'should delegate to_param' do
5
- skip
6
- @owner = double(:new_record? => false)
7
- @assoc = ActiveFedora::Associations::AssociationProxy.new(@owner, @reflection)
8
- expect(@assoc).to receive(:find_target).and_return(double(:to_param => '1234'))
9
- @assoc.send(:load_target)
10
- expect(@assoc.to_param).to eq('1234')
11
- end
12
- end
@@ -1,197 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveFedora::Base do
4
- before :all do
5
- class BarStream2 < ActiveFedora::OmDatastream
6
- set_terminology do |t|
7
- t.root(:path => 'animals', :xmlns => 'urn:zoobar')
8
- t.waterfowl do
9
- t.ducks do
10
- t.duck
11
- end
12
- end
13
- t.donkey()
14
- t.cow()
15
- t.pig()
16
- t.horse()
17
- end
18
-
19
- def self.xml_template
20
- Nokogiri::XML::Document.parse '<animals xmlns="urn:zoobar">
21
- <waterfowl>
22
- <ducks>
23
- <duck/>
24
- </ducks>
25
- </waterfowl>
26
- <donkey></donkey>
27
- <cow></cow>
28
- </animals>'
29
- end
30
- end
31
- end
32
- after :all do
33
- Object.send(:remove_const, :BarStream2)
34
- end
35
-
36
- describe 'first level delegation' do
37
- before :all do
38
- class BarHistory2 < ActiveFedora::Base
39
- has_metadata :type => ActiveFedora::SimpleDatastream, :name => 'someData' do |m|
40
- m.field 'fubar', :string
41
- m.field 'bandana', :string
42
- m.field 'swank', :text
43
- end
44
- has_metadata :type => ActiveFedora::SimpleDatastream, :name => 'withText' do |m|
45
- m.field 'fubar', :text
46
- end
47
- has_metadata :type => ActiveFedora::SimpleDatastream, :name => 'withText2', :label => 'withLabel' do |m|
48
- m.field 'fubar', :text
49
- end
50
-
51
- has_metadata :type => BarStream2, :name => 'xmlish'
52
- delegate :fubar, :to => 'withText', :unique => true
53
- delegate :donkey, :to => 'xmlish', :unique => true
54
- delegate :cow, :to => 'xmlish' # for testing the default value of multiple
55
- delegate :pig, :to => 'xmlish', multiple: false
56
- delegate :horse, :to => 'xmlish', multiple: true
57
- delegate :duck, :to => 'xmlish', :at => [:waterfowl, :ducks], multiple: true
58
- end
59
- end
60
-
61
- after :all do
62
- Object.send(:remove_const, :BarHistory2)
63
- end
64
-
65
- subject { BarHistory2.new() }
66
-
67
- it 'should reveal the unique properties' do
68
- expect(BarHistory2.unique?(:fubar)).to be_truthy
69
- expect(BarHistory2.unique?(:cow)).to be_falsey
70
- end
71
-
72
- it 'should save a delegated property uniquely' do
73
- subject.fubar = 'Quack'
74
- expect(subject.fubar).to eq('Quack')
75
- expect(subject.withText.get_values(:fubar).first).to eq('Quack')
76
- subject.donkey = 'Bray'
77
- expect(subject.donkey).to eq('Bray')
78
- expect(subject.xmlish.term_values(:donkey).first).to eq('Bray')
79
-
80
- subject.pig = 'Oink'
81
- expect(subject.pig).to eq('Oink')
82
- end
83
-
84
- it 'should allow passing parameters to the delegate accessor' do
85
- subject.cow = ['one', 'two']
86
- expect(subject.cow(1)).to eq(['two'])
87
- end
88
-
89
-
90
- it 'should return an array if not marked as unique' do
91
- ### Metadata datastream does not appear to support multiple value setting
92
- subject.cow = ['one', 'two']
93
- expect(subject.cow).to eq(['one', 'two'])
94
-
95
- subject.horse = ['neigh', 'whinny']
96
- expect(subject.horse).to eq(['neigh', 'whinny'])
97
- end
98
-
99
- it 'should be able to delegate deeply into the terminology' do
100
- subject.duck = ['Quack', 'Peep']
101
- expect(subject.duck).to eq(['Quack', 'Peep'])
102
- end
103
-
104
- it 'should be able to track change status' do
105
- expect(subject.fubar_changed?).to be_falsey
106
- subject.fubar = 'Meow'
107
- expect(subject.fubar_changed?).to be_truthy
108
- end
109
-
110
- describe 'array getters and setters' do
111
- it 'should accept symbol keys' do
112
- subject[:duck] = ['Cluck', 'Gobble']
113
- expect(subject[:duck]).to eq(['Cluck', 'Gobble'])
114
- end
115
-
116
- it 'should accept string keys' do
117
- subject['duck'] = ['Cluck', 'Gobble']
118
- expect(subject['duck']).to eq(['Cluck', 'Gobble'])
119
- end
120
-
121
- it "should raise an error on the reader when the field isn't delegated" do
122
- expect {subject['goose'] }.to raise_error ActiveFedora::UnknownAttributeError, "BarHistory2 does not have an attribute `goose'"
123
- end
124
-
125
- it "should raise an error on the setter when the field isn't delegated" do
126
- expect {subject['goose'] = 'honk' }.to raise_error ActiveFedora::UnknownAttributeError, "BarHistory2 does not have an attribute `goose'"
127
- end
128
- end
129
-
130
- end
131
-
132
- describe 'with a superclass' do
133
- before :all do
134
- class BarHistory2 < ActiveFedora::Base
135
- has_metadata 'xmlish', :type => BarStream2
136
- delegate_to 'xmlish', [:donkey, :cow], multiple: true
137
- end
138
- class BarHistory3 < BarHistory2
139
- end
140
- end
141
-
142
- after :all do
143
- Object.send(:remove_const, :BarHistory3)
144
- Object.send(:remove_const, :BarHistory2)
145
- end
146
-
147
- subject { BarHistory3.new }
148
-
149
- it 'should be able to delegate deeply into the terminology' do
150
- subject.donkey = ['Bray', 'Hee-haw']
151
- expect(subject.donkey).to eq(['Bray', 'Hee-haw'])
152
- end
153
-
154
- it 'should be able to track change status' do
155
- expect(subject.cow_changed?).to be_falsey
156
- subject.cow = ['Moo']
157
- expect(subject.cow_changed?).to be_truthy
158
- end
159
- end
160
-
161
- describe 'with a RDF datastream' do
162
- before :all do
163
- class BarRdfDatastream < ActiveFedora::NtriplesRDFDatastream
164
- map_predicates do |map|
165
- map.title(in: RDF::DC)
166
- map.description(in: RDF::DC, multivalue: false)
167
- end
168
- end
169
- class BarHistory4 < ActiveFedora::Base
170
- has_metadata 'rdfish', :type => BarRdfDatastream
171
- delegate_to 'rdfish', [:title, :description], multiple: true
172
- end
173
- end
174
-
175
- after :all do
176
- Object.send(:remove_const, :BarHistory4)
177
- Object.send(:remove_const, :BarRdfDatastream)
178
- end
179
-
180
- subject { BarHistory4.new }
181
-
182
- describe 'with a multivalued field' do
183
- it 'should be able to track change status' do
184
- expect(subject.title_changed?).to be_falsey
185
- subject.title = ['Title1', 'Title2']
186
- expect(subject.title_changed?).to be_truthy
187
- end
188
- end
189
- describe 'with a single-valued field' do
190
- it 'should be able to track change status' do
191
- expect(subject.description_changed?).to be_falsey
192
- subject.description = 'A brief description'
193
- expect(subject.description_changed?).to be_truthy
194
- end
195
- end
196
- end
197
- end
@@ -1,73 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveFedora::Base do
4
-
5
- describe 'deletgating multiple terms to one datastream' do
6
- class BarnyardDocument < ActiveFedora::OmDatastream
7
- set_terminology do |t|
8
- t.root(:path => 'animals', :xmlns => 'urn:zoobar')
9
- t.waterfowl do
10
- t.ducks do
11
- t.duck
12
- end
13
- end
14
- t.donkey()
15
- t.cow()
16
- t.horse()
17
- t.chicken()
18
- t.pig()
19
- t.duck(:ref => [:waterfowl, :ducks, :duck])
20
- end
21
-
22
- def self.xml_template
23
- Nokogiri::XML::Document.parse '<animals xmlns="urn:zoobar">
24
- <waterfowl>
25
- <ducks>
26
- <duck/>
27
- </ducks>
28
- </waterfowl>
29
- <donkey></donkey>
30
- <cow></cow>
31
- <horse></horse>
32
- <chicken></chicken>
33
- <pig></pig>
34
- </animals>'
35
- end
36
- end
37
-
38
- class Barnyard < ActiveFedora::Base
39
- has_metadata :type => BarnyardDocument, :name => 'xmlish'
40
- delegate_to :xmlish, [:cow, :chicken, :pig, :duck], multiple: true
41
- delegate_to :xmlish, [:donkey, :horse], :unique => true
42
- # delegate :donkey, :to=>'xmlish', :unique=>true
43
- end
44
- before :each do
45
- @n = Barnyard.new()
46
- end
47
- it 'should save a delegated property uniquely' do
48
- @n.donkey = 'Bray'
49
- expect(@n.donkey).to eq('Bray')
50
- expect(@n.xmlish.term_values(:donkey).first).to eq('Bray')
51
- @n.horse = 'Winee'
52
- expect(@n.horse).to eq('Winee')
53
- expect(@n.xmlish.term_values(:horse).first).to eq('Winee')
54
- end
55
- it 'should return an array if not marked as unique' do
56
- # Metadata datastream does not appear to support multiple value setting
57
- @n.cow = ['one', 'two']
58
- expect(@n.cow).to eq(['one', 'two'])
59
- end
60
-
61
- it 'should be able to delegate deeply into the terminology' do
62
- @n.duck = ['Quack', 'Peep']
63
- expect(@n.duck).to eq(['Quack', 'Peep'])
64
- end
65
-
66
- it 'should be able to track change status' do
67
- expect(@n.chicken_changed?).to be_falsey
68
- @n.chicken = ['Cheep']
69
- expect(@n.chicken_changed?).to be_truthy
70
- end
71
-
72
- end
73
- end