Skip to content

Commit

Permalink
Merge 4c55e17 into 1bfcb2a
Browse files Browse the repository at this point in the history
  • Loading branch information
rotated8 committed Jun 2, 2017
2 parents 1bfcb2a + 4c55e17 commit 68cb4b2
Show file tree
Hide file tree
Showing 18 changed files with 116 additions and 2 deletions.
4 changes: 4 additions & 0 deletions app/controllers/catalog_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ def self.modified_field
config.add_facet_field solr_name("degree", :facetable), label: "Degree", limit: 5
config.add_facet_field solr_name("department", :facetable), label: "Department", limit: 5
config.add_facet_field solr_name("school", :facetable), label: "School", limit: 5
config.add_facet_field solr_name("research_field", :facetable), label: "Research Field", limit: 5, helper_method: :research_field_facet
# The generic_type isn't displayed on the facet list
# It's used to give a label to the filter that comes from the user profile
config.add_facet_field solr_name("generic_type", :facetable), label: "Type", if: false
Expand Down Expand Up @@ -90,6 +91,7 @@ def self.modified_field
config.add_index_field solr_name("school", :stored_searchable), label: "School"
config.add_index_field solr_name("partnering_agency", :stored_searchable), label: "Partnering Agency"
config.add_index_field solr_name("submitting_type", :stored_searchable), label: "I am submitting"
config.add_index_field solr_name("research_field", :stored_searchable), label: "Research Field", helper_method: :research_field_label

# solr fields to be displayed in the show (single result) view
# The ordering of the field names is the order of the display
Expand All @@ -114,6 +116,8 @@ def self.modified_field
config.add_show_field solr_name("school", :stored_searchable), label: "School"
config.add_show_field solr_name("partnering_agency", :stored_searchable), label: "Partnering Agency"
config.add_show_field solr_name("submitting_type", :stored_searchable), label: "I am submitting"
config.add_show_field solr_name("research_field", :stored_searchable), label: "Research Field"

# "fielded" search configuration. Used by pulldown among other places.
# For supported keys in hash, see rdoc for Blacklight::SearchFields
#
Expand Down
1 change: 1 addition & 0 deletions app/forms/hyrax/etd_form.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ class EtdForm < Hyrax::Forms::WorkForm
self.terms += [:degree]
self.terms += [:partnering_agency]
self.terms += [:submitting_type]
self.terms += [:research_field]
self.single_valued_fields = [:title, :creator, :submitting_type]
end
end
8 changes: 8 additions & 0 deletions app/helpers/application_helper.rb
Original file line number Diff line number Diff line change
@@ -1,2 +1,10 @@
module ApplicationHelper
def research_field_label(options = {})
research_field_service = ResearchFieldService.new
options[:value].map { |field_code| html_escape(research_field_service.label(field_code)) }.to_sentence
end

def research_field_facet(field_code)
ResearchFieldService.new.label(field_code)
end
end
3 changes: 3 additions & 0 deletions app/models/etd.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,7 @@ def set_defaults
property :submitting_type, predicate: "http://www.europeana.eu/schemas/edm/hasType" do |index|
index.as :stored_searchable
end
property :research_field, predicate: ::RDF::Vocab::DC.subject do |index|
index.as :stored_searchable, :facetable
end
end
4 changes: 4 additions & 0 deletions app/models/solr_document.rb
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,8 @@ def primary
def submitting_type
self[Solrizer.solr_name('submitting_type')]
end

def research_field
self[Solrizer.solr_name('research_field')]
end
end
2 changes: 1 addition & 1 deletion app/presenters/etd_presenter.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
class EtdPresenter < Hyrax::WorkShowPresenter
delegate :degree, :department, :school, :partnering_agency, :submitting_type, to: :solr_document
delegate :degree, :department, :school, :partnering_agency, :submitting_type, :research_field, to: :solr_document
end
11 changes: 11 additions & 0 deletions app/renderers/research_field_attribute_renderer.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class ResearchFieldAttributeRenderer < Hyrax::Renderers::AttributeRenderer
def attribute_value_to_html(value)
research_field_label = ResearchFieldService.new.label(value)
# Adapted from Hyrax's AttributeRenderer
if microdata_value_attributes(field).present?
"<span#{html_attributes(microdata_value_attributes(field))}>#{li_value(research_field_label)}</span>"
else
li_value(research_field_label)
end
end
end
6 changes: 6 additions & 0 deletions app/services/research_field_service.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# services/research_field_service.rb
class ResearchFieldService < Hyrax::QaSelectService
def initialize
super('research_fields')
end
end
1 change: 1 addition & 0 deletions app/views/hyrax/base/_attribute_rows.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@
<%= presenter.attribute_to_html(:department) %>
<%= presenter.attribute_to_html(:partnering_agency) %>
<%= presenter.attribute_to_html(:submitting_type) %>
<%= presenter.attribute_to_html(:research_field, render_as: :research_field) %>
6 changes: 6 additions & 0 deletions app/views/records/edit_fields/_research_field.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<% research_field_service = ResearchFieldService.new %>
<%= f.input :research_field, as: :multi_value_select,
collection: research_field_service.select_all_options,
input_html: { class: 'form-control' },
include_blank: true
%>
21 changes: 21 additions & 0 deletions config/authorities/research_fields.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
terms:
- id: '5670'
term: 'Dentistry'
- id: '566'
term: 'Health Sciences'
- id: '992'
term: 'Oncology'
- id: '383'
term: 'Toxicology'
- id: '213'
term: 'Psychology'
- id: '576'
term: 'Surgery'
- id: '496'
term: 'Alternative Medicine'
- id: '382'
term: 'Physical Therapy'
- id: '442'
term: 'Adolescent Development'
- id: '986'
term: "Women's Health"
1 change: 1 addition & 0 deletions spec/factories/etd.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
school ['Emory College of Arts and Sciences']
partnering_agency ["Does not apply (no collaborating organization)"]
submitting_type ["Honors Thesis"]
research_field ['992']
visibility Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
end
end
4 changes: 4 additions & 0 deletions spec/features/search_etd_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

