curation_concerns 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/concerns/curation_concerns/single_use_links_controller_behavior.rb +3 -1
- data/app/presenters/curation_concerns/file_set_presenter.rb +7 -1
- data/app/presenters/curation_concerns/single_use_link_presenter.rb +52 -0
- data/app/views/curation_concerns/file_sets/_single_use_link_rows.html.erb +11 -11
- data/app/views/curation_concerns/file_sets/_single_use_links.html.erb +14 -7
- data/app/views/curation_concerns/file_sets/show.html.erb +1 -1
- data/config/locales/curation_concerns.en.yml +21 -0
- data/lib/curation_concerns/version.rb +1 -1
- data/spec/controllers/curation_concerns/single_use_links_controller_spec.rb +5 -0
- data/spec/presenters/curation_concerns/file_set_presenter_spec.rb +5 -5
- data/spec/presenters/curation_concerns/single_use_link_presenter_spec.rb +41 -0
- data/spec/views/curation_concerns/file_sets/show.html.erb_spec.rb +100 -88
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b16c547a6265373a96bc6418d8c3128ffba5753f
|
4
|
+
data.tar.gz: 2ea1d0a6987df768e2c10f0599d230e462631145
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5521d24aee01187feab977e429dcd4db80f0149600c1a38ceddfdef1674d6e1552f27520a622fd5dd862d135a329496a77dc5b086ced5ae10c9116354e6e628
|
7
|
+
data.tar.gz: f3b6ecfb62270214f6b134ecd49d836d14308c8509ba94695a1ede4fdf60df91673c7ac9aae6c141eac5a46a2d70f11ac011f45346c9c10927a84d98a212c083
|
@@ -2,6 +2,8 @@ module CurationConcerns
|
|
2
2
|
module SingleUseLinksControllerBehavior
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
included do
|
5
|
+
class_attribute :show_presenter
|
6
|
+
self.show_presenter = CurationConcerns::SingleUseLinkPresenter
|
5
7
|
before_action :authenticate_user!
|
6
8
|
before_action :authorize_user!
|
7
9
|
# Catch permission errors
|
@@ -26,7 +28,7 @@ module CurationConcerns
|
|
26
28
|
end
|
27
29
|
|
28
30
|
def index
|
29
|
-
links = SingleUseLink.where(itemId: params[:id])
|
31
|
+
links = SingleUseLink.where(itemId: params[:id]).map { |link| show_presenter.new(link) }
|
30
32
|
render partial: 'curation_concerns/file_sets/single_use_link_rows', locals: { single_use_links: links }
|
31
33
|
end
|
32
34
|
|
@@ -35,7 +35,13 @@ module CurationConcerns
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def single_use_links
|
38
|
-
@single_use_links ||= SingleUseLink.where(itemId: id)
|
38
|
+
@single_use_links ||= SingleUseLink.where(itemId: id).map { |link| link_presenter_class.new(link) }
|
39
39
|
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def link_presenter_class
|
44
|
+
CurationConcerns::SingleUseLinkPresenter
|
45
|
+
end
|
40
46
|
end
|
41
47
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module CurationConcerns
|
2
|
+
class SingleUseLinkPresenter
|
3
|
+
include ActionView::Helpers::TranslationHelper
|
4
|
+
|
5
|
+
attr_reader :link
|
6
|
+
|
7
|
+
delegate :downloadKey, :expired?, :to_param, to: :link
|
8
|
+
|
9
|
+
# @param link [SingleUseLink]
|
10
|
+
def initialize(link)
|
11
|
+
@link = link
|
12
|
+
end
|
13
|
+
|
14
|
+
def human_readable_expiration
|
15
|
+
if hours < 1
|
16
|
+
t('curation_concerns.single_use_links.expiration.lesser_time')
|
17
|
+
else
|
18
|
+
t('curation_concerns.single_use_links.expiration.time', value: hours)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def short_key
|
23
|
+
link.downloadKey.first(6)
|
24
|
+
end
|
25
|
+
|
26
|
+
def link_type
|
27
|
+
if download?
|
28
|
+
t('curation_concerns.single_use_links.download.type')
|
29
|
+
else
|
30
|
+
t('curation_concerns.single_use_links.show.type')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def url_helper
|
35
|
+
if download?
|
36
|
+
"download_single_use_link_url"
|
37
|
+
else
|
38
|
+
"show_single_use_link_url"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def download?
|
45
|
+
link.path =~ /downloads/
|
46
|
+
end
|
47
|
+
|
48
|
+
def hours
|
49
|
+
(link.expires - Time.zone.now).to_i / 3600
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -1,18 +1,18 @@
|
|
1
|
-
<% single_use_links.
|
2
|
-
<% type = link.path =~ /downloads/ ? 'Download' : 'Show' %>
|
3
|
-
<% url_helper = link.path =~ /downloads/ ? 'download_single_use_link_url' : 'show_single_use_link_url' %>
|
1
|
+
<% single_use_links.each do |presenter| %>
|
4
2
|
<tr>
|
5
|
-
<td><%=
|
6
|
-
<td><%=
|
7
|
-
<td><%=
|
3
|
+
<td><%= presenter.link_type %></td>
|
4
|
+
<td><%= presenter.downloadKey %></td>
|
5
|
+
<td><%= presenter.human_readable_expiration %></td>
|
8
6
|
<td>
|
9
7
|
<button class="btn btn-xs btn-default copy-single-use-link"
|
10
|
-
data-clipboard-text="<%= curation_concerns.send(url_helper,
|
11
|
-
data-toggle="tooltip" data-placement="bottom"
|
12
|
-
|
8
|
+
data-clipboard-text="<%= curation_concerns.send(presenter.url_helper, presenter.downloadKey) %>"
|
9
|
+
data-toggle="tooltip" data-placement="bottom"
|
10
|
+
title="<%= t('curation_concerns.single_use_links.copy.tooltip') %>">
|
11
|
+
<%= t('curation_concerns.single_use_links.copy.button') %>
|
13
12
|
</button>
|
14
|
-
<%= link_to
|
15
|
-
|
13
|
+
<%= link_to t('curation_concerns.single_use_links.delete'),
|
14
|
+
curation_concerns.delete_single_use_link_path(params[:id], presenter),
|
15
|
+
class: 'btn btn-xs btn-danger delete-single-use-link' %>
|
16
16
|
</td>
|
17
17
|
</tr>
|
18
18
|
<% end %>
|
@@ -1,11 +1,16 @@
|
|
1
1
|
<table class="table table-striped <%= dom_class(presenter) %> single-use-links">
|
2
|
-
<caption class="table-heading"><h2
|
2
|
+
<caption class="table-heading"><h2><%= t('curation_concerns.single_use_links.title') %></h2></caption>
|
3
3
|
<thead>
|
4
|
-
<tr
|
4
|
+
<tr>
|
5
|
+
<th><%= t('curation_concerns.single_use_links.table.link') %></th>
|
6
|
+
<th><%= t('curation_concerns.single_use_links.table.key') %></th>
|
7
|
+
<th><%= t('curation_concerns.single_use_links.table.expires') %></th>
|
8
|
+
<th><%= t('curation_concerns.single_use_links.table.actions') %></th>
|
9
|
+
</tr>
|
5
10
|
</thead>
|
6
11
|
<tbody data-url="<%= curation_concerns.generated_single_use_links_path(presenter) %>">
|
7
12
|
<% if presenter.single_use_links.empty? %>
|
8
|
-
<tr><td
|
13
|
+
<tr><td><%= t('curation_concerns.single_use_links.table.no_links') %></td></tr>
|
9
14
|
<% else %>
|
10
15
|
<%= render 'single_use_link_rows', single_use_links: presenter.single_use_links %>
|
11
16
|
<% end %>
|
@@ -13,8 +18,10 @@
|
|
13
18
|
</table>
|
14
19
|
|
15
20
|
<div class="form_actions">
|
16
|
-
<%= link_to
|
17
|
-
|
18
|
-
|
19
|
-
|
21
|
+
<%= link_to t('curation_concerns.single_use_links.download.generate'),
|
22
|
+
curation_concerns.generate_download_single_use_link_path(presenter),
|
23
|
+
class: 'btn btn-default generate-single-use-link' %>
|
24
|
+
<%= link_to t('curation_concerns.single_use_links.show.generate'),
|
25
|
+
curation_concerns.generate_show_single_use_link_path(presenter),
|
26
|
+
class: 'btn btn-default generate-single-use-link' %>
|
20
27
|
</div>
|
@@ -5,4 +5,4 @@
|
|
5
5
|
<%= media_display @presenter %>
|
6
6
|
<%= render "attributes", presenter: @presenter %>
|
7
7
|
<%= render "show_actions", presenter: @presenter, parent: parent %>
|
8
|
-
<%= render "single_use_links", presenter: @presenter %>
|
8
|
+
<%= render "single_use_links", presenter: @presenter if can? :edit, @presenter.id %>
|
@@ -112,6 +112,27 @@ en:
|
|
112
112
|
restricted:
|
113
113
|
text: "Private"
|
114
114
|
class: "label-danger"
|
115
|
+
single_use_links:
|
116
|
+
title: Single-Use Links
|
117
|
+
table:
|
118
|
+
link: Link
|
119
|
+
key: Key
|
120
|
+
expires: Expires
|
121
|
+
actions: Actions
|
122
|
+
no_links: No links have been generated
|
123
|
+
download:
|
124
|
+
type: Download
|
125
|
+
generate: Generate Download Link
|
126
|
+
show:
|
127
|
+
type: Show
|
128
|
+
generate: Generate Show Link
|
129
|
+
copy:
|
130
|
+
tooltip: Copied!
|
131
|
+
button: Copy to Clipboard
|
132
|
+
delete: Delete
|
133
|
+
expiration:
|
134
|
+
time: "in %{value} hours"
|
135
|
+
lesser_time: in less than one hour
|
115
136
|
blacklight:
|
116
137
|
search:
|
117
138
|
fields:
|
@@ -6,6 +6,11 @@ describe CurationConcerns::SingleUseLinksController, type: :controller do
|
|
6
6
|
let(:user) { create(:user) }
|
7
7
|
let(:file) { create(:file_set, user: user) }
|
8
8
|
|
9
|
+
describe "::show_presenter" do
|
10
|
+
subject { described_class }
|
11
|
+
its(:show_presenter) { is_expected.to eq(CurationConcerns::SingleUseLinkPresenter) }
|
12
|
+
end
|
13
|
+
|
9
14
|
describe "logged in user with edit permission" do
|
10
15
|
let(:hash) { "some-dummy-sha2-hash" }
|
11
16
|
|
@@ -78,10 +78,10 @@ describe CurationConcerns::FileSetPresenter do
|
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
|
-
describe "single_use_links" do
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
81
|
+
describe "#single_use_links" do
|
82
|
+
let!(:show_link) { create(:show_link, itemId: presenter.id) }
|
83
|
+
let!(:download_link) { create(:download_link, itemId: presenter.id) }
|
84
|
+
subject { presenter.single_use_links }
|
85
|
+
it { is_expected.to include(CurationConcerns::SingleUseLinkPresenter) }
|
86
86
|
end
|
87
87
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe CurationConcerns::SingleUseLinkPresenter do
|
4
|
+
subject { described_class.new(link) }
|
5
|
+
|
6
|
+
context "with any kind of link" do
|
7
|
+
let(:link) { create(:download_link) }
|
8
|
+
|
9
|
+
describe "#human_readable_expiration" do
|
10
|
+
context "in more than one hour" do
|
11
|
+
its(:human_readable_expiration) { is_expected.to eq("in 23 hours") }
|
12
|
+
end
|
13
|
+
context "in less than an hour" do
|
14
|
+
before { allow(link).to receive(:expires).and_return(Time.zone.now) }
|
15
|
+
its(:human_readable_expiration) { is_expected.to eq("in less than one hour") }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#short_key" do
|
20
|
+
its(:short_key) { is_expected.to eq(link.downloadKey.first(6)) }
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "delegated methods" do
|
24
|
+
its(:downloadKey) { is_expected.to eq(link.downloadKey) }
|
25
|
+
its(:expired?) { is_expected.to eq(link.expired?) }
|
26
|
+
its(:to_param) { is_expected.to eq(link.to_param) }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "with a download link" do
|
31
|
+
let(:link) { create(:download_link) }
|
32
|
+
its(:link_type) { is_expected.to eq("Download") }
|
33
|
+
its(:url_helper) { is_expected.to eq("download_single_use_link_url") }
|
34
|
+
end
|
35
|
+
|
36
|
+
context "with a show link" do
|
37
|
+
let(:link) { create(:show_link) }
|
38
|
+
its(:link_type) { is_expected.to eq("Show") }
|
39
|
+
its(:url_helper) { is_expected.to eq("show_single_use_link_url") }
|
40
|
+
end
|
41
|
+
end
|
@@ -36,130 +36,142 @@ describe 'curation_concerns/file_sets/show.html.erb', type: :view do
|
|
36
36
|
|
37
37
|
before do
|
38
38
|
view.lookup_context.prefixes.push 'curation_concerns/base'
|
39
|
-
allow(view).to receive(:can?).with(:edit, String).and_return(true)
|
40
39
|
assign(:presenter, presenter)
|
41
40
|
end
|
42
41
|
|
43
|
-
|
44
|
-
before
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
it 'shows the title' do
|
50
|
-
expect(rendered).to have_selector 'h1 > small', text: 'My Title'
|
42
|
+
context "when user does not have edit acces" do
|
43
|
+
before { allow(view).to receive(:can?).with(:edit, String).and_return(false) }
|
44
|
+
|
45
|
+
it "does not show buttons to create links" do
|
46
|
+
expect(rendered).not_to have_link("Generate Download Link")
|
47
|
+
expect(rendered).not_to have_link("Generate Show Link")
|
51
48
|
end
|
52
49
|
end
|
53
50
|
|
54
|
-
|
55
|
-
|
51
|
+
context "when the user has edit access" do
|
52
|
+
before { allow(view).to receive(:can?).with(:edit, String).and_return(true) }
|
53
|
+
|
54
|
+
describe 'title heading' do
|
56
55
|
before do
|
57
|
-
|
58
|
-
|
56
|
+
stub_template 'shared/_brand_bar.html.erb' => 'Brand Bar'
|
57
|
+
stub_template 'shared/_title_bar.html.erb' => 'Title Bar'
|
58
|
+
render template: 'curation_concerns/file_sets/show.html.erb', layout: 'layouts/curation_concerns'
|
59
59
|
end
|
60
|
+
it 'shows the title' do
|
61
|
+
expect(rendered).to have_selector 'h1 > small', text: 'My Title'
|
62
|
+
end
|
63
|
+
end
|
60
64
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
+
describe 'media display' do
|
66
|
+
context 'when config is true' do
|
67
|
+
before do
|
68
|
+
allow(CurationConcerns.config).to receive(:display_media_download_link) { true }
|
69
|
+
render
|
65
70
|
end
|
66
|
-
end
|
67
71
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
+
context 'with an image' do
|
73
|
+
let(:mime_type) { 'image/tiff' }
|
74
|
+
it 'renders the download link' do
|
75
|
+
expect(rendered).to have_link('Download the full-sized image')
|
76
|
+
end
|
72
77
|
end
|
73
|
-
end
|
74
78
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
+
context 'with a PDF' do
|
80
|
+
let(:mime_type) { 'application/pdf' }
|
81
|
+
it 'renders the download link' do
|
82
|
+
expect(rendered).to have_link('Download the full-sized PDF')
|
83
|
+
end
|
79
84
|
end
|
80
|
-
end
|
81
85
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
+
context 'with a word document' do
|
87
|
+
let(:mime_type) { 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }
|
88
|
+
it 'renders the download link' do
|
89
|
+
expect(rendered).to have_link('Download the document')
|
90
|
+
end
|
86
91
|
end
|
87
|
-
end
|
88
|
-
end
|
89
92
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
93
|
+
context 'with anything else' do
|
94
|
+
let(:mime_type) { 'application/binary' }
|
95
|
+
it 'renders the download link' do
|
96
|
+
expect(rendered).to have_link('Download the document')
|
97
|
+
end
|
98
|
+
end
|
94
99
|
end
|
95
100
|
|
96
|
-
context '
|
97
|
-
|
98
|
-
|
99
|
-
|
101
|
+
context 'when config is false' do
|
102
|
+
before do
|
103
|
+
allow(CurationConcerns.config).to receive(:display_media_download_link) { false }
|
104
|
+
render
|
100
105
|
end
|
101
|
-
end
|
102
106
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
+
context 'with an image' do
|
108
|
+
let(:mime_type) { 'image/tiff' }
|
109
|
+
it 'does not render the download link' do
|
110
|
+
expect(rendered).not_to have_link('Download the full-sized image')
|
111
|
+
end
|
107
112
|
end
|
108
|
-
end
|
109
113
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
+
context 'with a PDF' do
|
115
|
+
let(:mime_type) { 'application/pdf' }
|
116
|
+
it 'does not render the download link' do
|
117
|
+
expect(rendered).not_to have_link('Download the full-sized PDF')
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
context 'with a word document' do
|
122
|
+
let(:mime_type) { 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }
|
123
|
+
it 'does not render the download link' do
|
124
|
+
expect(rendered).not_to have_link('Download the document')
|
125
|
+
end
|
114
126
|
end
|
115
|
-
end
|
116
127
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
128
|
+
context 'with anything else' do
|
129
|
+
let(:mime_type) { 'application/binary' }
|
130
|
+
it 'does not render the download link' do
|
131
|
+
expect(rendered).not_to have_link('Download the document')
|
132
|
+
end
|
121
133
|
end
|
122
134
|
end
|
123
135
|
end
|
124
|
-
end
|
125
136
|
|
126
|
-
|
127
|
-
|
137
|
+
describe 'attributes' do
|
138
|
+
before { render }
|
128
139
|
|
129
|
-
|
130
|
-
|
140
|
+
it 'shows the description' do
|
141
|
+
expect(rendered).to have_selector '.attribute.description', text: 'Lorem ipsum'
|
142
|
+
end
|
131
143
|
end
|
132
|
-
end
|
133
144
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
145
|
+
describe 'single use links' do
|
146
|
+
before do
|
147
|
+
allow(presenter).to receive(:single_use_links).and_return(links)
|
148
|
+
controller.params = { id: presenter.id }
|
149
|
+
render
|
150
|
+
end
|
140
151
|
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
152
|
+
context "when links are present" do
|
153
|
+
let(:show_link) { CurationConcerns::SingleUseLinkPresenter.new(create(:show_link)) }
|
154
|
+
let(:download_link) { CurationConcerns::SingleUseLinkPresenter.new(create(:download_link)) }
|
155
|
+
let(:links) { [show_link, download_link] }
|
156
|
+
|
157
|
+
it "renders single use links for the file set" do
|
158
|
+
expect(rendered).to have_selector('td', text: 'Show')
|
159
|
+
expect(rendered).to have_selector('td', text: 'Download')
|
160
|
+
expect(rendered).to have_selector('td', text: show_link.downloadKey)
|
161
|
+
expect(rendered).to have_selector('td', text: "23 hours")
|
162
|
+
expect(rendered).to have_link("Generate Download Link")
|
163
|
+
expect(rendered).to have_link("Generate Show Link")
|
164
|
+
end
|
153
165
|
end
|
154
|
-
end
|
155
166
|
|
156
|
-
|
157
|
-
|
167
|
+
context "when no links are present" do
|
168
|
+
let(:links) { [] }
|
158
169
|
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
170
|
+
it "renders a table without links" do
|
171
|
+
expect(rendered).to have_selector('td', text: 'No links have been generated')
|
172
|
+
expect(rendered).to have_link("Generate Download Link")
|
173
|
+
expect(rendered).to have_link("Generate Show Link")
|
174
|
+
end
|
163
175
|
end
|
164
176
|
end
|
165
177
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: curation_concerns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Zumwalt
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-
|
13
|
+
date: 2016-08-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: hydra-head
|
@@ -797,6 +797,7 @@ files:
|
|
797
797
|
- app/presenters/curation_concerns/permission_badge.rb
|
798
798
|
- app/presenters/curation_concerns/presenter_factory.rb
|
799
799
|
- app/presenters/curation_concerns/presents_attributes.rb
|
800
|
+
- app/presenters/curation_concerns/single_use_link_presenter.rb
|
800
801
|
- app/presenters/curation_concerns/version_list_presenter.rb
|
801
802
|
- app/presenters/curation_concerns/version_presenter.rb
|
802
803
|
- app/presenters/curation_concerns/work_show_presenter.rb
|
@@ -1183,6 +1184,7 @@ files:
|
|
1183
1184
|
- spec/presenters/curation_concerns/file_set_presenter_spec.rb
|
1184
1185
|
- spec/presenters/curation_concerns/permission_badge_spec.rb
|
1185
1186
|
- spec/presenters/curation_concerns/presenter_factory_spec.rb
|
1187
|
+
- spec/presenters/curation_concerns/single_use_link_presenter_spec.rb
|
1186
1188
|
- spec/presenters/curation_concerns/version_list_presenter_spec.rb
|
1187
1189
|
- spec/presenters/curation_concerns/version_presenter_spec.rb
|
1188
1190
|
- spec/presenters/curation_concerns/work_show_presenter_spec.rb
|
@@ -1392,6 +1394,7 @@ test_files:
|
|
1392
1394
|
- spec/presenters/curation_concerns/file_set_presenter_spec.rb
|
1393
1395
|
- spec/presenters/curation_concerns/permission_badge_spec.rb
|
1394
1396
|
- spec/presenters/curation_concerns/presenter_factory_spec.rb
|
1397
|
+
- spec/presenters/curation_concerns/single_use_link_presenter_spec.rb
|
1395
1398
|
- spec/presenters/curation_concerns/version_list_presenter_spec.rb
|
1396
1399
|
- spec/presenters/curation_concerns/version_presenter_spec.rb
|
1397
1400
|
- spec/presenters/curation_concerns/work_show_presenter_spec.rb
|