hydramata-works 0.0.1.prerelease
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 +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
data/.rspec
ADDED
data/.travis.yml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
language: ruby
|
2
|
+
rvm:
|
3
|
+
- "2.0.0"
|
4
|
+
- "2.1.1"
|
5
|
+
- "2.1.2"
|
6
|
+
|
7
|
+
gemfile:
|
8
|
+
- gemfiles/rails4.gemfile
|
9
|
+
- gemfiles/rails4.1.gemfile
|
10
|
+
|
11
|
+
env:
|
12
|
+
global:
|
13
|
+
- NOKOGIRI_USE_SYSTEM_LIBRARIES=true
|
14
|
+
|
15
|
+
script: 'COVERAGE=true rake spec:travis'
|
16
|
+
|
17
|
+
bundler_args: --without headless debug
|
18
|
+
|
19
|
+
before_install:
|
20
|
+
- gem install bundler
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,220 @@
|
|
1
|
+
We want your help to make our project great.
|
2
|
+
There are a few guidelines that we need contributors to follow so that we can have a chance of keeping on top of things.
|
3
|
+
|
4
|
+
* [The Hydra Way](#the-hydra-way)
|
5
|
+
* [Reporting Issues](#reporting-issues)
|
6
|
+
* [What is a well written issue?](#what-is-a-well-written-issue)
|
7
|
+
* [Making Changes](#making-changes)
|
8
|
+
* [Where to Engage for Help](#where-to-engage-for-help)
|
9
|
+
* [Submitting Changes](#submitting-changes)
|
10
|
+
* [Contributor License Agreement](#contributor-license-agreement)
|
11
|
+
* [Coding Guidelines](#coding-guidelines)
|
12
|
+
* [Writing Your Specs](#writing-your-specs)
|
13
|
+
* [Custom Rspec Matchers](#custom-rspec-matchers)
|
14
|
+
* [Writing Your Code](#writing-your-code)
|
15
|
+
* [Ruby File Structure](#ruby-file-structure)
|
16
|
+
* [Well Written Commit Messages](#well-written-commit-messages)
|
17
|
+
* [Reviewing Changes](#reviewing-changes)
|
18
|
+
* [Responsibilities of a Reviewer](#responsibilities-of-a-reviewer)
|
19
|
+
* [Responsibilities of the Submitter](#responsibilities-of-the-submitter)
|
20
|
+
* [Merging Changes](#merging-changes)
|
21
|
+
|
22
|
+
# The Hydra Way
|
23
|
+
|
24
|
+
We strive to…
|
25
|
+
|
26
|
+
* Provide a [harassment-free community experience](https://wiki.duraspace.org/display/hydra/Anti-Harassment+Policy)
|
27
|
+
* Adhere to our [Hierarchy of Promises](https://wiki.duraspace.org/display/hydra/Hydra+Stack+-+The+Hierarchy+of+Promises)
|
28
|
+
* Operate under [Lazy Consensus](http://rave.apache.org/docs/governance/lazyConsensus.html)
|
29
|
+
* Encourage community participation as guided by [our community principles](https://wiki.duraspace.org/display/hydra/Hydra+Community+Principles)
|
30
|
+
|
31
|
+
# Reporting Issues
|
32
|
+
|
33
|
+
Submit a [well written issue](#what-is-a-well-written-issue) to [Github's issue tracker](./issues).
|
34
|
+
This will require a [GitHub account](https://github.com/signup/free) *(its free)*.
|
35
|
+
|
36
|
+
## What is a well written issue?
|
37
|
+
|
38
|
+
* Provide a descriptive summary
|
39
|
+
* Reference the gem version in which you encountered the problem
|
40
|
+
* Explain the expected behavior
|
41
|
+
* Explain the actual behavior
|
42
|
+
* Provide steps to reproduce the actual behavior
|
43
|
+
|
44
|
+
# Submitting Changes
|
45
|
+
|
46
|
+
## Contributor License Agreement
|
47
|
+
|
48
|
+
**Note: You can submit a pull request before you've signed the Contributor License Agreement, but we won't merge your changes until we have your CLA on file.**
|
49
|
+
|
50
|
+
Before any [ProjectHydra project](https://github.com/projecthydra) can accept your contributions we must have a [Contributor License Agreement on file](https://wiki.duraspace.org/display/hydra/Hydra+Project+Intellectual+Property+Licensing+and+Ownership).
|
51
|
+
|
52
|
+
All code contributors must have an Individual Contributor License Agreement (iCLA) on file with the Hydra Project Steering Group.
|
53
|
+
If the contributor works for an institution, the institution must have a Corporate Contributor License Agreement (cCLA) on file.
|
54
|
+
|
55
|
+
[More on the Contributor License Agreements](https://wiki.duraspace.org/display/hydra/Hydra+Project+Intellectual+Property+Licensing+and+Ownership)
|
56
|
+
|
57
|
+
## Coding Guidelines
|
58
|
+
|
59
|
+
This project is using [HoundCI](https://houndci.com) to help support our agreed upon style guide.
|
60
|
+
The style guide is a work in progress, and is declared in the project's `./hound.yml` file.
|
61
|
+
|
62
|
+
Hound is a Github integration tool that essentially runs [rubocop](http://rubygems.org/gems/rubocop).
|
63
|
+
|
64
|
+
> Automatic Ruby code style checking tool. Aims to enforce the community-driven Ruby Style Guide.
|
65
|
+
|
66
|
+
If you want to run `rubocop` with our style guide, first `gem install rubocop` then inside the project:
|
67
|
+
|
68
|
+
```bash
|
69
|
+
$ rubocop ./path/to/file ./or/path/to/directory -c ./.hound.yml
|
70
|
+
```
|
71
|
+
**Can I break these guidelines?** Yes. But you may need to convince the person merging your changes.
|
72
|
+
|
73
|
+
### Writing Your Specs
|
74
|
+
|
75
|
+
Your code changes should include support tests.
|
76
|
+
|
77
|
+
Before you begin writing code, think about the test that will verify the code you plan to write.
|
78
|
+
A [well written story with Gherkin syntax](http://pivotallabs.com/well-formed-stories/) can help formulate the pre-conditions (Given), invocation (When), and post-conditions (Then).
|
79
|
+
|
80
|
+
*This is the first step of Test Driven Development, and something that we strongly encourage.*
|
81
|
+
|
82
|
+
Now write that test; It should be your guidepost for any changes you plan on making.
|
83
|
+
Ideally the test you just wrote will be executable code.
|
84
|
+
However, a well formed Gherkin-syntax story is a suitable proxy; Especially if you are uncomfortable with where to put the executable code.
|
85
|
+
|
86
|
+
*Think of your written test as a statement of intent.*
|
87
|
+
*The statement of intent can then be used when asking for help or clarity; Either from another developer or a stakeholder.*
|
88
|
+
*Someone helping you can then see both what you are trying to do and how you are doing it; And that helper may know of a "better" way to do it.*
|
89
|
+
|
90
|
+
#### Custom Rspec Matchers
|
91
|
+
|
92
|
+
We encourage the use of [custom rspec matchers](https://www.relishapp.com/rspec/rspec-expectations/v/2-3/docs/custom-matchers/define-matcher) as this helps our specs better convey what is going on.
|
93
|
+
|
94
|
+
To find the existing Rspec matchers in this project, you can run `rake yenta`.
|
95
|
+
Below is the sample output.
|
96
|
+
|
97
|
+
```shell
|
98
|
+
be /path/to/bundled/gem/rspec-expectations-2.14.4/lib/rspec/matchers.rb:221
|
99
|
+
be_a /path/to/bundled/gem/rspec-expectations-2.14.4/lib/rspec/matchers.rb:227
|
100
|
+
be_a_kind_of /path/to/bundled/gem/rspec-expectations-2.14.4/lib/rspec/matchers.rb:253
|
101
|
+
be_a_new /path/to/bundled/gem/rspec-rails-2.14.0/lib/rspec/rails/matchers/be_a_new.rb:73
|
102
|
+
be_an /path/to/bundled/gem/rspec-expectations-2.14.4/lib/rspec/matchers.rb:227
|
103
|
+
be_an_instance_of /path/to/bundled/gem/rspec-expectations-2.14.4/lib/rspec/matchers.rb:240
|
104
|
+
...
|
105
|
+
```
|
106
|
+
|
107
|
+
### Writing Your Code
|
108
|
+
|
109
|
+
We are going to do our best to follow [Sandi Metz' Rules for Developers](http://robots.thoughtbot.com/post/50655960596/sandi-metz-rules-for-developers)
|
110
|
+
|
111
|
+
> Here are the rules:
|
112
|
+
>
|
113
|
+
> * Classes can be no longer than one hundred lines of code.
|
114
|
+
> * Methods can be no longer than five lines of code.
|
115
|
+
> * Pass no more than four parameters into a method. Hash options are parameters.
|
116
|
+
> * Controllers can instantiate only one object. Therefore, views can only know about one instance variable and views should only send messages to that object (@object.collaborator.value is not allowed).
|
117
|
+
|
118
|
+
### Ruby File Structure
|
119
|
+
|
120
|
+
* Use soft-tabs with a two space indent.
|
121
|
+
* Never leave trailing whitespace (unless it is meaningful in the language)
|
122
|
+
* End each file with a blank newline.
|
123
|
+
* Please do your best to keep lines to 80 characters or fewer.
|
124
|
+
|
125
|
+
## Well Written Commit Messages
|
126
|
+
|
127
|
+
**TL;DR**
|
128
|
+
|
129
|
+
* First line is < 50 characters
|
130
|
+
* The message body explains what the code changes are about
|
131
|
+
* Reference any JIRA or Github issues on new lines.
|
132
|
+
|
133
|
+
### Terse Example
|
134
|
+
|
135
|
+
```
|
136
|
+
Removing Document title validation
|
137
|
+
|
138
|
+
We thought we wanted title validation but that was too complicated.
|
139
|
+
|
140
|
+
HYDRASIR-12 #close
|
141
|
+
```
|
142
|
+
|
143
|
+
### Verbose Example
|
144
|
+
|
145
|
+
```
|
146
|
+
Present tense short summary (50 characters or less)
|
147
|
+
|
148
|
+
More detailed description, if necessary. It should be wrapped to 72
|
149
|
+
characters. Try to be as descriptive as you can, even if you think that
|
150
|
+
the commit content is obvious, it may not be obvious to others. You
|
151
|
+
should add such description also if it's already present in bug tracker,
|
152
|
+
it should not be necessary to visit a webpage to check the history.
|
153
|
+
|
154
|
+
Description can have multiple paragraphs and you can use code examples
|
155
|
+
inside, just indent it with 4 spaces:
|
156
|
+
|
157
|
+
class PostsController
|
158
|
+
def index
|
159
|
+
respond_with Post.limit(10)
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
You can also add bullet points:
|
164
|
+
|
165
|
+
- you can use dashes or asterisks
|
166
|
+
|
167
|
+
- also, try to indent next line of a point for readability, if it's too
|
168
|
+
long to fit in 72 characters
|
169
|
+
```
|
170
|
+
|
171
|
+
> When appropriate, please squash your commits into logical units of work.
|
172
|
+
> This simplifies future cherry picks, and also keeps the git log clean.
|
173
|
+
|
174
|
+
### Hooks into other Subsystems
|
175
|
+
|
176
|
+
**[log skip]**: If your commit is not relevant to a change log, you can add `[log skip]` to your commit message.
|
177
|
+
Relevance is subjective, though extremely minor changes need not be part of the change log (i.e. spelling correction, decomposing a private method into multiple private methods, etc.)
|
178
|
+
|
179
|
+
**[ci skip]**: If your commit does not need to go through the Continuous Integration server, add `[ci skip]` to your commit message.
|
180
|
+
This is typically used for updates to the documentation and stylesheet changes.
|
181
|
+
|
182
|
+
# Reviewing Changes
|
183
|
+
|
184
|
+
The review process is a conversation between the submitter and the reviewer(s).
|
185
|
+
Please feel free to bring other people into the conversation as necessary.
|
186
|
+
|
187
|
+
As either the submitter or reviewer, feel free to assign the Pull Request to a repository contributor.
|
188
|
+
This is a way of indicating that you want that repository contributor to review the change.
|
189
|
+
|
190
|
+
When you do assign someone to the Pull Request, please make sure to add a comment stating why you assigned it to them.
|
191
|
+
|
192
|
+
## Responsibilities of a Reviewer
|
193
|
+
|
194
|
+
As a reviewer, it is important that the pull request:
|
195
|
+
|
196
|
+
* Has a [well written commit message](#well-written-commit-messages)
|
197
|
+
* Has [well written code](#coding-guidelines)
|
198
|
+
* The test suite successfully builds
|
199
|
+
* Any questions regarding the pull request are answered
|
200
|
+
* Adjucate if the Pull Request should be squashed into a smaller number of commits
|
201
|
+
|
202
|
+
## Responsibilities of the Submitter
|
203
|
+
|
204
|
+
**As the submitter**, you should be responsive to the review process: answering questions, making refinements, providing clarification, and rebasing your commits.
|
205
|
+
*If your changes are gridlocked please notify [@jeremyf](https://github.com/jeremyf) via a comment on the pull request.*
|
206
|
+
|
207
|
+
## Who Will be Doing the Review
|
208
|
+
|
209
|
+
Anyone is welcome to contribute to the review process.
|
210
|
+
At this stage in the development, [@jeremyf](https://github.com/jeremyf) is the only person that will merge pull requests.
|
211
|
+
|
212
|
+
# Merging Changes
|
213
|
+
|
214
|
+
*If a pull request has received at least one Thumbs Up, but has still not been merged, please notify [@jeremyf](https://github.com/jeremyf) via a comment on the pull request.*
|
215
|
+
|
216
|
+
**As the submitter,** you should not merge your own pull request. That is bad form.
|
217
|
+
|
218
|
+
**As the reviewer,** if you are comfortable merge the pull request. Otherwise feel free to assign the pull request to another contributor for final merging.
|
219
|
+
|
220
|
+
**As the merger,** once you have merged the pull request, go ahead and delete the pull request's topic branch. You are now on the hook for any breaking of the build.
|
data/Gemfile
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
# Declare your gem's dependencies in hydramata-work.gemspec.
|
4
|
+
# Bundler will treat runtime dependencies like base dependencies, and
|
5
|
+
# development dependencies will be added by default to the :development group.
|
6
|
+
gemspec path: File.expand_path('..', __FILE__)
|
7
|
+
|
8
|
+
# Declare any dependencies that are still in development here instead of in
|
9
|
+
# your gemspec. These might include edge Rails or gems from your path or
|
10
|
+
# Git. Remember to move these dependencies to your gemspec before releasing
|
11
|
+
# your gem to rubygems.org.
|
12
|
+
|
13
|
+
# To use debugger
|
14
|
+
# gem 'debugger'
|
15
|
+
|
16
|
+
gem 'equivalent-xml', github: 'jeremyf/equivalent-xml', branch: 'updating-rspec-for-rspec-3'
|
17
|
+
gem "rake"
|
18
|
+
gem 'coveralls', require: false
|
19
|
+
if ! ENV['TRAVIS']
|
20
|
+
gem 'simplecov', require: false
|
21
|
+
gem 'guard-rspec'
|
22
|
+
gem 'guard-bundler'
|
23
|
+
gem 'guard-rails'
|
24
|
+
gem 'rb-fsevent'
|
25
|
+
gem 'terminal-notifier-guard'
|
26
|
+
gem 'sexp_processor'
|
27
|
+
gem 'ruby_parser'
|
28
|
+
gem 'pry', '~> 0.9.7'
|
29
|
+
gem 'pry-nav'
|
30
|
+
end
|
31
|
+
|
32
|
+
file = File.expand_path("Gemfile", ENV['ENGINE_CART_DESTINATION'] || ENV['RAILS_ROOT'] || File.expand_path("../spec/internal", __FILE__))
|
33
|
+
if File.exists?(file)
|
34
|
+
puts "Loading #{file} ..." if $DEBUG # `ruby -d` or `bundle -v`
|
35
|
+
instance_eval File.read(file)
|
36
|
+
end
|
data/Guardfile
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
guard :bundler do
|
5
|
+
watch('Gemfile')
|
6
|
+
watch(/^.+\.gemspec/)
|
7
|
+
end
|
8
|
+
|
9
|
+
guard 'rails', root: 'spec/internal', port: 3001 do
|
10
|
+
watch('Gemfile.lock')
|
11
|
+
watch(%r{^(config|lib)/.*})
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
guard :rspec do
|
16
|
+
watch(%r{^spec/.+_spec\.rb$})
|
17
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
18
|
+
watch(%r{^spec/(.+)_helper.rb$}) { |m| "spec" }
|
19
|
+
|
20
|
+
# Rails example
|
21
|
+
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
22
|
+
watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
23
|
+
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
|
24
|
+
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
25
|
+
watch('config/routes.rb') { "spec/routing" }
|
26
|
+
watch('app/controllers/application_controller.rb') { "spec/controllers" }
|
27
|
+
|
28
|
+
# Capybara features specs
|
29
|
+
# watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
|
30
|
+
|
31
|
+
# Turnip features and steps
|
32
|
+
# watch(%r{^spec/acceptance/(.+)\.feature$})
|
33
|
+
# watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
|
34
|
+
end
|
35
|
+
|
36
|
+
|
data/LICENSE
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
##########################################################################
|
2
|
+
# Copyright 2014 University of Notre Dame
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
data/README.md
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# Hydramata::Works
|
2
|
+
|
3
|
+
[](http://badge.fury.io/rb/hydramata-work)
|
4
|
+
[](https://travis-ci.org/jeremyf/hydramata-work)
|
5
|
+
[](https://codeclimate.com/github/jeremyf/hydramata-work)
|
6
|
+
[](https://coveralls.io/r/jeremyf/hydramata-work)
|
7
|
+
[](http://rubydoc.info/github/jeremyf/hydramata-work/master/frames/)
|
8
|
+
[](./LICENSE)
|
9
|
+
|
10
|
+
Responsible for providing a well defined data-structure to ease the interaction between differing layers of an application:
|
11
|
+
|
12
|
+
* Persistence Layer
|
13
|
+
* In Memory
|
14
|
+
* Rendering/Output Buffer
|
15
|
+
|
16
|
+
## Getting Started
|
17
|
+
|
18
|
+
Presently Hydramata::Works is a work in progress, and very much not ready for production usage.
|
19
|
+
|
20
|
+
But I would encourage you to:
|
21
|
+
|
22
|
+
1. Clone the repository: `git clone https://github.com/jeremyf/hydramata-work.git hydramata-work`
|
23
|
+
1. Change to the repository's directory: `cd hydramata-work`
|
24
|
+
1. Install the base dependencies: `bundle install`
|
25
|
+
1. Run the default rake task: `rake`
|
26
|
+
|
27
|
+
The rake task will build the internal rails application and run all of the tests.
|
28
|
+
|
29
|
+
Once you have the `spec/internal` directory built, you can run `rspec` or `rake spec:all`.
|
30
|
+
|
31
|
+
## Resources
|
32
|
+
|
33
|
+
* [Vision of Hydramata::Works](./VISION.md)
|
34
|
+
* [Contributing Guidelines](./CONTRIBUTING.md)
|
35
|
+
* [Todo](./TODO.md)
|
36
|
+
* [Design Documents](./documents/)
|
data/Rakefile
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
Bundler::GemHelper.install_tasks
|
8
|
+
|
9
|
+
begin
|
10
|
+
APP_RAKEFILE = File.expand_path('../spec/internal/Rakefile', __FILE__)
|
11
|
+
load 'rails/tasks/engine.rake'
|
12
|
+
rescue LoadError
|
13
|
+
puts "Unable to load all app tasks for #{APP_RAKEFILE}"
|
14
|
+
end
|
15
|
+
|
16
|
+
require 'engine_cart/rake_task'
|
17
|
+
# http://stackoverflow.com/questions/23165506/rails-spring-breaking-generators
|
18
|
+
# https://github.com/cbeer/engine_cart/issues/15
|
19
|
+
EngineCart.rails_options = '--skip-spring'
|
20
|
+
require 'rspec/core/rake_task'
|
21
|
+
|
22
|
+
namespace :spec do
|
23
|
+
RSpec::Core::RakeTask.new(:all) do
|
24
|
+
ENV['COVERAGE'] = 'true'
|
25
|
+
end
|
26
|
+
|
27
|
+
desc 'Run the Travis CI specs'
|
28
|
+
task :travis do
|
29
|
+
ENV['RAILS_ENV'] = 'test'
|
30
|
+
spec_helper = File.expand_path('../spec/spec_slow_helper.rb', __FILE__)
|
31
|
+
ENV['SPEC_OPTS'] = "--profile 20 --require #{spec_helper}"
|
32
|
+
Rake::Task['engine_cart:clean'].invoke
|
33
|
+
Rake::Task['engine_cart:generate'].invoke
|
34
|
+
Rake::Task['spec:all'].invoke
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
begin
|
39
|
+
Rake::Task['default'].clear
|
40
|
+
rescue RuntimeError
|
41
|
+
puts 'Unable to find :default rake task; No worries.'
|
42
|
+
end
|
43
|
+
|
44
|
+
Rake::Task['spec'].clear
|
45
|
+
|
46
|
+
task spec: 'spec:all'
|
47
|
+
task default: 'spec:travis'
|
data/TODO.md
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
# Todo
|
2
|
+
|
3
|
+
This is a non-exhaustive scratch pad for TODO items.
|
4
|
+
|
5
|
+
## Top Level Features
|
6
|
+
|
7
|
+
These features reflect the movement of data from one layer to another.
|
8
|
+
In each layer, there is a concept of a Work and its data structure.
|
9
|
+
|
10
|
+
- [x] Fedora -> Memory
|
11
|
+
- [x] Memory -> Show HTML
|
12
|
+
- [x] Memory -> Show JSON
|
13
|
+
- [x] Memory -> Edit HTML
|
14
|
+
- [ ] Database -> Memory
|
15
|
+
- [ ] Solr -> Memory
|
16
|
+
- [ ] Memory -> Fedora
|
17
|
+
- [ ] Memory -> Database
|
18
|
+
- [ ] Memory -> Solr
|
19
|
+
- [ ] Memory -> New HTML
|
20
|
+
- [ ] Memory -> Solr Document
|
21
|
+
- [X] UI Input for New -> Memory
|
22
|
+
- [ ] UI Input for Edit -> Memory
|
23
|
+
- [X] Validation in Memory Object
|
24
|
+
|
25
|
+
## Low Level Tasks
|
26
|
+
|
27
|
+
These should not be considered exhaustive.
|
28
|
+
But are instead a parking lot that may be cleared or added to.
|
29
|
+
|
30
|
+
- [X] Default entity rendering to include work_type as one of the partial
|
31
|
+
prefixes.
|
32
|
+
- [X] Default fieldset rendering to include work_type and fieldset name as the
|
33
|
+
partial prefixes.
|
34
|
+
- [X] Default fieldset rendering to include work_type, fieldset name, and
|
35
|
+
predicate name as the partial prefixes.
|
36
|
+
- [X] Create Work Type persistence
|
37
|
+
- [X] Create Work Type conversion
|
38
|
+
- [X] Create Work Type presentation structure persistence
|
39
|
+
- [X] Integrate presentation structure persistence with construction of in memory objects for presentation
|
40
|
+
- [X] Remove some duplication of Work Type and Predicate (moving towards a Definition concept?)
|
41
|
+
- [X] Create some rudimentary seeds for Work Types
|
42
|
+
- [X] Create some rudimentary seeds for Work Types presentation structure
|
43
|
+
- [X] Create some rudimentary seeds for Predicates
|
44
|
+
- [ ] Disambigutate identity vs. name for application usage
|
45
|
+
- [X] Allow for the declaration of validations for a given Predicate
|
46
|
+
- [ ] Tidy up validation services; Presently it has lots of knowledge of Entity's structure
|
47
|
+
- [X] Improve internationalization support by providing a better key path.
|
48
|
+
- [X] Add view tests for show templates
|
49
|
+
- [ ] Add view tests for edit templates
|
50
|
+
- [ ] Reify an object from persistence then apply value changes
|
51
|
+
- [ ] Review view rendering path options; Presently the top level work type is created.
|
52
|
+
- [X] Add PresentationStructure builder by WorkType; This is done by interrogating the
|
53
|
+
data storage.
|
54
|
+
- [X] Add support for multi rails
|
55
|
+
- [ ] dom_class should derive from system symbol for identifier
|
56
|
+
- [ ] dom_class should accept prefix and suffix
|
57
|
+
- [ ] itemprop: for the Property presenter (for Microdata)
|
58
|
+
- [X] itemtype for WorkType presenter (RDFa and Microdata)
|
59
|
+
- [ ] When persisting Validations make sure to validate that the serialized document is valid
|
60
|
+
- [X] Conversion for Entity to EntityPresenter; Or Presenter() conversion
|
61
|
+
- [X] Create a NullWorkType concept.
|
62
|
+
It would be helpful to create a Null Work Type, so our application doesn't choke.
|
63
|
+
- [X] Add internationalization for Work Type contexts:
|
64
|
+
- [X] Work type name
|
65
|
+
- [X] Work type description
|
66
|
+
- [X] Work type verbose description (fallback to description)
|
67
|
+
- [X] Add internationalization for Predicate Set
|
68
|
+
- [X] Predicate set name
|
69
|
+
- [X] Predicate set description
|
70
|
+
- [X] Predicate set verbose description (fallback to description)
|
71
|
+
- [X] Add internationalization for Predicate
|
72
|
+
- [X] Predicate label
|
73
|
+
- [X] Predicate description (hint)
|
74
|
+
- [X] Predicate verbose description (fallback to description)
|