context 'a logged in user' do
let(:user) { create :user }
let(:research_field_label) { ResearchFieldService.new.label(etd.research_field.first) }

before do
login_as user
Expand All @@ -25,6 +26,7 @@
expect(page).to have_content etd.school.first
expect(page).to have_content etd.partnering_agency.first
expect(page).to have_content etd.submitting_type.first
expect(page).to have_content research_field_label
# Now look for degree in the facets on the left
expect(page).to have_xpath("//h3", text: "Creator")
expect(page).to have_link(etd.creator.first, class: "facet_select")
Expand All @@ -34,6 +36,8 @@
expect(page).to have_link(etd.department.first, class: "facet_select")
expect(page).to have_xpath("//h3", text: "School")
expect(page).to have_link(etd.school.first, class: "facet_select")
expect(page).to have_xpath("//h3", text: "Research Field")
expect(page).to have_link(research_field_label, class: "facet_select")
end
end
end
2 changes: 2 additions & 0 deletions spec/features/show_etd_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

context 'a logged in user' do
let(:user) { create :user }
let(:research_field_label) { ResearchFieldService.new.label(etd.research_field.first) }

before do
login_as user
Expand All @@ -21,6 +22,7 @@
expect(page).to have_content etd.school.first
expect(page).to have_content etd.partnering_agency.first
expect(page).to have_content etd.submitting_type.first
expect(page).to have_content research_field_label
end
end
end
1 change: 1 addition & 0 deletions spec/forms/hyrax/etd_form_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
its(:terms) { is_expected.to include(:school) }
its(:terms) { is_expected.to include(:degree) }
its(:terms) { is_expected.to include(:partnering_agency) }
its(:terms) { is_expected.to include(:research_field) }
its(:single_valued_fields) { is_expected.to include(:submitting_type) }
end
end
18 changes: 18 additions & 0 deletions spec/models/etd_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,24 @@
end
end

describe "#research_field" do
subject { described_class.new }
let(:research_field) { ['383'] }

context "with a new ETD" do
its(:research_field) { is_expected.to be_empty }
end

context "with an existing ETD that has a research field defined" do
subject do
described_class.create.tap do |etd|
etd.research_field = research_field
end
end
its(:research_field) { is_expected.to eq(research_field) }
end
end

# An ETD should always have a hidden metadata field saying that the degree_granting_institution is Emory
describe "#degree_granting_institution" do
subject { described_class.new }
Expand Down
5 changes: 4 additions & 1 deletion spec/presenters/etd_presenter_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@
let(:school) { ['Emory College of Arts and Sciences'] }
let(:partnering_agency) { ["Does not apply (no collaborating organization)"] }
let(:submitting_type) { ["Honors Thesis"] }
let(:research_field) { ['383'] }
let(:visibility) { Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC }
let :etd do
Etd.new(title: title, creator: creator, keyword: keyword, degree: degree, department: department,
school: school, partnering_agency: partnering_agency, submitting_type: submitting_type, visibility: visibility)
school: school, partnering_agency: partnering_agency, submitting_type: submitting_type,
research_field: research_field, visibility: visibility)
end

let(:ability) { Ability.new(user) }
Expand All @@ -31,4 +33,5 @@
it { is_expected.to delegate_method(:school).to(:solr_document) }
it { is_expected.to delegate_method(:partnering_agency).to(:solr_document) }
it { is_expected.to delegate_method(:submitting_type).to(:solr_document) }
it { is_expected.to delegate_method(:research_field).to(:solr_document) }
end
20 changes: 20 additions & 0 deletions spec/services/research_field_service_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
require 'spec_helper'

describe ResearchFieldService do
let(:research_field_service) { described_class.new }

describe "select_all_options" do
subject(:research_field_options) { research_field_service.select_all_options }

it "has a select list" do
expect(research_field_options.first).to eq ['Dentistry', '5670']
expect(research_field_options.size).to eq 10
end
end

describe "label" do
subject { research_field_service.label('383') }

it { is_expected.to eq 'Toxicology' }
end
end

0 comments on commit 68cb4b2

Please sign in to comment.