hydramata-works 0.0.1.prerelease
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.hound.yml +818 -0
- data/.rspec +2 -0
- data/.travis.yml +20 -0
- data/CONTRIBUTING.md +220 -0
- data/Gemfile +36 -0
- data/Guardfile +36 -0
- data/LICENSE +15 -0
- data/README.md +36 -0
- data/Rakefile +47 -0
- data/TODO.md +74 -0
- data/VISION.md +19 -0
- data/app/forms/hydramata/works/entity_form.rb +92 -0
- data/app/forms/hydramata/works/validation_service.rb +78 -0
- data/app/models/hydramata/works/data_definition.rb +57 -0
- data/app/models/hydramata/works/entities.rb +11 -0
- data/app/models/hydramata/works/entity.rb +75 -0
- data/app/models/hydramata/works/predicate.rb +35 -0
- data/app/models/hydramata/works/predicate_presentation_sequences/storage.rb +29 -0
- data/app/models/hydramata/works/predicate_set.rb +44 -0
- data/app/models/hydramata/works/predicate_sets/storage.rb +45 -0
- data/app/models/hydramata/works/predicates.rb +14 -0
- data/app/models/hydramata/works/predicates/storage.rb +33 -0
- data/app/models/hydramata/works/presentation_structure.rb +29 -0
- data/app/models/hydramata/works/property.rb +72 -0
- data/app/models/hydramata/works/property_set.rb +89 -0
- data/app/models/hydramata/works/validations.rb +6 -0
- data/app/models/hydramata/works/value.rb +34 -0
- data/app/models/hydramata/works/work_type.rb +49 -0
- data/app/models/hydramata/works/work_types.rb +14 -0
- data/app/models/hydramata/works/work_types/storage.rb +42 -0
- data/app/parsers/hydramata/works/datastream_parser.rb +36 -0
- data/app/parsers/hydramata/works/datastream_parsers/rdf_ntriples_parser.rb +60 -0
- data/app/parsers/hydramata/works/datastream_parsers/simple_xml_parser.rb +27 -0
- data/app/parsers/hydramata/works/predicate_parser.rb +31 -0
- data/app/parsers/hydramata/works/predicate_parsers/simple_parser.rb +13 -0
- data/app/parsers/hydramata/works/validations_parser.rb +22 -0
- data/app/parsers/hydramata/works/value_parser.rb +26 -0
- data/app/parsers/hydramata/works/value_parsers.rb +27 -0
- data/app/parsers/hydramata/works/value_parsers/date_parser.rb +13 -0
- data/app/parsers/hydramata/works/value_parsers/interrogation_parser.rb +18 -0
- data/app/parsers/hydramata/works/value_parsers/simple_parser.rb +14 -0
- data/app/presenters/hydramata/works/base_presenter.rb +146 -0
- data/app/presenters/hydramata/works/dom_attributes_builder.rb +24 -0
- data/app/presenters/hydramata/works/entity_presenter.rb +67 -0
- data/app/presenters/hydramata/works/fieldset_presenter.rb +54 -0
- data/app/presenters/hydramata/works/property_presenter.rb +51 -0
- data/app/presenters/hydramata/works/value_presenter.rb +60 -0
- data/app/renderers/hydramata/works/entity_renderer.rb +45 -0
- data/app/views/hydramata/works/fieldsets/_edit.html.erb +4 -0
- data/app/views/hydramata/works/fieldsets/_show.html.erb +8 -0
- data/app/views/hydramata/works/fieldsets/_show.json.jbuilder +8 -0
- data/app/views/hydramata/works/properties/_edit.html.erb +12 -0
- data/app/views/hydramata/works/properties/_show.html.erb +3 -0
- data/app/views/hydramata/works/properties/_show.json.jbuilder +1 -0
- data/app/views/hydramata/works/works/_edit.html.erb +8 -0
- data/app/views/hydramata/works/works/_new.html.erb +8 -0
- data/app/views/hydramata/works/works/_show.html.erb +3 -0
- data/app/views/hydramata/works/works/_show.json.jbuilder +13 -0
- data/app/wranglers/hydramata/works/fedora_wrangler.rb +66 -0
- data/bin/rails +12 -0
- data/db/migrate/20140606132349_create_hydramata_work_predicates.rb +13 -0
- data/db/migrate/20140606132350_create_hydramata_work_types.rb +9 -0
- data/db/migrate/20140606132351_create_hydramata_work_predicate_sets.rb +13 -0
- data/db/migrate/20140606132352_create_hydramata_work_predicate_presentation_sequences.rb +12 -0
- data/db/migrate/20140623200635_add_validations_to_predicates.rb +5 -0
- data/db/migrate/20140627134133_adding_item_type_schema_dot_org_to_work_type.rb +5 -0
- data/db/migrate/20140627140840_adding_item_prop_schema_dot_org_to_predicate.rb +5 -0
- data/db/seeds.rb +36 -0
- data/documents/administrative-set-strawperson.md +45 -0
- data/documents/diagrams/hydramata-refactor-tasks.dot +88 -0
- data/documents/diagrams/hydramata-sip-dip-aip.dot +88 -0
- data/documents/diagrams/hydramata-work-architecture.dot +129 -0
- data/documents/diagrams/hydramata-work-subcomponents.dot +36 -0
- data/documents/diagrams/map-from-database-to-work-object.dot +44 -0
- data/documents/diagrams/map-from-fedora-to-work-object.dot +51 -0
- data/documents/diagrams/map-from-input-to-work-object.dot +37 -0
- data/documents/diagrams/map-from-work-object-to-database.dot +31 -0
- data/documents/diagrams/work-rendering.dot +53 -0
- data/documents/diagrams/work-structure.dot +32 -0
- data/documents/handling-work.md +224 -0
- data/documents/high-level-stories.md +105 -0
- data/documents/hydramata-components.md +82 -0
- data/documents/interface-between-work-and-permissions.md +131 -0
- data/documents/interface-between-work-and-workflow.md +6 -0
- data/documents/timeline.md +75 -0
- data/fs +3 -0
- data/gemfiles/rails4.1.gemfile +12 -0
- data/gemfiles/rails4.gemfile +13 -0
- data/hydramata-works.gemspec +43 -0
- data/lib/hydramata-works.rb +23 -0
- data/lib/hydramata/works/conversions.rb +21 -0
- data/lib/hydramata/works/conversions/exceptions.rb +18 -0
- data/lib/hydramata/works/conversions/predicate.rb +22 -0
- data/lib/hydramata/works/conversions/predicate_set.rb +28 -0
- data/lib/hydramata/works/conversions/presented_fieldsets.rb +28 -0
- data/lib/hydramata/works/conversions/presenter.rb +13 -0
- data/lib/hydramata/works/conversions/property.rb +31 -0
- data/lib/hydramata/works/conversions/property_set.rb +23 -0
- data/lib/hydramata/works/conversions/translation_key_fragment.rb +20 -0
- data/lib/hydramata/works/conversions/value.rb +20 -0
- data/lib/hydramata/works/conversions/work_type.rb +26 -0
- data/lib/hydramata/works/engine.rb +31 -0
- data/lib/hydramata/works/linters.rb +99 -0
- data/lib/hydramata/works/linters/implement_data_definition_interface_matcher.rb +17 -0
- data/lib/hydramata/works/linters/implement_entity_interface_matcher.rb +16 -0
- data/lib/hydramata/works/linters/implement_predicate_interface_matcher.rb +17 -0
- data/lib/hydramata/works/linters/implement_predicate_set_interface_matcher.rb +8 -0
- data/lib/hydramata/works/linters/implement_property_set_interface_matcher.rb +8 -0
- data/lib/hydramata/works/linters/implement_value_interface_matcher.rb +8 -0
- data/lib/hydramata/works/linters/implement_work_type_interface_matcher.rb +13 -0
- data/lib/hydramata/works/linters/interface_matcher_builder.rb +36 -0
- data/lib/hydramata/works/translator.rb +67 -0
- data/lib/hydramata/works/version.rb +5 -0
- data/lib/hydramata_works.rb +2 -0
- data/lib/tasks/hydramata_work_tasks.rake +4 -0
- data/run_each_spec_in_isolation +16 -0
- data/run_each_spec_in_isolation.txt +110 -0
- data/script/analyzer.rb +124 -0
- data/script/fast_specs +22 -0
- data/spec/features/fedora_to_in_memory_spec.rb +60 -0
- data/spec/features/format_and_view_path_overrides_spec.rb +72 -0
- data/spec/features/in_memory_to_output_buffer_spec.rb +109 -0
- data/spec/features/instantiate_entity_from_persisted_work_type_spec.rb +26 -0
- data/spec/features/new_user_input_to_in_memory_spec.rb +75 -0
- data/spec/features/translation_services_spec.rb +107 -0
- data/spec/features/validate_entity_based_on_work_type_structure_spec.rb +19 -0
- data/spec/fixtures/cassettes/fedora-object.yml +299 -0
- data/spec/fixtures/translations.yml +20 -0
- data/spec/forms/hydramata/works/entity_form_spec.rb +83 -0
- data/spec/forms/hydramata/works/validation_service_spec.rb +32 -0
- data/spec/lib/hydramata-work_spec.rb +14 -0
- data/spec/lib/hydramata/works/conversions/predicate_set_spec.rb +50 -0
- data/spec/lib/hydramata/works/conversions/predicate_spec.rb +43 -0
- data/spec/lib/hydramata/works/conversions/presented_fieldsets_spec.rb +52 -0
- data/spec/lib/hydramata/works/conversions/presenter_spec.rb +22 -0
- data/spec/lib/hydramata/works/conversions/property_set_spec.rb +42 -0
- data/spec/lib/hydramata/works/conversions/property_spec.rb +68 -0
- data/spec/lib/hydramata/works/conversions/translation_key_fragment_spec.rb +45 -0
- data/spec/lib/hydramata/works/conversions/value_spec.rb +36 -0
- data/spec/lib/hydramata/works/conversions/work_type_spec.rb +55 -0
- data/spec/lib/hydramata/works/translator_spec.rb +81 -0
- data/spec/models/hydramata/works/data_definition_spec.rb +53 -0
- data/spec/models/hydramata/works/entity_spec.rb +50 -0
- data/spec/models/hydramata/works/predicate_presentation_sequences/storage_spec.rb +15 -0
- data/spec/models/hydramata/works/predicate_set_spec.rb +63 -0
- data/spec/models/hydramata/works/predicate_sets/storage_spec.rb +37 -0
- data/spec/models/hydramata/works/predicate_spec.rb +16 -0
- data/spec/models/hydramata/works/predicates/storage_spec.rb +78 -0
- data/spec/models/hydramata/works/predicates_spec.rb +18 -0
- data/spec/models/hydramata/works/presentation_structure_spec.rb +27 -0
- data/spec/models/hydramata/works/property_set_spec.rb +135 -0
- data/spec/models/hydramata/works/property_spec.rb +74 -0
- data/spec/models/hydramata/works/value_spec.rb +61 -0
- data/spec/models/hydramata/works/work_type_spec.rb +45 -0
- data/spec/models/hydramata/works/work_types/storage_spec.rb +74 -0
- data/spec/models/hydramata/works/work_types_spec.rb +16 -0
- data/spec/parsers/hydramata/works/datastream_parser_spec.rb +29 -0
- data/spec/parsers/hydramata/works/datastream_parsers/rdf_ntriples_parser_spec.rb +65 -0
- data/spec/parsers/hydramata/works/datastream_parsers/simple_xml_parser_spec.rb +37 -0
- data/spec/parsers/hydramata/works/predicate_parser_spec.rb +30 -0
- data/spec/parsers/hydramata/works/predicate_parsers/simple_parser_spec.rb +20 -0
- data/spec/parsers/hydramata/works/validations_parser_spec.rb +31 -0
- data/spec/parsers/hydramata/works/value_parser_spec.rb +22 -0
- data/spec/parsers/hydramata/works/value_parsers/simple_parser_spec.rb +20 -0
- data/spec/parsers/hydramata/works/value_parsers_spec.rb +36 -0
- data/spec/presenters/hydramata/works/base_presenter_spec.rb +111 -0
- data/spec/presenters/hydramata/works/dom_attributes_builder_spec.rb +26 -0
- data/spec/presenters/hydramata/works/entity_presenter_spec.rb +51 -0
- data/spec/presenters/hydramata/works/fieldset_presenter_spec.rb +58 -0
- data/spec/presenters/hydramata/works/property_presenter_spec.rb +42 -0
- data/spec/presenters/hydramata/works/value_presenter_spec.rb +49 -0
- data/spec/renderers/hydramata/works/entity_renderer_spec.rb +25 -0
- data/spec/spec_active_record_helper.rb +30 -0
- data/spec/spec_fast_helper.rb +12 -0
- data/spec/spec_slow_helper.rb +56 -0
- data/spec/spec_view_helper.rb +14 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +21 -0
- data/spec/views/hydramata/works/fieldsets/_edit.html.erb_spec.rb +29 -0
- data/spec/views/hydramata/works/fieldsets/_show.html.erb_spec.rb +25 -0
- data/spec/views/hydramata/works/properties/_edit.html.erb_spec.rb +22 -0
- data/spec/views/hydramata/works/properties/_show.html.erb_spec.rb +22 -0
- data/spec/views/hydramata/works/works/_edit.html.erb_spec.rb +23 -0
- data/spec/views/hydramata/works/works/_new.html.erb_spec.rb +23 -0
- data/spec/views/hydramata/works/works/_show.html.erb_spec.rb +24 -0
- data/spec/wranglers/hydramata/works/fedora_wrangler_spec.rb +26 -0
- metadata +466 -0
@@ -0,0 +1,109 @@
|
|
1
|
+
require 'spec_slow_helper'
|
2
|
+
|
3
|
+
module Hydramata
|
4
|
+
module Works
|
5
|
+
describe 'An entity and presentation structure' do
|
6
|
+
context 'renders :show action' do
|
7
|
+
let(:presentation_context) { :show }
|
8
|
+
|
9
|
+
it 'as a well-structured HTML document' do
|
10
|
+
renderer = EntityRenderer.new(entity: entity_presenter, format: :html)
|
11
|
+
rendered_output = renderer.render
|
12
|
+
|
13
|
+
expect(rendered_output).to have_tag('.work') do
|
14
|
+
with_tag('.required .title.label', text: 'title')
|
15
|
+
with_tag('.required .title.value', text: 'Hello')
|
16
|
+
with_tag('.required .title.value', text: 'World')
|
17
|
+
with_tag('.required .title.value', text: 'Bang!')
|
18
|
+
with_tag('.optional .abstract.label', text: 'abstract')
|
19
|
+
with_tag('.optional .abstract.value', text: 'Long Text')
|
20
|
+
with_tag('.optional .abstract.value', text: 'Longer Text')
|
21
|
+
with_tag('.optional .keyword.label', text: 'keyword')
|
22
|
+
with_tag('.optional .keyword.value', text: 'Programming')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'as a JSON document' do
|
27
|
+
renderer = EntityRenderer.new(entity: entity_presenter, format: :json)
|
28
|
+
output = renderer.render
|
29
|
+
json = JSON.parse(output)
|
30
|
+
expect(json['work'].keys.sort).to eq(['properties', 'work_type'])
|
31
|
+
|
32
|
+
expect(json['work']['work_type']).to eq(entity_presenter.work_type.to_s)
|
33
|
+
expect(json['work']['properties'].keys).to eq(['title', 'abstract', 'keyword'])
|
34
|
+
expect(json['work']['properties']['title']).to eq(['Hello', 'World', 'Bang!'])
|
35
|
+
expect(json['work']['properties']['abstract']).to eq(['Long Text', 'Longer Text'])
|
36
|
+
expect(json['work']['properties']['keyword']).to eq(['Programming'])
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'renders :edit action' do
|
41
|
+
let(:presentation_context) { :edit }
|
42
|
+
|
43
|
+
it 'as a well-structured HTML document' do
|
44
|
+
renderer = EntityRenderer.new(entity: entity_presenter, format: :html)
|
45
|
+
rendered_output = renderer.render
|
46
|
+
|
47
|
+
expect(rendered_output).to have_tag('form.edit-special-work-type', with: { method: 'post', action: '/' }) do
|
48
|
+
with_tag('input', with: { name: '_method', value: 'patch' } )
|
49
|
+
with_tag('fieldset.required caption', text: 'required')
|
50
|
+
with_tag('fieldset.required .title label', text: 'title')
|
51
|
+
with_tag('fieldset.required .title .values input', value: 'Hello', with: { name: 'work[title][]' })
|
52
|
+
with_tag('fieldset.required .title .values input', value: 'World', with: { name: 'work[title][]' })
|
53
|
+
with_tag('fieldset.required .title .values input', value: 'Bang!', with: { name: 'work[title][]' })
|
54
|
+
with_tag('fieldset.required .title .values input', value: '', with: { name: 'work[title][]' })
|
55
|
+
with_tag('fieldset.optional caption', text: 'optional')
|
56
|
+
with_tag('fieldset.optional .abstract label', text: 'abstract')
|
57
|
+
with_tag('fieldset.optional .abstract .values input', value: 'Long Text', with: { name: 'work[abstract][]' })
|
58
|
+
with_tag('fieldset.optional .abstract .values input', value: 'Longer Text', with: { name: 'work[abstract][]' })
|
59
|
+
with_tag('fieldset.optional .abstract .values input', value: '', with: { name: 'work[abstract][]' })
|
60
|
+
with_tag('fieldset.optional .keyword label', text: 'keyword')
|
61
|
+
with_tag('fieldset.optional .keyword .values input', value: 'Programming', with: { name: 'work[keyword][]' })
|
62
|
+
with_tag('fieldset.optional .keyword .values input', value: '', with: { name: 'work[keyword][]' })
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
let(:predicate_title) { Predicates::Storage.new(identity: 'title') }
|
68
|
+
let(:predicate_abstract) { Predicates::Storage.new(identity: 'abstract') }
|
69
|
+
let(:predicate_keyword) { Predicates::Storage.new(identity: 'keyword') }
|
70
|
+
let(:work_type) { WorkTypes::Storage.new(identity: 'Special Work Type') }
|
71
|
+
let(:predicate_set_required) { PredicateSets::Storage.new(identity: 'required', work_type: work_type, presentation_sequence: 1) }
|
72
|
+
let(:predicate_set_optional) { PredicateSets::Storage.new(identity: 'optional', work_type: work_type, presentation_sequence: 2) }
|
73
|
+
|
74
|
+
before do
|
75
|
+
predicate_title.save!
|
76
|
+
predicate_abstract.save!
|
77
|
+
predicate_keyword.save!
|
78
|
+
work_type.save!
|
79
|
+
predicate_set_optional.save!
|
80
|
+
predicate_set_required.save!
|
81
|
+
PredicatePresentationSequences::Storage.create!(predicate: predicate_title, predicate_set: predicate_set_required, presentation_sequence: 1)
|
82
|
+
PredicatePresentationSequences::Storage.create!(predicate: predicate_abstract, predicate_set: predicate_set_optional, presentation_sequence: 1)
|
83
|
+
PredicatePresentationSequences::Storage.create!(predicate: predicate_keyword, predicate_set: predicate_set_optional, presentation_sequence: 2)
|
84
|
+
end
|
85
|
+
|
86
|
+
let(:entity) do
|
87
|
+
Entity.new do |entity|
|
88
|
+
entity.work_type = work_type
|
89
|
+
entity.properties << { predicate: predicate_title, value: 'Hello' }
|
90
|
+
entity.properties << { predicate: predicate_title, value: 'World' }
|
91
|
+
entity.properties << { predicate: predicate_title, value: 'Bang!' }
|
92
|
+
entity.properties << { predicate: predicate_abstract, value: 'Long Text' }
|
93
|
+
entity.properties << { predicate: predicate_abstract, value: 'Longer Text' }
|
94
|
+
entity.properties << { predicate: predicate_keyword, value: 'Programming' }
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
let(:presentation_context) { :show }
|
99
|
+
|
100
|
+
let(:entity_presenter) do
|
101
|
+
EntityPresenter.new(
|
102
|
+
entity: entity,
|
103
|
+
presentation_context: presentation_context
|
104
|
+
)
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_slow_helper'
|
2
|
+
|
3
|
+
module Hydramata
|
4
|
+
module Works
|
5
|
+
describe 'instantiate entity from persisted work type' do
|
6
|
+
before do
|
7
|
+
@article = Hydramata::Works::WorkTypes::Storage.create!(identity: 'article', name_for_application_usage: 'article')
|
8
|
+
@predicate_set = Hydramata::Works::PredicateSets::Storage.create!(identity: 'required', work_type: @article, presentation_sequence: 1, name_for_application_usage: 'required')
|
9
|
+
@title_predicate = Hydramata::Works::Predicates::Storage.create!(identity: "http://purl.org/dc/terms/dc_title", name_for_application_usage: 'title')
|
10
|
+
@predicate_set.predicate_presentation_sequences.create!(presentation_sequence: 1, predicate: @title_predicate)
|
11
|
+
@alternate_predicate = Hydramata::Works::Predicates::Storage.create!(identity: "http://purl.org/dc/terms/dc_alternate", name_for_application_usage: 'alternate')
|
12
|
+
@predicate_set.predicate_presentation_sequences.create!(presentation_sequence: 2, predicate: @alternate_predicate)
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:work) do
|
16
|
+
Entity.new(work_type: 'article') do |work|
|
17
|
+
work.properties << Property.new(predicate: 'http://purl.org/dc/terms/dc_title', values: ["Hello", "World"])
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should have #fieldsets' do
|
22
|
+
expect(work.work_type.fieldsets.size).to eq(1)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'spec_active_record_helper'
|
2
|
+
require 'hydramata/works/entity'
|
3
|
+
require 'hydramata/works/work_types/storage'
|
4
|
+
require 'hydramata/works/conversions/work_type'
|
5
|
+
require 'hydramata/works/conversions/property'
|
6
|
+
|
7
|
+
module Hydramata
|
8
|
+
module Works
|
9
|
+
class UserInputToEntityCoercer
|
10
|
+
def self.call(collaborators = {})
|
11
|
+
new(collaborators).call
|
12
|
+
end
|
13
|
+
attr_reader :input, :entity
|
14
|
+
def initialize(collaborators = {})
|
15
|
+
@input = collaborators.fetch(:input)
|
16
|
+
@entity = collaborators.fetch(:entity)
|
17
|
+
end
|
18
|
+
|
19
|
+
def call
|
20
|
+
entity.work_type = input.fetch(:work_type)
|
21
|
+
input.each do |predicate, values|
|
22
|
+
next if predicate.to_s == 'work_type'
|
23
|
+
entity.properties << { predicate: predicate, values: values }
|
24
|
+
end
|
25
|
+
entity
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'New user input to in memory' do
|
30
|
+
include Conversions
|
31
|
+
|
32
|
+
it 'should create an appropriate object' do
|
33
|
+
UserInputToEntityCoercer.call(entity: entity, input: input.fetch(:work))
|
34
|
+
|
35
|
+
expect(entity.work_type).to eq(WorkType('Special Work Type'))
|
36
|
+
expect(entity.properties.fetch(:title)).to eq(Property(:title, 'Hello', 'World', 'Bang!'))
|
37
|
+
expect(entity.properties.fetch(:abstract)).to eq(Property(:abstract, 'Long Text', 'Longer Text'))
|
38
|
+
expect(entity.properties.fetch(:keyword)).to eq(Property(:keyword, 'Programming'))
|
39
|
+
end
|
40
|
+
|
41
|
+
let(:input) do
|
42
|
+
{
|
43
|
+
work: {
|
44
|
+
work_type: 'Special Work Type',
|
45
|
+
title: ['Hello', 'World', 'Bang!'],
|
46
|
+
abstract: ['Long Text', 'Longer Text'],
|
47
|
+
keyword: ['Programming']
|
48
|
+
}
|
49
|
+
}
|
50
|
+
end
|
51
|
+
|
52
|
+
let(:predicate_title) { Predicates::Storage.new(identity: 'title') }
|
53
|
+
let(:predicate_abstract) { Predicates::Storage.new(identity: 'abstract') }
|
54
|
+
let(:predicate_keyword) { Predicates::Storage.new(identity: 'keyword') }
|
55
|
+
let(:work_type) { WorkTypes::Storage.new(identity: 'Special Work Type') }
|
56
|
+
let(:predicate_set_required) { PredicateSets::Storage.new(identity: 'required', work_type: work_type, presentation_sequence: 1) }
|
57
|
+
let(:predicate_set_optional) { PredicateSets::Storage.new(identity: 'optional', work_type: work_type, presentation_sequence: 2) }
|
58
|
+
|
59
|
+
before do
|
60
|
+
predicate_title.save!
|
61
|
+
predicate_abstract.save!
|
62
|
+
predicate_keyword.save!
|
63
|
+
work_type.save!
|
64
|
+
predicate_set_optional.save!
|
65
|
+
predicate_set_required.save!
|
66
|
+
PredicatePresentationSequences::Storage.create!(predicate: predicate_title, predicate_set: predicate_set_required, presentation_sequence: 1)
|
67
|
+
PredicatePresentationSequences::Storage.create!(predicate: predicate_abstract, predicate_set: predicate_set_optional, presentation_sequence: 1)
|
68
|
+
PredicatePresentationSequences::Storage.create!(predicate: predicate_keyword, predicate_set: predicate_set_optional, presentation_sequence: 2)
|
69
|
+
end
|
70
|
+
|
71
|
+
let(:entity) { Entity.new }
|
72
|
+
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
require 'spec_fast_helper'
|
2
|
+
require 'hydramata/works/conversions/property_set'
|
3
|
+
require 'hydramata/works/conversions/property'
|
4
|
+
require 'hydramata/works/entity'
|
5
|
+
require 'hydramata/works/entity_presenter'
|
6
|
+
require 'hydramata/works/property_presenter'
|
7
|
+
require 'hydramata/works/fieldset_presenter'
|
8
|
+
|
9
|
+
module Hydramata
|
10
|
+
module Works
|
11
|
+
describe 'translation services' do
|
12
|
+
include Conversions
|
13
|
+
let(:entity) { Entity.new {|e| e.work_type = work_type } }
|
14
|
+
|
15
|
+
context 'for entities' do
|
16
|
+
let(:presenter) { EntityPresenter.new(entity: entity, presentation_structure: nil) }
|
17
|
+
context 'with existing work type translations' do
|
18
|
+
let(:work_type) { 'Work Type Translated' }
|
19
|
+
it 'translates its :name from the lookup table' do
|
20
|
+
expect(presenter.t(:name)).to eq('I Am a Translated Work Type!')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
context 'with :name_for_application_usage set' do
|
24
|
+
let(:work_type) { WorkType.new(identity: 'Work Type Translated', name_for_application_usage: 'Work Type with Translated Name') }
|
25
|
+
it 'translates its :name from the lookup table' do
|
26
|
+
expect(presenter.t(:name)).to eq('I Am Translating the Name for Application Usage!')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
context 'without existing work type translations' do
|
30
|
+
let(:work_type) { 'Non-Translated Work Type' }
|
31
|
+
it 'translates its :name by using the work type directly' do
|
32
|
+
expect(presenter.t(:name)).to eq('Non-Translated Work Type')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'for property_sets' do
|
38
|
+
let(:presenter) { FieldsetPresenter.new(entity: entity, fieldset: fieldset) }
|
39
|
+
context 'with existing property set and work type translations' do
|
40
|
+
let(:fieldset) { PropertySet(identity: 'Property Set Translated') }
|
41
|
+
let(:work_type) { 'Work Type Translated' }
|
42
|
+
it 'translates its :name from the lookup table' do
|
43
|
+
expect(presenter.t(:name)).to eq('I Am a Translated Property Set for a Translated Work Type!')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
context 'with existing property set but not work type translations' do
|
47
|
+
let(:fieldset) { PropertySet(identity: 'Property Set Translated') }
|
48
|
+
let(:work_type) { 'Non-Translated Work Type' }
|
49
|
+
it 'translates its :name' do
|
50
|
+
expect(presenter.t(:name)).to eq('I Am a Translated Property Set with a non-Translated Work Type!')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'without property set translations' do
|
55
|
+
let(:fieldset) { PropertySet(identity: 'Non-Translated Property Set') }
|
56
|
+
let(:work_type) { 'Non-Translated Work Type' }
|
57
|
+
it 'translates its :name by using the work type directly' do
|
58
|
+
expect(presenter.t(:name)).to eq('Non-Translated Property Set')
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'for properts' do
|
64
|
+
let(:presenter) { PropertyPresenter.new(entity: entity, fieldset: fieldset, property: property) }
|
65
|
+
context 'with existing property and work type translations' do
|
66
|
+
let(:fieldset) { PropertySet(identity: 'Property Set Translated') }
|
67
|
+
let(:property) { Property('Property Translated') }
|
68
|
+
let(:work_type) { 'Work Type Translated' }
|
69
|
+
it 'translates its :name from the lookup table' do
|
70
|
+
expect(presenter.t(:name)).to eq('I Am a Translated Property for a Translated Work Type!')
|
71
|
+
end
|
72
|
+
end
|
73
|
+
context 'with existing property but not property set translations' do
|
74
|
+
let(:fieldset) { PropertySet(identity: 'Non-Translated Property Set') }
|
75
|
+
let(:property) { Property('Property Translated') }
|
76
|
+
let(:work_type) { 'Non-Translated Work Type' }
|
77
|
+
it 'translates its :name' do
|
78
|
+
expect(presenter.t(:name)).to eq('I Am a Translated Property with a non-Translated Work Type!')
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
context 'without property translations' do
|
83
|
+
let(:fieldset) { PropertySet(identity: 'Non-Translated Property Set') }
|
84
|
+
let(:property) { Property('Non-Translated Property') }
|
85
|
+
let(:work_type) { 'Non-Translated Work Type' }
|
86
|
+
it 'translates its :name by using the work type directly' do
|
87
|
+
expect(presenter.t(:name)).to eq('Non-Translated Property')
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
around do |example|
|
93
|
+
begin
|
94
|
+
# @TODO - The structure of the hash is not ideal. The order of keys is
|
95
|
+
# somewhat counter-intuitive.
|
96
|
+
old_backend = I18n.backend
|
97
|
+
I18n.backend = old_backend.clone
|
98
|
+
translations = Psych.load_file(File.expand_path('../../fixtures/translations.yml', __FILE__))
|
99
|
+
I18n.backend.store_translations(:en, translations.fetch('en'))
|
100
|
+
example.run
|
101
|
+
ensure
|
102
|
+
I18n.backend = old_backend
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_slow_helper'
|
2
|
+
module Hydramata
|
3
|
+
module Works
|
4
|
+
describe 'validate entity based on work type structure' do
|
5
|
+
let(:predicate) { Predicate.new(identity: 'title', validations: '{"presence": true}') }
|
6
|
+
let(:entity) do
|
7
|
+
Entity.new(work_type: 'article') do |work|
|
8
|
+
work.properties << Property.new(predicate: predicate, values: [])
|
9
|
+
end
|
10
|
+
end
|
11
|
+
let(:form) { EntityForm.new(entity) }
|
12
|
+
|
13
|
+
it 'should enforce validations' do
|
14
|
+
expect(form.valid?).to be_falsey
|
15
|
+
expect(form.errors.size).to eq(1)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,299 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://fedoraAdmin:fedoraAdmin@127.0.0.1:8983/fedora/objects/und:f4752f8687n?format=xml
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- '*/*; q=0.5, application/xml'
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip, deflate
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Expires:
|
22
|
+
- Thu, 01-Jan-1970 00:00:00 GMT
|
23
|
+
Set-Cookie:
|
24
|
+
- JSESSIONID=17248nboq3adn1ovrh9esgyzq3;Path=/fedora
|
25
|
+
Content-Type:
|
26
|
+
- text/xml
|
27
|
+
Date:
|
28
|
+
- Mon, 02 Jun 2014 17:52:45 GMT
|
29
|
+
Content-Length:
|
30
|
+
- '977'
|
31
|
+
Server:
|
32
|
+
- Jetty(6.1-SNAPSHOT)
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: <?xml version="1.0" encoding="UTF-8"?><objectProfile xmlns="http://www.fedora.info/definitions/1/0/access/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
36
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.fedora.info/definitions/1/0/access/
|
37
|
+
http://www.fedora.info/definitions/1/0/objectProfile.xsd" pid="und:f4752f8687n"
|
38
|
+
><objLabel></objLabel><objOwnerId>fedoraAdmin</objOwnerId><objModels><model>info:fedora/afmodel:SeniorThesis</model><model>info:fedora/fedora-system:FedoraObject-3.0</model></objModels><objCreateDate>2014-06-02T17:52:44.573Z</objCreateDate><objLastModDate>2014-06-02T17:52:45.371Z</objLastModDate><objDissIndexViewURL>http://localhost:8983/fedora/objects/und%3Af4752f8687n/methods/fedora-system%3A3/viewMethodIndex</objDissIndexViewURL><objItemIndexViewURL>http://localhost:8983/fedora/objects/und%3Af4752f8687n/methods/fedora-system%3A3/viewItemIndex</objItemIndexViewURL><objState>A</objState></objectProfile>
|
39
|
+
http_version:
|
40
|
+
recorded_at: Mon, 02 Jun 2014 17:52:45 GMT
|
41
|
+
- request:
|
42
|
+
method: get
|
43
|
+
uri: http://fedoraAdmin:fedoraAdmin@127.0.0.1:8983/fedora/objects/und:f4752f8687n/datastreams?format=xml&profiles=true
|
44
|
+
body:
|
45
|
+
encoding: US-ASCII
|
46
|
+
string: ''
|
47
|
+
headers:
|
48
|
+
Accept:
|
49
|
+
- '*/*; q=0.5, application/xml'
|
50
|
+
Accept-Encoding:
|
51
|
+
- gzip, deflate
|
52
|
+
User-Agent:
|
53
|
+
- Ruby
|
54
|
+
response:
|
55
|
+
status:
|
56
|
+
code: 200
|
57
|
+
message: OK
|
58
|
+
headers:
|
59
|
+
Expires:
|
60
|
+
- Thu, 01-Jan-1970 00:00:00 GMT
|
61
|
+
Set-Cookie:
|
62
|
+
- JSESSIONID=b0hi4btwr340vontqipg8f8;Path=/fedora
|
63
|
+
Content-Type:
|
64
|
+
- text/xml
|
65
|
+
Date:
|
66
|
+
- Mon, 02 Jun 2014 17:52:45 GMT
|
67
|
+
Content-Length:
|
68
|
+
- '4066'
|
69
|
+
Server:
|
70
|
+
- Jetty(6.1-SNAPSHOT)
|
71
|
+
body:
|
72
|
+
encoding: UTF-8
|
73
|
+
string: <?xml version="1.0" encoding="UTF-8"?><objectDatastreams xmlns="http://www.fedora.info/definitions/1/0/access/"
|
74
|
+
xmlns:apim="http://www.fedora.info/definitions/1/0/management/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
75
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.fedora.info/definitions/1/0/access/
|
76
|
+
http://localhost:8983/fedora/schema/listDatastreams.xsd" pid="und:f4752f8687n" baseURL="http://localhost:8983/fedora/"
|
77
|
+
><datastreamProfile pid="und:f4752f8687n" dsID="DC" ><apim:dsLabel>Dublin
|
78
|
+
Core Record for this object</apim:dsLabel><apim:dsVersionID>DC1.0</apim:dsVersionID><apim:dsCreateDate>2014-06-02T17:52:44.573Z</apim:dsCreateDate><apim:dsState>A</apim:dsState><apim:dsMIME>text/xml</apim:dsMIME><apim:dsFormatURI>http://www.openarchives.org/OAI/2.0/oai_dc/</apim:dsFormatURI><apim:dsControlGroup>X</apim:dsControlGroup><apim:dsSize>344</apim:dsSize><apim:dsVersionable>true</apim:dsVersionable><apim:dsInfoType></apim:dsInfoType><apim:dsLocation>und:f4752f8687n+DC+DC1.0</apim:dsLocation><apim:dsLocationType></apim:dsLocationType><apim:dsChecksumType>DISABLED</apim:dsChecksumType><apim:dsChecksum>none</apim:dsChecksum></datastreamProfile><datastreamProfile
|
79
|
+
pid="und:f4752f8687n" dsID="RELS-EXT" ><apim:dsLabel>Fedora Object-to-Object
|
80
|
+
Relationship Metadata</apim:dsLabel><apim:dsVersionID>RELS-EXT.0</apim:dsVersionID><apim:dsCreateDate>2014-06-02T17:52:44.744Z</apim:dsCreateDate><apim:dsState>A</apim:dsState><apim:dsMIME>application/rdf+xml</apim:dsMIME><apim:dsFormatURI></apim:dsFormatURI><apim:dsControlGroup>X</apim:dsControlGroup><apim:dsSize>317</apim:dsSize><apim:dsVersionable>true</apim:dsVersionable><apim:dsInfoType></apim:dsInfoType><apim:dsLocation>und:f4752f8687n+RELS-EXT+RELS-EXT.0</apim:dsLocation><apim:dsLocationType></apim:dsLocationType><apim:dsChecksumType>DISABLED</apim:dsChecksumType><apim:dsChecksum>none</apim:dsChecksum></datastreamProfile><datastreamProfile
|
81
|
+
pid="und:f4752f8687n" dsID="properties" ><apim:dsLabel></apim:dsLabel><apim:dsVersionID>properties.0</apim:dsVersionID><apim:dsCreateDate>2014-06-02T17:52:44.775Z</apim:dsCreateDate><apim:dsState>A</apim:dsState><apim:dsMIME>text/xml</apim:dsMIME><apim:dsFormatURI></apim:dsFormatURI><apim:dsControlGroup>M</apim:dsControlGroup><apim:dsSize>54</apim:dsSize><apim:dsVersionable>true</apim:dsVersionable><apim:dsInfoType></apim:dsInfoType><apim:dsLocation>und:f4752f8687n+properties+properties.0</apim:dsLocation><apim:dsLocationType>INTERNAL_ID</apim:dsLocationType><apim:dsChecksumType>DISABLED</apim:dsChecksumType><apim:dsChecksum>none</apim:dsChecksum></datastreamProfile><datastreamProfile
|
82
|
+
pid="und:f4752f8687n" dsID="rightsMetadata" ><apim:dsLabel></apim:dsLabel><apim:dsVersionID>rightsMetadata.0</apim:dsVersionID><apim:dsCreateDate>2014-06-02T17:52:44.806Z</apim:dsCreateDate><apim:dsState>A</apim:dsState><apim:dsMIME>text/xml</apim:dsMIME><apim:dsFormatURI></apim:dsFormatURI><apim:dsControlGroup>M</apim:dsControlGroup><apim:dsSize>556</apim:dsSize><apim:dsVersionable>true</apim:dsVersionable><apim:dsInfoType></apim:dsInfoType><apim:dsLocation>und:f4752f8687n+rightsMetadata+rightsMetadata.0</apim:dsLocation><apim:dsLocationType>INTERNAL_ID</apim:dsLocationType><apim:dsChecksumType>DISABLED</apim:dsChecksumType><apim:dsChecksum>none</apim:dsChecksum></datastreamProfile><datastreamProfile
|
83
|
+
pid="und:f4752f8687n" dsID="descMetadata" ><apim:dsLabel></apim:dsLabel><apim:dsVersionID>descMetadata.0</apim:dsVersionID><apim:dsCreateDate>2014-06-02T17:52:45.371Z</apim:dsCreateDate><apim:dsState>A</apim:dsState><apim:dsMIME>text/plain</apim:dsMIME><apim:dsFormatURI></apim:dsFormatURI><apim:dsControlGroup>M</apim:dsControlGroup><apim:dsSize>847</apim:dsSize><apim:dsVersionable>true</apim:dsVersionable><apim:dsInfoType></apim:dsInfoType><apim:dsLocation>und:f4752f8687n+descMetadata+descMetadata.0</apim:dsLocation><apim:dsLocationType>INTERNAL_ID</apim:dsLocationType><apim:dsChecksumType>DISABLED</apim:dsChecksumType><apim:dsChecksum>none</apim:dsChecksum></datastreamProfile></objectDatastreams>
|
84
|
+
http_version:
|
85
|
+
recorded_at: Mon, 02 Jun 2014 17:52:45 GMT
|
86
|
+
- request:
|
87
|
+
method: get
|
88
|
+
uri: http://fedoraAdmin:fedoraAdmin@127.0.0.1:8983/fedora/objects/und:f4752f8687n/datastreams/RELS-EXT/content
|
89
|
+
body:
|
90
|
+
encoding: US-ASCII
|
91
|
+
string: ''
|
92
|
+
headers:
|
93
|
+
Accept:
|
94
|
+
- '*/*; q=0.5, application/xml'
|
95
|
+
Accept-Encoding:
|
96
|
+
- gzip, deflate
|
97
|
+
User-Agent:
|
98
|
+
- Ruby
|
99
|
+
response:
|
100
|
+
status:
|
101
|
+
code: 200
|
102
|
+
message: OK
|
103
|
+
headers:
|
104
|
+
Expires:
|
105
|
+
- Thu, 01-Jan-1970 00:00:00 GMT
|
106
|
+
Set-Cookie:
|
107
|
+
- JSESSIONID=133y0mnohe9fvhd3rd8rctx3;Path=/fedora
|
108
|
+
Content-Disposition:
|
109
|
+
- inline; filename="Fedora Object-to-Object Relationship Metadata.rdf"
|
110
|
+
Content-Length:
|
111
|
+
- '317'
|
112
|
+
Content-Type:
|
113
|
+
- application/rdf+xml
|
114
|
+
Date:
|
115
|
+
- Mon, 02 Jun 2014 17:52:45 GMT
|
116
|
+
Server:
|
117
|
+
- Jetty(6.1-SNAPSHOT)
|
118
|
+
body:
|
119
|
+
encoding: UTF-8
|
120
|
+
string: |2
|
121
|
+
|
122
|
+
<rdf:RDF xmlns:fedora-model="info:fedora/fedora-system:def/model#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
123
|
+
<rdf:Description rdf:about="info:fedora/und:f4752f8687n">
|
124
|
+
<fedora-model:hasModel rdf:resource="info:fedora/afmodel:SeniorThesis"></fedora-model:hasModel>
|
125
|
+
</rdf:Description>
|
126
|
+
</rdf:RDF>
|
127
|
+
http_version:
|
128
|
+
recorded_at: Mon, 02 Jun 2014 17:52:45 GMT
|
129
|
+
- request:
|
130
|
+
method: get
|
131
|
+
uri: http://fedoraAdmin:fedoraAdmin@127.0.0.1:8983/fedora/objects/und:f4752f8687n/datastreams/DC/content
|
132
|
+
body:
|
133
|
+
encoding: US-ASCII
|
134
|
+
string: ''
|
135
|
+
headers:
|
136
|
+
Accept:
|
137
|
+
- '*/*; q=0.5, application/xml'
|
138
|
+
Accept-Encoding:
|
139
|
+
- gzip, deflate
|
140
|
+
User-Agent:
|
141
|
+
- Ruby
|
142
|
+
response:
|
143
|
+
status:
|
144
|
+
code: 200
|
145
|
+
message: OK
|
146
|
+
headers:
|
147
|
+
Expires:
|
148
|
+
- Thu, 01-Jan-1970 00:00:00 GMT
|
149
|
+
Set-Cookie:
|
150
|
+
- JSESSIONID=isia3sh1xtq7uc4p983h2s94;Path=/fedora
|
151
|
+
Content-Disposition:
|
152
|
+
- inline; filename="Dublin Core Record for this object.xml"
|
153
|
+
Content-Length:
|
154
|
+
- '344'
|
155
|
+
Content-Type:
|
156
|
+
- text/xml
|
157
|
+
Date:
|
158
|
+
- Mon, 02 Jun 2014 17:52:45 GMT
|
159
|
+
Server:
|
160
|
+
- Jetty(6.1-SNAPSHOT)
|
161
|
+
body:
|
162
|
+
encoding: UTF-8
|
163
|
+
string: |2
|
164
|
+
|
165
|
+
<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
|
166
|
+
<dc:identifier>und:f4752f8687n</dc:identifier>
|
167
|
+
</oai_dc:dc>
|
168
|
+
http_version:
|
169
|
+
recorded_at: Mon, 02 Jun 2014 17:52:45 GMT
|
170
|
+
- request:
|
171
|
+
method: get
|
172
|
+
uri: http://fedoraAdmin:fedoraAdmin@127.0.0.1:8983/fedora/objects/und:f4752f8687n/datastreams/properties/content
|
173
|
+
body:
|
174
|
+
encoding: US-ASCII
|
175
|
+
string: ''
|
176
|
+
headers:
|
177
|
+
Accept:
|
178
|
+
- '*/*; q=0.5, application/xml'
|
179
|
+
Accept-Encoding:
|
180
|
+
- gzip, deflate
|
181
|
+
User-Agent:
|
182
|
+
- Ruby
|
183
|
+
response:
|
184
|
+
status:
|
185
|
+
code: 200
|
186
|
+
message: OK
|
187
|
+
headers:
|
188
|
+
Expires:
|
189
|
+
- Thu, 01-Jan-1970 00:00:00 GMT
|
190
|
+
Set-Cookie:
|
191
|
+
- JSESSIONID=2wcw8zu10k2ct7i2knctgzfj;Path=/fedora
|
192
|
+
Content-Disposition:
|
193
|
+
- inline; filename="properties.xml"
|
194
|
+
Content-Length:
|
195
|
+
- '54'
|
196
|
+
Content-Type:
|
197
|
+
- text/xml
|
198
|
+
Date:
|
199
|
+
- Mon, 02 Jun 2014 17:52:45 GMT
|
200
|
+
Server:
|
201
|
+
- Jetty(6.1-SNAPSHOT)
|
202
|
+
body:
|
203
|
+
encoding: UTF-8
|
204
|
+
string: |-
|
205
|
+
<fields>
|
206
|
+
<depositor>username-1</depositor>
|
207
|
+
</fields>
|
208
|
+
http_version:
|
209
|
+
recorded_at: Mon, 02 Jun 2014 17:52:45 GMT
|
210
|
+
- request:
|
211
|
+
method: get
|
212
|
+
uri: http://fedoraAdmin:fedoraAdmin@127.0.0.1:8983/fedora/objects/und:f4752f8687n/datastreams/rightsMetadata/content
|
213
|
+
body:
|
214
|
+
encoding: US-ASCII
|
215
|
+
string: ''
|
216
|
+
headers:
|
217
|
+
Accept:
|
218
|
+
- '*/*; q=0.5, application/xml'
|
219
|
+
Accept-Encoding:
|
220
|
+
- gzip, deflate
|
221
|
+
User-Agent:
|
222
|
+
- Ruby
|
223
|
+
response:
|
224
|
+
status:
|
225
|
+
code: 200
|
226
|
+
message: OK
|
227
|
+
headers:
|
228
|
+
Expires:
|
229
|
+
- Thu, 01-Jan-1970 00:00:00 GMT
|
230
|
+
Set-Cookie:
|
231
|
+
- JSESSIONID=1kmc1i5n0pnhzoo0fk52zo3lb;Path=/fedora
|
232
|
+
Content-Disposition:
|
233
|
+
- inline; filename="rightsMetadata.xml"
|
234
|
+
Content-Length:
|
235
|
+
- '556'
|
236
|
+
Content-Type:
|
237
|
+
- text/xml
|
238
|
+
Date:
|
239
|
+
- Mon, 02 Jun 2014 17:52:45 GMT
|
240
|
+
Server:
|
241
|
+
- Jetty(6.1-SNAPSHOT)
|
242
|
+
body:
|
243
|
+
encoding: UTF-8
|
244
|
+
string: "<rightsMetadata xmlns=\"http://hydra-collab.stanford.edu/schemas/rightsMetadata/v1\"
|
245
|
+
version=\"0.1\">\n <copyright>\n <human type=\"title\"/>\n <human type=\"description\"/>\n
|
246
|
+
\ <machine type=\"uri\"/>\n </copyright>\n <access type=\"discover\">\n
|
247
|
+
\ <human/>\n <machine/>\n </access>\n <access type=\"read\">\n <human/>\n
|
248
|
+
\ <machine>\n \n <group>registered</group></machine>\n </access>\n
|
249
|
+
\ <access type=\"edit\">\n <human/>\n <machine><person>username-1</person></machine>\n
|
250
|
+
\ </access>\n <embargo>\n <human/>\n <machine/>\n </embargo>\n</rightsMetadata>"
|
251
|
+
http_version:
|
252
|
+
recorded_at: Mon, 02 Jun 2014 17:52:45 GMT
|
253
|
+
- request:
|
254
|
+
method: get
|
255
|
+
uri: http://fedoraAdmin:fedoraAdmin@127.0.0.1:8983/fedora/objects/und:f4752f8687n/datastreams/descMetadata/content
|
256
|
+
body:
|
257
|
+
encoding: US-ASCII
|
258
|
+
string: ''
|
259
|
+
headers:
|
260
|
+
Accept:
|
261
|
+
- '*/*; q=0.5, application/xml'
|
262
|
+
Accept-Encoding:
|
263
|
+
- gzip, deflate
|
264
|
+
User-Agent:
|
265
|
+
- Ruby
|
266
|
+
response:
|
267
|
+
status:
|
268
|
+
code: 200
|
269
|
+
message: OK
|
270
|
+
headers:
|
271
|
+
Expires:
|
272
|
+
- Thu, 01-Jan-1970 00:00:00 GMT
|
273
|
+
Set-Cookie:
|
274
|
+
- JSESSIONID=1okrb7frmjfn51ceptriwjteti;Path=/fedora
|
275
|
+
Content-Disposition:
|
276
|
+
- inline; filename="descMetadata.txt"
|
277
|
+
Content-Length:
|
278
|
+
- '847'
|
279
|
+
Content-Type:
|
280
|
+
- text/plain
|
281
|
+
Date:
|
282
|
+
- Mon, 02 Jun 2014 17:52:45 GMT
|
283
|
+
Server:
|
284
|
+
- Jetty(6.1-SNAPSHOT)
|
285
|
+
body:
|
286
|
+
encoding: UTF-8
|
287
|
+
string: |
|
288
|
+
<info:fedora/und:f4752f8687n> <http://purl.org/dc/terms/created> "2014-06-02" .
|
289
|
+
<info:fedora/und:f4752f8687n> <http://purl.org/dc/terms/language> "English" .
|
290
|
+
<info:fedora/und:f4752f8687n> <http://purl.org/dc/terms/publisher> "University of Notre Dame" .
|
291
|
+
<info:fedora/und:f4752f8687n> <http://purl.org/dc/terms/title> "Title 1" .
|
292
|
+
<info:fedora/und:f4752f8687n> <http://purl.org/dc/terms/dateSubmitted> "2014-06-04Z"^^<http://www.w3.org/2001/XMLSchema#date> .
|
293
|
+
<info:fedora/und:f4752f8687n> <http://purl.org/dc/terms/modified> "2014-06-03Z"^^<http://www.w3.org/2001/XMLSchema#date> .
|
294
|
+
<info:fedora/und:f4752f8687n> <http://purl.org/dc/terms/rights> "Attribution 3.0 United States" .
|
295
|
+
<info:fedora/und:f4752f8687n> <http://purl.org/dc/terms/creator> "Creator Name1" .
|
296
|
+
<info:fedora/und:f4752f8687n> <http://purl.org/dc/terms/description> "Hello World!" .
|
297
|
+
http_version:
|
298
|
+
recorded_at: Mon, 02 Jun 2014 17:52:45 GMT
|
299
|
+
recorded_with: VCR 2.7.0
|