curation_concerns 0.6.0 → 0.7.0

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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.rubocop.yml +6 -0
  4. data/Gemfile +1 -2
  5. data/RELEASING.md +3 -2
  6. data/Rakefile +15 -14
  7. data/VERSION +1 -1
  8. data/app/controllers/concerns/curation_concerns/curation_concern_controller.rb +1 -1
  9. data/app/controllers/concerns/curation_concerns/parent_container.rb +1 -1
  10. data/app/renderers/curation_concerns/attribute_renderer.rb +1 -1
  11. data/curation_concerns.gemspec +2 -0
  12. data/lib/curation_concerns/rails/routes.rb +19 -7
  13. data/lib/curation_concerns/version.rb +1 -1
  14. data/solr/config/_rest_managed.json +3 -0
  15. data/solr/config/admin-extra.html +31 -0
  16. data/solr/config/elevate.xml +36 -0
  17. data/solr/config/mapping-ISOLatin1Accent.txt +246 -0
  18. data/solr/config/protwords.txt +21 -0
  19. data/solr/config/schema.xml +372 -0
  20. data/solr/config/scripts.conf +24 -0
  21. data/solr/config/solrconfig.xml +300 -0
  22. data/solr/config/spellings.txt +2 -0
  23. data/solr/config/stopwords.txt +58 -0
  24. data/solr/config/stopwords_en.txt +58 -0
  25. data/solr/config/synonyms.txt +31 -0
  26. data/solr/config/xslt/example.xsl +132 -0
  27. data/solr/config/xslt/example_atom.xsl +67 -0
  28. data/solr/config/xslt/example_rss.xsl +66 -0
  29. data/solr/config/xslt/luke.xsl +337 -0
  30. data/spec/actors/curation_concerns/work_actor_spec.rb +1 -1
  31. data/spec/controllers/curation_concerns/file_sets_controller_spec.rb +23 -0
  32. data/spec/models/curation_concerns/collection_behavior_spec.rb +2 -0
  33. data/spec/models/file_set_spec.rb +1 -1
  34. data/spec/renderers/curation_concerns/attribute_renderer_spec.rb +12 -0
  35. data/spec/test_app_templates/Gemfile.extra +0 -3
  36. data/spec/views/curation_concerns/base/_attributes.html.erb_spec.rb +1 -1
  37. metadata +48 -6
  38. data/config/jetty.yml +0 -5
  39. data/tasks/jetty.rake +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9e77165da47c309d90805ddb6981da218c262545
4
- data.tar.gz: 5b4967ede0c3c0a0eafc7bb60d4db47950519044
3
+ metadata.gz: 7af44881c5c91d837ca80398c54f3e52fd686b01
4
+ data.tar.gz: d4186500d7ca262837a72912a0e681b83fac149f
5
5
  SHA512:
6
- metadata.gz: 295594240997309f48717675eca0bd6e4104e2e13c468fb9f9cdb67496853a6b2380456281e913a453e0d341fa86407d4769eb6366462ee7795b52f7cbbef048
7
- data.tar.gz: 0a874acf3320fca7cac2ebd597baa353ff0fbfdc5211b32afa24eab97662297713bad2ef749253426f959a16170865292c4b4e59f7fe04771388e99b93710fe2
6
+ metadata.gz: fa316af1763c1a5fd5fe369fd1d88c33b42ff7a5b4f14e8b63191de19862707bc82c3f3f0420c93d0ca9e9c26a9a4406fd400f866559e6201969f1c55dd7a56a
7
+ data.tar.gz: 243f21c6b7cea9a5fa6b18de63a373a7a40461fda1d3551490b1a4c17051dcc112e550e109ef4d55d802dc48dde368db8b0b2279eb4a1594eec4b0cee4eb671b
data/.gitignore CHANGED
@@ -8,7 +8,7 @@ jetty
8
8
  /.ruby-version
9
9
  /.ruby-gemset
10
10
  solr_conf/
11
- spec/internal
12
11
  .internal_test_app
13
12
  .byebug_history
14
13
  spec/mock_upload_directory
14
+ fcrepo4-data
data/.rubocop.yml CHANGED
@@ -21,6 +21,9 @@ Performance/RedundantBlockCall:
21
21
  Exclude:
22
22
  - 'curation_concerns-models/lib/curation_concerns/null_logger.rb'
23
23
 
24
+ Performance/RedundantMerge:
25
+ Enabled: false
26
+
24
27
  Lint/AssignmentInCondition:
