From 1fdedf3640bb6eba328ed77a856b931c84f3f81c Mon Sep 17 00:00:00 2001 From: Eliot Jordan Date: Thu, 20 Oct 2016 17:55:36 -0500 Subject: [PATCH] add helper spec --- .rubocop_todo.yml | 1 + app/helpers/index_helper.rb | 4 +- spec/helpers/index_helper_spec.rb | 61 +++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 spec/helpers/index_helper_spec.rb diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 6a7dc83f..eb6aae6a 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -32,6 +32,7 @@ RSpec/MultipleExpectations: # Configuration parameters: MaxNesting. RSpec/NestedGroups: Exclude: + - 'spec/helpers/index_helper_spec.rb' - 'spec/models/iiif_resource_spec.rb' # Offense count: 2 diff --git a/app/helpers/index_helper.rb b/app/helpers/index_helper.rb index a707874c..c65a2e1e 100644 --- a/app/helpers/index_helper.rb +++ b/app/helpers/index_helper.rb @@ -2,9 +2,9 @@ module IndexHelper def render_index_document(document) field = index_presenter(document).label(document_show_link_field(document)) span = [] - if field.length == 1 || !field.is_a?(Array) + if !field.is_a?(Array) span << content_tag(:span, style: 'display: block;', dir: field.dir) do - link_to_document(document, document_show_link_field(document)) + link_to(field, url_for_document(document), document_link_params(document, {})) end else field.each do |value| diff --git a/spec/helpers/index_helper_spec.rb b/spec/helpers/index_helper_spec.rb new file mode 100644 index 00000000..2544b932 --- /dev/null +++ b/spec/helpers/index_helper_spec.rb @@ -0,0 +1,61 @@ +require 'rails_helper' + +describe IndexHelper do + let(:helper) { TestingHelper.new } + let(:index_presenter) { instance_double('RTLIndexPresenter', class: RTLIndexPresenter) } + let(:document) do + { + title: 'title', + alternate_title: 'alternate_title' + } + end + before do + class TestingHelper + include IndexHelper + include ActionView::Helpers::TagHelper + include ActionView::Helpers::UrlHelper + include ActionView::Context + end + end + after do + Object.send(:remove_const, :TestingHelper) + end + + describe '#render_index_document' do + before do + allow(helper).to receive(:index_presenter).and_return(index_presenter) + allow(helper).to receive(:document_show_link_field).and_return(:title) + allow(helper).to receive(:url_for_document).and_return('link') + allow(helper).to receive(:document_link_params).and_return({}) + allow(index_presenter).to receive(:label).and_return(label) + end + + context 'when given a ltr label' do + let(:label) { 'title' } + + it 'returns a single ltr span tag' do + tag = helper.render_index_document(document) + expect(tag).to eq 'title' + end + end + + context 'when given a rtl label' do + let(:label) { 'تضيح المقال' } + + it 'returns a single rtl span tag' do + tag = helper.render_index_document(document) + expect(tag).to eq 'تضيح المقال' + end + end + + context 'when given a multivalued title' do + let(:label) { ['تضيح المقال', 'title'] } + + it 'returns span tags' do + tag = helper.render_index_document(document) + expect(tag).to eq 'تضيح المقال'\ + 'title' + end + end + end +end