geo_concerns 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.rubocop.yml +101 -0
  4. data/.travis.yml +17 -0
  5. data/Gemfile +46 -0
  6. data/LICENSE +202 -0
  7. data/README.md +46 -0
  8. data/Rakefile +21 -0
  9. data/app/actors/geo_concerns/file_actor.rb +20 -0
  10. data/app/actors/geo_concerns/file_set_actor.rb +7 -0
  11. data/app/assets/images/geo_concerns/.keep +0 -0
  12. data/app/assets/images/geo_concerns/images/geocoder.png +0 -0
  13. data/app/assets/images/geo_concerns/images/throbber.gif +0 -0
  14. data/app/assets/images/geo_concerns/img/filter-icon.png +0 -0
  15. data/app/assets/images/geo_concerns/img/move-handle.png +0 -0
  16. data/app/assets/images/geo_concerns/img/resize-handle.png +0 -0
  17. data/app/assets/javascripts/geo_concerns/Control.Geocoder.js +1056 -0
  18. data/app/assets/javascripts/geo_concerns/application.js +5 -0
  19. data/app/assets/javascripts/geo_concerns/bounding_box_selector.js +100 -0
  20. data/app/assets/javascripts/geo_concerns/leaflet-boundingbox.js +467 -0
  21. data/app/assets/stylesheets/geo_concerns/Control.Geocoder.css +104 -0
  22. data/app/assets/stylesheets/geo_concerns/application.css +18 -0
  23. data/app/assets/stylesheets/geo_concerns/bounding_box.scss +7 -0
  24. data/app/assets/stylesheets/geo_concerns/leaflet-boundingbox.css +17 -0
  25. data/app/controllers/concerns/geo_concerns/file_sets_controller_behavior.rb +19 -0
  26. data/app/controllers/concerns/geo_concerns/image_works_controller_behavior.rb +13 -0
  27. data/app/controllers/concerns/geo_concerns/raster_works_controller_behavior.rb +23 -0
  28. data/app/controllers/concerns/geo_concerns/vector_works_controller_behavior.rb +23 -0
  29. data/app/forms/geo_concerns/basic_geo_metadata_form.rb +8 -0
  30. data/app/forms/geo_concerns/external_metadata_file_form.rb +8 -0
  31. data/app/forms/geo_concerns/georeferenced_form.rb +9 -0
  32. data/app/forms/geo_concerns/image_work_form.rb +9 -0
  33. data/app/forms/geo_concerns/raster_work_form.rb +8 -0
  34. data/app/forms/geo_concerns/vector_work_form.rb +8 -0
  35. data/app/helpers/bounding_box_helper.rb +24 -0
  36. data/app/helpers/geo_concerns/application_helper.rb +4 -0
  37. data/app/models/concerns/geo_concerns/basic_geo_metadata.rb +21 -0
  38. data/app/models/concerns/geo_concerns/external_metadata_file_behavior.rb +31 -0
  39. data/app/models/concerns/geo_concerns/extractors/fgdc_helper.rb +9 -0
  40. data/app/models/concerns/geo_concerns/extractors/fgdc_metadata_extractor.rb +114 -0
  41. data/app/models/concerns/geo_concerns/extractors/iso19139_helper.rb +50 -0
  42. data/app/models/concerns/geo_concerns/extractors/mods_helper.rb +15 -0
  43. data/app/models/concerns/geo_concerns/file_set/derivatives.rb +60 -0
  44. data/app/models/concerns/geo_concerns/file_set_presenter_behavior.rb +7 -0
  45. data/app/models/concerns/geo_concerns/geo_file_format_behavior.rb +37 -0
  46. data/app/models/concerns/geo_concerns/geo_file_set_behavior.rb +11 -0
  47. data/app/models/concerns/geo_concerns/georeferenced_behavior.rb +18 -0
  48. data/app/models/concerns/geo_concerns/image_file_behavior.rb +14 -0
  49. data/app/models/concerns/geo_concerns/image_work_behavior.rb +69 -0
  50. data/app/models/concerns/geo_concerns/metadata_extraction_helper.rb +28 -0
  51. data/app/models/concerns/geo_concerns/raster_file_behavior.rb +14 -0
  52. data/app/models/concerns/geo_concerns/raster_work_behavior.rb +82 -0
  53. data/app/models/concerns/geo_concerns/solr_document_behavior.rb +25 -0
  54. data/app/models/concerns/geo_concerns/vector_file_behavior.rb +14 -0
  55. data/app/models/concerns/geo_concerns/vector_work_behavior.rb +78 -0
  56. data/app/presenters/geo_concerns/geo_concerns_show_presenter.rb +30 -0
  57. data/app/presenters/geo_concerns/image_work_show_presenter.rb +18 -0
  58. data/app/presenters/geo_concerns/raster_work_show_presenter.rb +18 -0
  59. data/app/presenters/geo_concerns/vector_work_show_presenter.rb +10 -0
  60. data/app/processors/geo_concerns/processors/base_geo_processor.rb +86 -0
  61. data/app/processors/geo_concerns/processors/raster.rb +11 -0
  62. data/app/processors/geo_concerns/processors/raster/aig.rb +44 -0
  63. data/app/processors/geo_concerns/processors/raster/base.rb +74 -0
  64. data/app/processors/geo_concerns/processors/raster/dem.rb +46 -0
  65. data/app/processors/geo_concerns/processors/raster/processor.rb +27 -0
  66. data/app/processors/geo_concerns/processors/vector.rb +11 -0
  67. data/app/processors/geo_concerns/processors/vector/base.rb +68 -0
  68. data/app/processors/geo_concerns/processors/vector/processor.rb +25 -0
  69. data/app/processors/geo_concerns/processors/vector/shapefile.rb +20 -0
  70. data/app/processors/geo_concerns/processors/zip.rb +31 -0
  71. data/app/renderers/coverage_renderer.rb +34 -0
  72. data/app/runners/geo_concerns/runners/raster_derivatives.rb +9 -0
  73. data/app/runners/geo_concerns/runners/vector_derivatives.rb +9 -0
  74. data/app/schemas/geo_concerns/basic_geo_metadata_optional.rb +39 -0
  75. data/app/schemas/geo_concerns/basic_geo_metadata_required.rb +25 -0
  76. data/app/services/authority_service.rb +23 -0
  77. data/app/services/geo_concerns/derivative_path.rb +16 -0
  78. data/app/services/image_format_service.rb +4 -0
  79. data/app/services/metadata_format_service.rb +4 -0
  80. data/app/services/raster_format_service.rb +4 -0
  81. data/app/services/vector_format_service.rb +4 -0
  82. data/app/values/geo_concerns/coverage.rb +36 -0
  83. data/app/values/geo_concerns/time_period.rb +31 -0
  84. data/app/views/curation_concerns/file_sets/_form.html.erb +48 -0
  85. data/app/views/curation_concerns/image_works/_form.html.erb +23 -0
  86. data/app/views/curation_concerns/image_works/_image_work.html.erb +2 -0
  87. data/app/views/curation_concerns/image_works/_members.html.erb +30 -0
  88. data/app/views/curation_concerns/image_works/_related_image_files.html.erb +24 -0
  89. data/app/views/curation_concerns/image_works/_show_actions.html.erb +16 -0
  90. data/app/views/curation_concerns/image_works/show.html.erb +17 -0
  91. data/app/views/curation_concerns/raster_works/_form.html.erb +25 -0
  92. data/app/views/curation_concerns/raster_works/_members.html.erb +30 -0
  93. data/app/views/curation_concerns/raster_works/_raster_work.html.erb +2 -0
  94. data/app/views/curation_concerns/raster_works/_related_raster_files.html.erb +24 -0
  95. data/app/views/curation_concerns/raster_works/_show_actions.html.erb +16 -0
  96. data/app/views/curation_concerns/raster_works/show.html.erb +17 -0
  97. data/app/views/curation_concerns/vector_works/_form.html.erb +25 -0
  98. data/app/views/curation_concerns/vector_works/_related_vector_files.html.erb +24 -0
  99. data/app/views/curation_concerns/vector_works/_show_actions.html.erb +15 -0
  100. data/app/views/curation_concerns/vector_works/_vector_work.html.erb +2 -0
  101. data/app/views/curation_concerns/vector_works/show.html.erb +15 -0
  102. data/app/views/geo_concerns/_attribute_rows.html.erb +11 -0
  103. data/app/views/geo_concerns/_attributes.html.erb +13 -0
  104. data/app/views/geo_concerns/_form_additional_information.html.erb +11 -0
  105. data/app/views/geo_concerns/_form_bounding_box.html.erb +9 -0
  106. data/app/views/geo_concerns/_form_descriptive_fields.html.erb +9 -0
  107. data/app/views/geo_concerns/_form_files_and_links.html.erb +0 -0
  108. data/app/views/geo_concerns/_form_populate_metadata.html.erb +8 -0
  109. data/app/views/geo_concerns/_form_required_information.html.erb +12 -0
  110. data/app/views/geo_concerns/_form_supplementary_fields.html.erb +15 -0
  111. data/app/views/geo_concerns/_related_external_metadata_files.html.erb +24 -0
  112. data/app/vocabs/geo_concerns/geo_terms.rb +12 -0
  113. data/bin/rails +12 -0
  114. data/config/routes.rb +6 -0
  115. data/geo_concerns.gemspec +36 -0
  116. data/lib/generators/geo_concerns/install_generator.rb +119 -0
  117. data/lib/generators/geo_concerns/templates/actors/curation_concerns/image_work_actor.rb +4 -0
  118. data/lib/generators/geo_concerns/templates/actors/curation_concerns/raster_work_actor.rb +4 -0
  119. data/lib/generators/geo_concerns/templates/actors/curation_concerns/vector_work_actor.rb +4 -0
  120. data/lib/generators/geo_concerns/templates/config/authorities/image_formats.yml +5 -0
  121. data/lib/generators/geo_concerns/templates/config/authorities/metadata_formats.yml +7 -0
  122. data/lib/generators/geo_concerns/templates/config/authorities/raster_formats.yml +9 -0
  123. data/lib/generators/geo_concerns/templates/config/authorities/vector_formats.yml +5 -0
  124. data/lib/generators/geo_concerns/templates/controllers/curation_concerns/file_sets_controller.rb +6 -0
  125. data/lib/generators/geo_concerns/templates/controllers/curation_concerns/image_works_controller.rb +5 -0
  126. data/lib/generators/geo_concerns/templates/controllers/curation_concerns/raster_works_controller.rb +6 -0
  127. data/lib/generators/geo_concerns/templates/controllers/curation_concerns/vector_works_controller.rb +6 -0
  128. data/lib/generators/geo_concerns/templates/geo_concerns.js +1 -0
  129. data/lib/generators/geo_concerns/templates/geo_concerns.scss +3 -0
  130. data/lib/generators/geo_concerns/templates/jobs/characterize_job.rb +12 -0
  131. data/lib/generators/geo_concerns/templates/models/file_set.rb +4 -0
  132. data/lib/generators/geo_concerns/templates/models/image_work.rb +6 -0
  133. data/lib/generators/geo_concerns/templates/models/raster_work.rb +7 -0
  134. data/lib/generators/geo_concerns/templates/models/vector_work.rb +7 -0
  135. data/lib/generators/geo_concerns/templates/presenters/file_set_presenter.rb +3 -0
  136. data/lib/generators/geo_concerns/templates/spec/actor_spec.rb.erb +9 -0
  137. data/lib/generators/geo_concerns/templates/spec/controller_spec.rb.erb +9 -0
  138. data/lib/generators/geo_concerns/templates/spec/model_spec.rb.erb +9 -0
  139. data/lib/geo_concerns.rb +6 -0
  140. data/lib/geo_concerns/engine.rb +4 -0
  141. data/lib/geo_concerns/version.rb +3 -0
  142. data/lib/tasks/geo_concerns_tasks.rake +4 -0
  143. data/solr/config/_rest_managed.json +3 -0
  144. data/solr/config/admin-extra.html +31 -0
  145. data/solr/config/elevate.xml +36 -0
  146. data/solr/config/mapping-ISOLatin1Accent.txt +246 -0
  147. data/solr/config/protwords.txt +21 -0
  148. data/solr/config/schema.xml +372 -0
  149. data/solr/config/scripts.conf +24 -0
  150. data/solr/config/solrconfig.xml +312 -0
  151. data/solr/config/spellings.txt +2 -0
  152. data/solr/config/stopwords.txt +58 -0
  153. data/solr/config/stopwords_en.txt +58 -0
  154. data/solr/config/synonyms.txt +31 -0
  155. data/solr/config/xslt/example.xsl +132 -0
  156. data/solr/config/xslt/example_atom.xsl +67 -0
  157. data/solr/config/xslt/example_rss.xsl +66 -0
  158. data/solr/config/xslt/luke.xsl +337 -0
  159. data/spec/actors/geo_concerns/file_actor_spec.rb +26 -0
  160. data/spec/controllers/image_works_controller_spec.rb +25 -0
  161. data/spec/controllers/raster_works_controller_spec.rb +50 -0
  162. data/spec/controllers/vector_works_controller_spec.rb +50 -0
  163. data/spec/factories/external_metadata_files.rb +20 -0
  164. data/spec/factories/image_files.rb +32 -0
  165. data/spec/factories/image_works.rb +68 -0
  166. data/spec/factories/raster_files.rb +35 -0
  167. data/spec/factories/raster_works.rb +86 -0
  168. data/spec/factories/users.rb +26 -0
  169. data/spec/factories/vector_files.rb +31 -0
  170. data/spec/factories/vector_works.rb +83 -0
  171. data/spec/features/create_raster_work_spec.rb +49 -0
  172. data/spec/forms/geo_concerns/basic_geo_metadata_form_spec.rb +27 -0
  173. data/spec/forms/geo_concerns/external_metadata_file_form_spec.rb +27 -0
  174. data/spec/forms/geo_concerns/georeferenced_form_spec.rb +29 -0
  175. data/spec/forms/geo_concerns/image_work_form_spec.rb +11 -0
  176. data/spec/forms/geo_concerns/raster_work_form_spec.rb +15 -0
  177. data/spec/forms/geo_concerns/vector_work_form_spec.rb +15 -0
  178. data/spec/helpers/bounding_box_helper_spec.rb +34 -0
  179. data/spec/models/concerns/basic_geo_metadata_spec.rb +21 -0
  180. data/spec/models/concerns/geo_concerns/file_set/derivatives_spec.rb +108 -0
  181. data/spec/models/concerns/geo_concerns/file_set/geo_file_format_behavior_spec.rb +56 -0
  182. data/spec/models/external_metadata_file_spec.rb +118 -0
  183. data/spec/models/file_set_spec.rb +9 -0
  184. data/spec/models/image_file_spec.rb +48 -0
  185. data/spec/models/image_work_spec.rb +71 -0
  186. data/spec/models/raster_file_spec.rb +48 -0
  187. data/spec/models/raster_work_spec.rb +122 -0
  188. data/spec/models/solr_document_spec.rb +35 -0
  189. data/spec/models/vector_file_spec.rb +48 -0
  190. data/spec/models/vector_work_spec.rb +113 -0
  191. data/spec/presenters/file_set_presenter_spec.rb +13 -0
  192. data/spec/presenters/geo_concerns_show_presenter_spec.rb +56 -0
  193. data/spec/presenters/image_work_show_presenter_spec.rb +52 -0
  194. data/spec/presenters/raster_work_show_presenter_spec.rb +52 -0
  195. data/spec/presenters/vector_work_show_presenter_spec.rb +41 -0
  196. data/spec/processors/geo_concerns/processors/base_geo_processor_spec.rb +109 -0
  197. data/spec/processors/geo_concerns/processors/raster/aig_spec.rb +28 -0
  198. data/spec/processors/geo_concerns/processors/raster/base_spec.rb +86 -0
  199. data/spec/processors/geo_concerns/processors/raster/dem_spec.rb +26 -0
  200. data/spec/processors/geo_concerns/processors/raster/processor_spec.rb +39 -0
  201. data/spec/processors/geo_concerns/processors/vector/base_spec.rb +67 -0
  202. data/spec/processors/geo_concerns/processors/vector/processor_spec.rb +28 -0
  203. data/spec/processors/geo_concerns/processors/vector/shapefile_spec.rb +17 -0
  204. data/spec/processors/geo_concerns/processors/zip_spec.rb +39 -0
  205. data/spec/renderers/coverage_renderer_spec.rb +21 -0
  206. data/spec/services/derivative_path_spec.rb +12 -0
  207. data/spec/services/raster_format_service_spec.rb +13 -0
  208. data/spec/spec_helper.rb +34 -0
  209. data/spec/support/controllers/engine_helpers.rb +7 -0
  210. data/spec/support/database_cleaner.rb +18 -0
  211. data/spec/support/devise.rb +10 -0
  212. data/spec/support/devise_helpers.rb +6 -0
  213. data/spec/support/factory_girl.rb +3 -0
  214. data/spec/support/features.rb +14 -0
  215. data/spec/support/features/session_helpers.rb +40 -0
  216. data/spec/support/fixture_reader.rb +7 -0
  217. data/spec/test_app_templates/lib/generators/test_app_generator.rb +20 -0
  218. data/spec/values/coverage_spec.rb +40 -0
  219. data/tasks/ci.rake +49 -0
  220. metadata +527 -0
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe GeoConcerns::FileActor do
4
+ include ActionDispatch::TestProcess
5
+ let(:user) { double }
6
+ let(:file) { double }
7
+ let(:file_set) { double }
8
+ let(:actor) { described_class.new(file_set, 'test', user) }
9
+
10
+ describe '#mime_type' do
11
+ context 'there is a mime_type attribute on the file set' do
12
+ it 'returns the file set mime type' do
13
+ allow(file_set).to receive(:mime_type).and_return('text/plain; gdal-format=USGSDEM')
14
+ expect(actor.mime_type(file)).to eq('text/plain; gdal-format=USGSDEM')
15
+ end
16
+ end
17
+
18
+ context 'there is not a mime_type attribute on the file set' do
19
+ it 'returns the file set mime type' do
20
+ allow(file_set).to receive(:mime_type).and_return(nil)
21
+ allow(file).to receive(:content_type).and_return('text/plain; gdal-format=USGSDEM')
22
+ expect(actor.mime_type(file)).to eq('text/plain; gdal-format=USGSDEM')
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe CurationConcerns::ImageWorksController, type: :controller do
4
+ let(:user) { FactoryGirl.create(:user) }
5
+
6
+ describe "#show_presenter" do
7
+ it "is a image work show presenter" do
8
+ expect(described_class.new.show_presenter).to eq(::GeoConcerns::ImageWorkShowPresenter)
9
+ end
10
+ end
11
+
12
+ describe "#show" do
13
+ before do
14
+ sign_in user
15
+ end
16
+ context "with an existing image work" do
17
+ it "is a success" do
18
+ image = FactoryGirl.create(:image_work, user: user)
19
+
20
+ get :show, id: image.id
21
+ expect(response).to be_success
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe CurationConcerns::RasterWorksController, type: :controller do
4
+ let(:user) { FactoryGirl.create(:user) }
5
+ let(:raster_work) { FactoryGirl.create(:raster_work, user: user, title: ['Raster Work Title']) }
6
+ let(:reloaded) { raster_work.reload }
7
+
8
+ describe "#create" do
9
+ let(:user) { FactoryGirl.create(:admin) }
10
+ before do
11
+ sign_in user
12
+ end
13
+ context "when given a parent" do
14
+ let(:parent) { FactoryGirl.create(:image_work, user: user) }
15
+ let(:raster_work_attributes) do
16
+ FactoryGirl.attributes_for(:raster_work)
17
+ end
18
+ it "creates and indexes its parent" do
19
+ post :create, raster_work: raster_work_attributes, parent_id: parent.id
20
+ solr_document = ActiveFedora::SolrService.query("id:#{assigns[:curation_concern].id}").first
21
+
22
+ expect(solr_document["ordered_by_ssim"]).to eq [parent.id]
23
+ end
24
+ end
25
+ end
26
+
27
+ describe "#show" do
28
+ before do
29
+ sign_in user
30
+ end
31
+ context "when there's a parent image work" do
32
+ it "is a success" do
33
+ raster = FactoryGirl.create(:raster_work, user: user)
34
+ image = FactoryGirl.create(:image_work, user: user)
35
+ image.ordered_members << raster
36
+ image.save
37
+ raster.update_index
38
+
39
+ get :show, id: raster.id
40
+ expect(response).to be_success
41
+ end
42
+ end
43
+ end
44
+
45
+ describe "#show_presenter" do
46
+ it "is a raster work show presenter" do
47
+ expect(described_class.new.show_presenter).to eq(GeoConcerns::RasterWorkShowPresenter)
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe CurationConcerns::VectorWorksController, type: :controller do
4
+ let(:user) { FactoryGirl.create(:user) }
5
+ let(:vector_work) { FactoryGirl.create(:vector_work, user: user, title: ['Vector Work Title']) }
6
+ let(:reloaded) { vector_work.reload }
7
+
8
+ describe "#create" do
9
+ let(:user) { FactoryGirl.create(:admin) }
10
+ before do
11
+ sign_in user
12
+ end
13
+ context "when given a parent" do
14
+ let(:parent) { FactoryGirl.create(:raster_work, user: user) }
15
+ let(:vector_work_attributes) do
16
+ FactoryGirl.attributes_for(:vector_work)
17
+ end
18
+ it "creates and indexes its parent" do
19
+ post :create, vector_work: vector_work_attributes, parent_id: parent.id
20
+ solr_document = ActiveFedora::SolrService.query("id:#{assigns[:curation_concern].id}").first
21
+
22
+ expect(solr_document["ordered_by_ssim"]).to eq [parent.id]
23
+ end
24
+ end
25
+ end
26
+
27
+ describe "#show" do
28
+ before do
29
+ sign_in user
30
+ end
31
+ context "when there's a parent raster work" do
32
+ it "is a success" do
33
+ vector = FactoryGirl.create(:vector_work, user: user)
34
+ raster = FactoryGirl.create(:raster_work, user: user)
35
+ raster.ordered_members << vector
36
+ raster.save
37
+ vector.update_index
38
+
39
+ get :show, id: vector.id
40
+ expect(response).to be_success
41
+ end
42
+ end
43
+ end
44
+
45
+ describe "#show_presenter" do
46
+ it "is a vector work show presenter" do
47
+ expect(described_class.new.show_presenter.name).to eq("GeoConcerns::VectorWorkShowPresenter")
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,20 @@
1
+ FactoryGirl.define do
2
+ factory :external_metadata_file, class: FileSet do
3
+ initialize_with { new(mime_type: 'application/xml; schema=iso19139') }
4
+ transient do
5
+ user { FactoryGirl.create(:user) }
6
+ content nil
7
+ end
8
+
9
+ after(:build) do |file, evaluator|
10
+ file.title = ['A metadata file']
11
+ file.apply_depositor_metadata(evaluator.user.user_key)
12
+ end
13
+
14
+ after(:create) do |file, evaluator|
15
+ if evaluator.content
16
+ Hydra::Works::UploadFileToGenericFile.call(file, evaluator.content)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,32 @@
1
+ FactoryGirl.define do
2
+ factory :image_file, class: FileSet do
3
+ initialize_with { new(mime_type: 'image/tiff') }
4
+ transient do
5
+ user { FactoryGirl.create(:user) }
6
+ content nil
7
+ end
8
+
9
+ after(:build) do |file, evaluator|
10
+ file.title = ['An image file']
11
+ file.apply_depositor_metadata(evaluator.user.user_key)
12
+ end
13
+
14
+ after(:create) do |file, evaluator|
15
+ if evaluator.content
16
+ Hydra::Works::UploadFileToGenericFile.call(file, evaluator.content)
17
+ end
18
+ end
19
+
20
+ factory :image_file_with_image do
21
+ after(:build) do |file, evaluator|
22
+ FactoryGirl.create(:image, user: evaluator.user).image_files << file
23
+ end
24
+ after(:create) do |file, evaluator|
25
+ if evaluator.content
26
+ Hydra::Works::UploadFileToGenericFile.call(file, evaluator.content)
27
+ end
28
+ FactoryGirl.create(:image, user: evaluator.user).image_files << file
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,68 @@
1
+ FactoryGirl.define do
2
+ factory :image_work, aliases: [:private_image_work], class: ImageWork do
3
+ transient do
4
+ user { FactoryGirl.create(:user) }
5
+
6
+ visibility Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
7
+ end
8
+
9
+ after(:build) do |image_work, evaluator|
10
+ image_work.apply_depositor_metadata(evaluator.user.user_key)
11
+ end
12
+
13
+ factory :public_image_work do
14
+ before(:create) do |image_work, _evaluator|
15
+ image_work.visibility = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
16
+ end
17
+ end
18
+
19
+ factory :image_work_with_one_file do
20
+ before(:create) do |image_work, evaluator|
21
+ image_work.ordered_members << FactoryGirl.create(:image_file, user: evaluator.user)
22
+ end
23
+ end
24
+
25
+ factory :image_work_with_one_metadata_file do
26
+ after(:create) do |image_work, evaluator|
27
+ 1.times { image_work.ordered_members << FactoryGirl.create(:external_metadata_file, user: evaluator.user) }
28
+ end
29
+ end
30
+
31
+ factory :image_work_with_raster_works do
32
+ before(:create) do |image_work, evaluator|
33
+ 2.times { image_work.ordered_members << FactoryGirl.create(:raster_work, user: evaluator.user) }
34
+ end
35
+ end
36
+
37
+ factory :image_work_with_files_and_metadata_files do
38
+ after(:create) do |image_work, evaluator|
39
+ 2.times { image_work.ordered_members << FactoryGirl.create(:image_file, user: evaluator.user) }
40
+ 2.times { image_work.ordered_members << FactoryGirl.create(:external_metadata_file, user: evaluator.user) }
41
+ end
42
+ end
43
+
44
+ factory :image_work_with_embargo_date do
45
+ transient do
46
+ embargo_date { Date.tomorrow.to_s }
47
+ end
48
+
49
+ factory :embargoed_image_work do
50
+ after(:build) { |image_work, evaluator| image_work.apply_embargo(evaluator.embargo_date, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC) }
51
+ end
52
+
53
+ factory :embargoed_image_work_with_files do
54
+ after(:build) { |image_work, evaluator| image_work.apply_embargo(evaluator.embargo_date, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC) }
55
+ after(:create) { |image_work, evaluator| 2.times { image_work.image_files << FactoryGirl.create(:image_file, user: evaluator.user) } }
56
+ end
57
+
58
+ factory :leased_image_work do
59
+ after(:build) { |image_work, evaluator| image_work.apply_lease(evaluator.embargo_date, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE) }
60
+ end
61
+
62
+ factory :leased_image_work_with_files do
63
+ after(:build) { |image_work, evaluator| image_work.apply_lease(evaluator.embargo_date, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE) }
64
+ after(:create) { |image_work, evaluator| 2.times { image_work.image_files << FactoryGirl.create(:image_file, user: evaluator.user) } }
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,35 @@
1
+ FactoryGirl.define do
2
+ factory :raster_file, class: FileSet do
3
+ initialize_with { new(mime_type: 'image/tiff; gdal-format=GTiff') }
4
+ transient do
5
+ user { FactoryGirl.create(:user) }
6
+ content nil
7
+
8
+ cartographic_projection 'urn:ogc:def:crs:EPSG::6326'
9
+ end
10
+
11
+ after(:build) do |file, evaluator|
12
+ file.apply_depositor_metadata(evaluator.user.user_key)
13
+ end
14
+
15
+ after(:create) do |file, evaluator|
16
+ if evaluator.content
17
+ Hydra::Works::UploadFileToGenericFile.call(file, evaluator.content)
18
+ end
19
+ end
20
+
21
+ factory :raster_file_with_raster do
22
+ # after(:build) do |file, evaluator|
23
+ # file.title = ['testfile']
24
+ # end
25
+ after(:create) do |file, evaluator|
26
+ if evaluator.content
27
+ Hydra::Works::UploadFileToGenericFile.call(file, evaluator.content)
28
+ end
29
+
30
+ raster = FactoryGirl.create(:raster, user: evaluator.user)
31
+ raster.raster_files << file
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,86 @@
1
+ FactoryGirl.define do
2
+ factory :raster_work, aliases: [:private_raster_work], class: RasterWork do
3
+ transient do
4
+ user { FactoryGirl.create(:user) }
5
+
6
+ visibility Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
7
+ end
8
+
9
+ after(:build) do |raster_work, evaluator|
10
+ raster_work.apply_depositor_metadata(evaluator.user.user_key)
11
+ end
12
+
13
+ factory :public_raster_work do
14
+ before(:create) do |raster_work, _evaluator|
15
+ raster_work.visibility = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
16
+ end
17
+ end
18
+
19
+ factory :raster_work_with_one_file do
20
+ before(:create) do |raster_work, evaluator|
21
+ raster_work.ordered_members << FactoryGirl.create(:raster_file, user: evaluator.user, title: ['A GeoTIFF file'], filename: 'filename.tif')
22
+ end
23
+ end
24
+
25
+ factory :raster_work_with_files do
26
+ before(:create) do |raster_work, evaluator|
27
+ 2.times { raster_work.ordered_members << FactoryGirl.create(:raster_file, user: evaluator.user) }
28
+ end
29
+ end
30
+
31
+ factory :raster_work_with_image_works do
32
+ before(:create) do |raster_work, evaluator|
33
+ image = FactoryGirl.create(:image_work, user: evaluator.user)
34
+ image.ordered_members << raster_work
35
+ end
36
+ end
37
+
38
+ factory :raster_work_with_vector_works do
39
+ after(:create) do |raster_work, evaluator|
40
+ 2.times { raster_work.ordered_members << FactoryGirl.create(:vector_work, user: evaluator.user) }
41
+ end
42
+ end
43
+
44
+ factory :raster_work_with_one_metadata_file do
45
+ after(:create) do |raster_work, evaluator|
46
+ 1.times { raster_work.ordered_members << FactoryGirl.create(:external_metadata_file, user: evaluator.user) }
47
+ end
48
+ end
49
+
50
+ factory :raster_work_with_metadata_files do
51
+ after(:create) do |raster_work, evaluator|
52
+ 2.times { raster_work.ordered_members << FactoryGirl.create(:external_metadata_file, user: evaluator.user) }
53
+ end
54
+ end
55
+
56
+ factory :raster_work_with_files_and_metadata_files do
57
+ after(:create) do |raster_work, evaluator|
58
+ 2.times { raster_work.ordered_members << FactoryGirl.create(:raster_file, user: evaluator.user) }
59
+ 2.times { raster_work.ordered_members << FactoryGirl.create(:external_metadata_file, user: evaluator.user) }
60
+ end
61
+ end
62
+
63
+ factory :raster_work_with_embargo_date do
64
+ transient do
65
+ embargo_date { Date.tomorrow.to_s }
66
+ end
67
+ factory :embargoed_raster_work do
68
+ after(:build) { |raster_work, evaluator| raster_work.apply_embargo(evaluator.embargo_date, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC) }
69
+ end
70
+
71
+ factory :embargoed_raster_work_with_files do
72
+ after(:build) { |raster_work, evaluator| raster_work.apply_embargo(evaluator.embargo_date, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC) }
73
+ after(:create) { |raster_work, evaluator| 2.times { raster_work.ordered_members << FactoryGirl.create(:raster_file, user: evaluator.user) } }
74
+ end
75
+
76
+ factory :leased_raster_work do
77
+ after(:build) { |raster_work, evaluator| raster_work.apply_lease(evaluator.embargo_date, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE) }
78
+ end
79
+
80
+ factory :leased_raster_work_with_files do
81
+ after(:build) { |raster_work, evaluator| raster_work.apply_lease(evaluator.embargo_date, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE) }
82
+ after(:create) { |raster_work, evaluator| 2.times { raster_work.ordered_members << FactoryGirl.create(:raster_file, user: evaluator.user) } }
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,26 @@
1
+ FactoryGirl.define do
2
+ factory :user do
3
+ sequence(:email) { |_n| "email-#{srand}@test.com" }
4
+ password 'a password'
5
+ password_confirmation 'a password'
6
+ factory :admin do
7
+ after(:build) do |user|
8
+ def user.groups
9
+ ["admin"]
10
+ end
11
+ end
12
+ end
13
+
14
+ factory :jill do
15
+ email 'jilluser@example.com'
16
+ end
17
+
18
+ factory :archivist, aliases: [:user_with_fixtures] do
19
+ email 'archivist1@example.com'
20
+ end
21
+
22
+ factory :curator do
23
+ email 'curator1@example.com'
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,31 @@
1
+ FactoryGirl.define do
2
+ factory :vector_file, class: FileSet do
3
+ initialize_with { new(mime_type: 'application/zip; ogr-format="ESRI Shapefile"') }
4
+ transient do
5
+ user { FactoryGirl.create(:user) }
6
+ content nil
7
+ end
8
+
9
+ after(:build) do |file, evaluator|
10
+ file.apply_depositor_metadata(evaluator.user.user_key)
11
+ end
12
+
13
+ after(:create) do |file, evaluator|
14
+ if evaluator.content
15
+ Hydra::Works::UploadFileToGenericFile.call(file, evaluator.content)
16
+ end
17
+ end
18
+
19
+ factory :vector_file_with_vector do
20
+ after(:build) do |file, _evaluator|
21
+ file.title = ['testfile']
22
+ end
23
+ after(:create) do |file, evaluator|
24
+ if evaluator.content
25
+ Hydra::Works::UploadFileToGenericFile.call(file, evaluator.content)
26
+ end
27
+ FactoryGirl.create(:vector, user: evaluator.user).vector_files << file
28
+ end
29
+ end
30
+ end
31
+ end