25
28
  Exclude:
26
29
  - 'curation_concerns-models/app/services/curation_concerns/persist_derivatives.rb'
@@ -66,6 +69,9 @@ Metrics/ModuleLength:
66
69
  - 'app/helpers/curation_concerns/curation_concerns_helper_behavior.rb'
67
70
  - 'curation_concerns-models/app/models/concerns/curation_concerns/solr_document_behavior.rb'
68
71
 
72
+ Style/ZeroLengthPredicate:
73
+ Enabled: false
74
+
69
75
  Style/BlockDelimiters:
70
76
  Exclude:
71
77
  - 'spec/**/*'
data/Gemfile CHANGED
@@ -15,13 +15,12 @@ group :development, :test do
15
15
  gem 'pry-byebug' unless ENV['CI']
16
16
  end
17
17
 
18
-
19
18
  # BEGIN ENGINE_CART BLOCK
20
19
  # engine_cart: 0.8.0
21
20
  # engine_cart stanza: 0.8.0
22
21
  # the below comes from engine_cart, a gem used to test this Rails engine gem in the context of a Rails app.
23
22
  file = File.expand_path("Gemfile", ENV['ENGINE_CART_DESTINATION'] || ENV['RAILS_ROOT'] || File.expand_path(".internal_test_app", File.dirname(__FILE__)))
24
- if File.exists?(file)
23
+ if File.exist?(file)
25
24
  begin
26
25
  eval_gemfile file
27
26
  rescue Bundler::GemfileError => e
data/RELEASING.md CHANGED
@@ -1,2 +1,3 @@
1
- * Bump version number in VERSION
2
- * Release the gem to rubygems.org: rake all:release
1
+ * Bump version number in `VERSION`
2
+ * Release the gem to rubygems.org: `rake all:release`
3
+ * `git push`
data/Rakefile CHANGED
@@ -1,17 +1,13 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'bundler/setup'
3
3
  require 'rspec/core/rake_task'
4
- require 'jettywrapper'
5
4
  require 'engine_cart/rake_task'
6
5
  require 'rubocop/rake_task'
6
+ require 'solr_wrapper'
7
+ require 'fcrepo_wrapper'
7
8
 
8
9
  Dir.glob('tasks/*.rake').each { |r| import r }
9
10
 
10
- # This makes it possible to run curation_concerns:jetty:config from here.
11
- import 'curation_concerns-models/lib/tasks/curation_concerns-models_tasks.rake'
12
-
13
- Jettywrapper.hydra_jetty_version = 'v8.6.0'
14
-
15
11
  desc 'Run style checker'
16
12
  RuboCop::RakeTask.new(:rubocop) do |task|
17
13
  task.requires << 'rubocop-rspec'
@@ -23,15 +19,20 @@ task spec: :rubocop do
23
19
  RSpec::Core::RakeTask.new(:spec)
24
20
  end
25
21
 
26
- task ci: ['engine_cart:generate', 'jetty:clean', 'jetty:config'] do
27
- puts 'running continuous integration'
28
- jetty_params = Jettywrapper.load_config
29
- jetty_params[:startup_wait] = 90
30
-
31
- error = Jettywrapper.wrap(jetty_params) do
32
- Rake::Task['spec'].invoke
22
+ desc 'Spin up Solr & Fedora and run the test suite'
23
+ task ci: ['engine_cart:generate'] do
24
+ # TODO: set port to nil (random port)
25
+ solr_params = { port: '8985', verbose: true, managed: true }
26
+ fcrepo_params = { port: '8986', verbose: true, managed: true }
27
+ SolrWrapper.wrap(solr_params) do |solr|
28
+ ENV['SOLR_TEST_PORT'] = solr.port
29
+ solr.with_collection(name: 'hydra-test', dir: File.join(File.expand_path('.', File.dirname(__FILE__)), 'solr', 'config')) do
30
+ FcrepoWrapper.wrap(fcrepo_params) do |fcrepo|
31
+ ENV['FCREPO_TEST_PORT'] = fcrepo.port
32
+ Rake::Task['spec'].invoke
33
+ end
34
+ end
33
35
  end
34
- fail "test failures: #{error}" if error
35
36
  end
36
37
 
37
38
  task clean: 'engine_cart:clean'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.7.0
@@ -4,7 +4,7 @@ module CurationConcerns::CurationConcernController
4
4
  include Blacklight::AccessControls::Catalog
