-
Notifications
You must be signed in to change notification settings - Fork 27
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adding view and controller for versions. fixes #181
- Loading branch information
1 parent
ec2aa61
commit ffe44fc
Showing
9 changed files
with
190 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
18 changes: 18 additions & 0 deletions
18
app/presenters/curation_concerns/version_list_presenter.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
module CurationConcerns | ||
class VersionListPresenter | ||
def initialize(version_list) | ||
@raw_list = version_list | ||
end | ||
|
||
delegate :each, to: :wrapped_list | ||
|
||
private | ||
|
||
def wrapped_list | ||
@wrapped_list ||= | ||
@raw_list.map { |v| CurationConcerns::VersionPresenter.new(v) } # wrap each item in a presenter | ||
.sort { |a, b| b.version.created <=> a.version.created } # sort list of versions based on creation date | ||
.tap { |l| l.first.try(:current!) } # set the first version to the current version | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
module CurationConcerns | ||
class VersionPresenter | ||
attr_reader :version, :current | ||
|
||
def initialize(version) | ||
@version = version | ||
@current = false | ||
end | ||
|
||
delegate :label, :uri, to: :version | ||
alias_method :current?, :current | ||
|
||
def current! | ||
@current = true | ||
end | ||
|
||
def created | ||
@created ||= version.created.to_time.to_formatted_s(:long_ordinal) | ||
@created | ||
end | ||
|
||
def committer | ||
vc = VersionCommitter.where(version_id: @version.uri) | ||
vc.empty? ? nil : vc.first.committer_login | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<div id="versioning_display" class="tab-pane"> | ||
<h2>Versions</h2> | ||
<div class="well"> | ||
|
||
<%= form_for [main_app, :curation_concerns, curation_concern], html: { multipart: true } do |f| %> | ||
<h3>Restore Previous Version</h3> | ||
<% @version_list.each do |version| %> | ||
<div class="form-group"> | ||
<div class="col-xs-12"> | ||
<label class="radio <%= version.current? ? 'disabled' : '' %>"> | ||
<%= radio_button_tag(:revision, version.label, false, disabled: version.current?, required: 'required') %> | ||
<%= version.current? ? 'Current version:' : 'Restore from' %> | ||
<%= version.created %> [by <%= version.committer %>] | ||
</label> | ||
</div> | ||
</div> | ||
<% end %> | ||
<div id="save_version_note" class="alert hide">You must click "Save Revision" to revert a previous version of this file</div> | ||
<%= f.button '<i class="glyphicon glyphicon-save"></i> Save Revision'.html_safe, type: 'submit', class: 'btn btn-primary', onclick: "confirmation_needed = false;", name: "revert_submit", id: "revert_submit" %> | ||
<% end %> | ||
|
||
</div> <!-- /well --> | ||
</div> <!-- /row --> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<% provide :page_title, curation_concern_page_title(curation_concern) %> | ||
<% provide :page_header do %> | ||
<h2>Manage Your Work</h2> | ||
<% end%> | ||
<%#= curation_concern.to_json %> | ||
<%= render 'versioning' %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
32 changes: 32 additions & 0 deletions
32
spec/presenters/curation_concerns/version_list_presenter_spec.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
require 'spec_helper' | ||
|
||
describe CurationConcerns::VersionListPresenter, :no_clean do | ||
let(:resource_version) do | ||
ActiveFedora::VersionsGraph::ResourceVersion.new.tap do |v| | ||
v.uri = 'http://example.com/version1' | ||
v.label = 'version1' | ||
v.created = '2014-12-09T02:03:18.296Z' | ||
end | ||
end | ||
|
||
let(:resource_version2) do | ||
ActiveFedora::VersionsGraph::ResourceVersion.new.tap do |v| | ||
v.uri = 'http://example.com/version2' | ||
v.label = 'version2' | ||
v.created = '2014-12-19T02:03:18.296Z' | ||
end | ||
end | ||
|
||
subject { described_class.new([resource_version, resource_version2]) } | ||
|
||
describe "#each" do | ||
it "yields version_presenters" do | ||
versions_descending = [] | ||
subject.each do |v| | ||
expect(v).to be_kind_of CurationConcerns::VersionPresenter | ||
versions_descending.push(v.label) | ||
end | ||
expect(versions_descending).to eq ['version2', 'version1'] | ||
end | ||
end | ||
end |
51 changes: 51 additions & 0 deletions
51
spec/presenters/curation_concerns/version_presenter_spec.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
require 'spec_helper' | ||
|
||
describe CurationConcerns::VersionPresenter, :no_clean do | ||
let(:resource_version) do | ||
ActiveFedora::VersionsGraph::ResourceVersion.new.tap do |v| | ||
v.uri = 'http://example.com/version1' | ||
v.label = 'version1' | ||
v.created = '2014-12-09T02:03:18.296Z' | ||
end | ||
end | ||
|
||
let(:presenter) { described_class.new(resource_version) } | ||
|
||
describe "#label" do | ||
subject { presenter.label } | ||
it { is_expected.to eq 'version1' } | ||
end | ||
|
||
describe "#uri" do | ||
subject { presenter.uri } | ||
it { is_expected.to eq 'http://example.com/version1' } | ||
end | ||
|
||
describe "#created" do | ||
before do | ||
# Stub out the local timezone to (+08:00) | ||
t2 = Time.new(2014, 12, 8, 18, 3, 18, 8) | ||
allow_any_instance_of(Time).to receive(:getlocal).and_return(t2) | ||
end | ||
subject { presenter.created } | ||
it { is_expected.to eq "December 8th, 2014 18:03" } | ||
end | ||
|
||
describe "#current?" do | ||
subject { presenter.current? } | ||
it { is_expected.to be false } | ||
|
||
context "when current! is set" do | ||
before { presenter.current! } | ||
it { is_expected.to be true } | ||
end | ||
end | ||
|
||
describe "#committer" do | ||
before do | ||
VersionCommitter.create(version_id: resource_version.uri, committer_login: 'jill') | ||
end | ||
subject { presenter.committer } | ||
it { is_expected.to eq 'jill' } | ||
end | ||
end |