5
5
 
6
6
  included do
7
- copy_blacklight_config_from(CatalogController)
7
+ copy_blacklight_config_from(::CatalogController)
8
8
  include CurationConcerns::ThemedLayoutController
9
9
  with_themed_layout '1_column'
10
10
  helper CurationConcerns::AbilityHelper
@@ -22,7 +22,7 @@ module CurationConcerns::ParentContainer
22
22
  end
23
23
 
24
24
  def parent_id
25
- @parent_id ||= new_or_create? ? params[:parent_id] : curation_concern.generic_works.in_objects.first.id
25
+ @parent_id ||= new_or_create? ? params[:parent_id] : lookup_parent_from_child.id
26
26
  end
27
27
 
28
28
  protected
@@ -70,7 +70,7 @@ module CurationConcerns
70
70
  if options[:catalog_search_link]
71
71
  link_to(ERB::Util.h(value), search_path(value))
72
72
  else
73
- auto_link(value)
73
+ auto_link(ERB::Util.h(value))
74
74
  end
75
75
  end
76
76
 
@@ -26,6 +26,8 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency 'blacklight_advanced_search', '~> 6.0'
27
27
  spec.add_dependency 'rails_autolink'
28
28
 
29
+ spec.add_development_dependency 'solr_wrapper', '~> 0.4'
30
+ spec.add_development_dependency 'fcrepo_wrapper', '~> 0.1'
29
31
  spec.add_development_dependency "devise", "~> 3.0"
30
32
  spec.add_development_dependency "bundler", "~> 1.6"
31
33
  spec.add_development_dependency "rake"
@@ -1,12 +1,17 @@
1
1
  module ActionDispatch::Routing
2
2
  class Mapper
3
- def curation_concerns_basic_routes
3
+ # @yield If a block is passed it is yielded for each curation_concern
4
+ # @example
5
+ # curation_concerns_basic_routes do
6
+ # concerns :exportable
7
+ # end
8
+ def curation_concerns_basic_routes(&block)
4
9
  resources :downloads, only: :show
5
10
  resources :upload_sets, only: [:edit, :update]
6
11
 
7
12
  namespace :curation_concerns, path: :concern do
8
- CurationConcerns.config.registered_curation_concern_types.map(&:tableize).each do |curation_concern_name|
9
- namespaced_resources curation_concern_name, except: [:index]
13
+ concerns_to_route.each do |curation_concern_name|
14
+ namespaced_resources curation_concern_name, except: [:index], &block
10
15
  end
11
16
 
12
17
  resources :permissions, only: [] do
@@ -63,20 +68,27 @@ module ActionDispatch::Routing
63
68
  ROUTE_OPTIONS = { 'curation_concerns' => { path: :concern } }.freeze
64
69
 
65
70
  # Namespaces routes appropriately
66
- # @example route_namespaced_target("curation_concerns/generic_work") is equivalent to
71
+ # @example namespaced_resources("curation_concerns/generic_work") is equivalent to
67
72
  # namespace "curation_concerns", path: :concern do
68
73
  # resources "generic_work", except: [:index]
69
74
  # end
70
- def namespaced_resources(target, opts = {})
75
+ def namespaced_resources(target, opts = {}, &block)
71
76
  if target.include?('/')
72
77
  the_namespace = target[0..target.index('/') - 1]
73
78
  new_target = target[target.index('/') + 1..-1]
74
79
  namespace the_namespace, ROUTE_OPTIONS.fetch(the_namespace, nil) do
75
- namespaced_resources(new_target, opts)
80
+ namespaced_resources(new_target, opts, &block)
76
81
  end
77
82
  else
78
- resources target, opts
83
+ resources target, opts do
84
+ yield if block_given?
85
+ end
79
86
  end
80
87
  end
88
+
89
+ # @return [Array<String>] the list of works to build routes for
90
+ def concerns_to_route
91
+ CurationConcerns.config.registered_curation_concern_types.map(&:tableize)
92
+ end
81
93
  end
82
94
  end
@@ -1,3 +1,3 @@
1
1
  module CurationConcerns
2
- VERSION = "0.6.0".freeze
2
+ VERSION = "0.7.0".freeze
3
3
  end
@@ -0,0 +1,3 @@
1
+ {
2
+ "initArgs":{},
3
+ "managedList":[]}
@@ -0,0 +1,31 @@
1
+ <!--
2
+ Licensed to the Apache Software Foundation (ASF) under one or more
3
+ contributor license agreements. See the NOTICE file distributed with
4
+ this work for additional information regarding copyright ownership.
5
+ The ASF licenses this file to You under the Apache License, Version 2.0
6
+ (the "License"); you may not use this file except in compliance with
7
+ the License. You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+ -->
17
+
18
+ <!-- The content of this page will be statically included into the top
19
+ of the admin page. Uncomment this as an example to see there the content
20
+ will show up.
21
+
22
+ <hr>
23
+ <i>This line will appear before the first table</i>
24
+ <tr>
25
+ <td colspan="2">
26
+ This row will be appended to the end of the first table
27
+ </td>
28
+ </tr>
29
+ <hr>
30
+
31
+ -->
@@ -0,0 +1,36 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!--
3
+ Licensed to the Apache Software Foundation (ASF) under one or more
4
+ contributor license agreements. See the NOTICE file distributed with
5
+ this work for additional information regarding copyright ownership.
6
+ The ASF licenses this file to You under the Apache License, Version 2.0
7
+ (the "License"); you may not use this file except in compliance with
8
+ the License. You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ -->
18
+
19
+ <!-- If this file is found in the config directory, it will only be
20
+ loaded once at startup. If it is found in Solr's data
21
+ directory, it will be re-loaded every commit.
22
+ -->
23
+
24
+ <elevate>
25
+ <query text="foo bar">
26
+ <doc id="1" />
27
+ <doc id="2" />
28
+ <doc id="3" />
29
+ </query>
30
+
31
+ <query text="ipod">
32
+ <doc id="MA147LL/A" /> <!-- put the actual ipod at the top -->
33
+ <doc id="IW-02" exclude="true" /> <!-- exclude this cable -->
34
+ </query>
35
+
36
+ </elevate>
@@ -0,0 +1,246 @@
1
+ # The ASF licenses this file to You under the Apache License, Version 2.0
2
+ # (the "License"); you may not use this file except in compliance with
3
+ # the License. You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.
12
+
13
+ # Syntax:
14
+ # "source" => "target"
15
+ # "source".length() > 0 (source cannot be empty.)
16
+ # "target".length() >= 0 (target can be empty.)
17
+
18
+ # example:
19
+ # "??" => "A"
20
+ # "\u00C0" => "A"
21
+ # "\u00C0" => "\u0041"
22
+ # "??" => "ss"
23
+ # "\t" => " "
24
+ # "\n" => ""
25
+
26
+ # ?? => A
27
+ "\u00C0" => "A"
28
+
29
+ # ?? => A
30
+ "\u00C1" => "A"
31
+
32
+ # ?? => A
33
+ "\u00C2" => "A"
34
+
35
+ # ?? => A
36
+ "\u00C3" => "A"
37
+
38
+ # ?? => A
39
+ "\u00C4" => "A"
40
+
41
+ # ?? => A
42
+ "\u00C5" => "A"
43
+
44
+ # ?? => AE
45
+ "\u00C6" => "AE"
46
+
47
+ # ?? => C
48
+ "\u00C7" => "C"
49
+
50
+ # ?? => E
51
+ "\u00C8" => "E"
52
+
53
+ # ?? => E
54
+ "\u00C9" => "E"
55
+
56
+ # ?? => E
57
+ "\u00CA" => "E"
58
+
59
+ # ?? => E
60
+ "\u00CB" => "E"
61
+
62
+ # ?? => I
63
+ "\u00CC" => "I"
64
+
65
+ # ?? => I
66
+ "\u00CD" => "I"
67
+
68
+ # ?? => I
69
+ "\u00CE" => "I"
70
+
71
+ # ?? => I
72
+ "\u00CF" => "I"
73
+
74
+ # ?? => IJ
75
+ "\u0132" => "IJ"
76
+
77
+ # ?? => D
78
+ "\u00D0" => "D"
79
+
80
+ # ?? => N
81
+ "\u00D1" => "N"
82
+
83
+ # ?? => O
84
+ "\u00D2" => "O"
85
+
86
+ # ?? => O
87
+ "\u00D3" => "O"
88
+
89
+ # ?? => O
90
+ "\u00D4" => "O"
91
+
92
+ # ?? => O
93
+ "\u00D5" => "O"
94
+
95
+ # ?? => O
96
+ "\u00D6" => "O"
97
+
98
+ # ?? => O
99
+ "\u00D8" => "O"
100
+
101
+ # ?? => OE
102
+ "\u0152" => "OE"
103
+
104
+ # ??
105
+ "\u00DE" => "TH"
106
+
107
+ # ?? => U
108
+ "\u00D9" => "U"
109
+
110
+ # ?? => U
111
+ "\u00DA" => "U"
112
+
113
+ # ?? => U
114
+ "\u00DB" => "U"
115
+
116
+ # ?? => U
117
+ "\u00DC" => "U"
118
+
119
+ # ?? => Y
120
+ "\u00DD" => "Y"
121
+
122
+ # ?? => Y
123
+ "\u0178" => "Y"
124
+
125
+ # ?? => a
126
+ "\u00E0" => "a"
127
+
128
+ # ?? => a
129
+ "\u00E1" => "a"
130
+
131
+ # ?? => a
132
+ "\u00E2" => "a"
133
+
134
+ # ?? => a
135
+ "\u00E3" => "a"
136
+
137
+ # ?? => a
138
+ "\u00E4" => "a"
139
+
140
+ # ?? => a
141
+ "\u00E5" => "a"
142
+
143
+ # ?? => ae
144
+ "\u00E6" => "ae"
145
+
146
+ # ?? => c
147
+ "\u00E7" => "c"
148
+
149
+ # ?? => e
150
+ "\u00E8" => "e"
151
+
152
+ # ?? => e
153
+ "\u00E9" => "e"
154
+
155
+ # ?? => e
156
+ "\u00EA" => "e"
157
+
158
+ # ?? => e
159
+ "\u00EB" => "e"
160
+
161
+ # ?? => i
162
+ "\u00EC" => "i"
163
+
164
+ # ?? => i
165
+ "\u00ED" => "i"
166
+
167
+ # ?? => i
168
+ "\u00EE" => "i"
169
+
170
+ # ?? => i
171
+ "\u00EF" => "i"
172
+
173
+ # ?? => ij
174
+ "\u0133" => "ij"
175
+
176
+ # ?? => d
177
+ "\u00F0" => "d"
178
+
179
+ # ?? => n
180
+ "\u00F1" => "n"
181
+
182
+ # ?? => o
183
+ "\u00F2" => "o"
184
+
185
+ # ?? => o
186
+ "\u00F3" => "o"
187
+
188
+ # ?? => o
189
+ "\u00F4" => "o"
190
+
191
+ # ?? => o
192
+ "\u00F5" => "o"
193
+
194
+ # ?? => o
195
+ "\u00F6" => "o"
196
+
197
+ # ?? => o
198
+ "\u00F8" => "o"
199
+
200
+ # ?? => oe
201
+ "\u0153" => "oe"
202
+
203
+ # ?? => ss
204
+ "\u00DF" => "ss"
205
+
206
+ # ?? => th
207
+ "\u00FE" => "th"
208
+
209
+ # ?? => u
210
+ "\u00F9" => "u"
211
+
212
+ # ?? => u
213
+ "\u00FA" => "u"
214
+
215
+ # ?? => u
216
+ "\u00FB" => "u"
217
+
218
+ # ?? => u
219
+ "\u00FC" => "u"
220
+
221
+ # ?? => y
222
+ "\u00FD" => "y"
223
+
224
+ # ?? => y
225
+ "\u00FF" => "y"
226
+
227
+ # ??? => ff
228
+ "\uFB00" => "ff"
229
+
230
+ # ??? => fi
231
+ "\uFB01" => "fi"
232
+
233
+ # ??? => fl
234
+ "\uFB02" => "fl"
235
+
236
+ # ??? => ffi
237
+ "\uFB03" => "ffi"
238
+
239
+ # ??? => ffl
240
+ "\uFB04" => "ffl"
241
+
242
+ # ??? => ft
243
+ "\uFB05" => "ft"
244
+
245
+ # ??? => st
246
+ "\uFB06" => "st"
@@ -0,0 +1,21 @@
1
+ # The ASF licenses this file to You under the Apache License, Version 2.0
2
+ # (the "License"); you may not use this file except in compliance with
3
+ # the License. You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.
12
+
13
+ #-----------------------------------------------------------------------
14
+ # Use a protected word file to protect against the stemmer reducing two
15
+ # unrelated words to the same base word.
16
+
17
+ # Some non-words that normally won't be encountered,
18
+ # just to test that they won't be stemmed.
19
+ dontstems
20
+ zwhacky
21
+