diff --git a/Gemfile b/Gemfile index ea95528ef..d5182a1d1 100644 --- a/Gemfile +++ b/Gemfile @@ -112,6 +112,7 @@ group :development, :test do gem 'coveralls', require: false # coverage analysis gem 'capybara' # integration tests gem 'capybara-email' # integration tests for email + gem 'capybara-screenshot' # for test debugging gem 'poltergeist', '~> 1.6' # for headless JS testing gem 'i18n-tasks' # adds tests for finding missing and unused translations gem 'selenium-webdriver' diff --git a/Gemfile.lock b/Gemfile.lock index 46e9c20df..7d175309f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -84,6 +84,9 @@ GEM capybara-email (2.5.0) capybara (~> 2.4) mail + capybara-screenshot (1.0.13) + capybara (>= 1.0, < 3) + launchy childprocess (0.5.9) ffi (~> 1.0, >= 1.0.11) climate_control (0.0.3) @@ -446,6 +449,7 @@ DEPENDENCIES cancancan (~> 1.9) capybara capybara-email + capybara-screenshot codeclimate-test-reporter coffee-rails (~> 4.1.0) comfortable_mexican_sofa (~> 1.12.0) diff --git a/app/assets/javascripts/append_date.js.coffee b/app/assets/javascripts/append_date.js.coffee index 8fc31de9d..c1be9ce47 100644 --- a/app/assets/javascripts/append_date.js.coffee +++ b/app/assets/javascripts/append_date.js.coffee @@ -10,12 +10,11 @@ jQuery -> href = el.attr('href') - originalText = el.text() - el.click (e) -> e.stopPropagation() e.preventDefault() + originalText = $(this).text() $(this).text('Confirm without date') $(this).bind('click.confirm', (e) -> diff --git a/app/assets/stylesheets/overrides.sass b/app/assets/stylesheets/overrides.sass index d649ecb85..76a074718 100644 --- a/app/assets/stylesheets/overrides.sass +++ b/app/assets/stylesheets/overrides.sass @@ -316,3 +316,8 @@ $state-success-bg: lighten($green, 50%) .red color: red + +.truncate + overflow: hidden + text-overflow: ellipsis + white-space: nowrap diff --git a/app/helpers/harvests_helper.rb b/app/helpers/harvests_helper.rb index 3055db065..b5f695a9d 100644 --- a/app/helpers/harvests_helper.rb +++ b/app/helpers/harvests_helper.rb @@ -41,7 +41,7 @@ module HarvestsHelper if harvest.description.empty? "No description provided." else - truncate(harvest.description, length: 130, separator: ' ', omission: '... ') { link_to "Read more", harvest_path(harvest) } + harvest.description end end diff --git a/app/views/harvests/_thumbnail.html.haml b/app/views/harvests/_thumbnail.html.haml index fbf482079..d21614947 100644 --- a/app/views/harvests/_thumbnail.html.haml +++ b/app/views/harvests/_thumbnail.html.haml @@ -21,5 +21,7 @@ %dd= harvest.harvested_at .panel-footer %dt Description - %dd + %dd.truncate = display_harvest_description(harvest) + = if not harvest.description.empty? + - link_to "Read more", harvest_path(harvest) diff --git a/spec/factories/harvests.rb b/spec/factories/harvests.rb index 71356388a..20a3affcd 100644 --- a/spec/factories/harvests.rb +++ b/spec/factories/harvests.rb @@ -12,4 +12,12 @@ FactoryGirl.define do weight_unit "kg" description "A lovely harvest" end + + trait :long_description do + description "This is a very long description that is so very long that it will need to be cut off" + end + + trait :no_description do + description "" + end end diff --git a/spec/features/gardens_spec.rb b/spec/features/gardens_spec.rb index 90f2f9ed7..26b6ccdc8 100644 --- a/spec/features/gardens_spec.rb +++ b/spec/features/gardens_spec.rb @@ -12,6 +12,7 @@ feature "Planting a crop", js: true do scenario "View gardens" do visit gardens_path + puts page.body expect(page).to have_content "Everyone's gardens" click_link "View your gardens" expect(page).to have_content "#{garden.owner.login_name}'s gardens" diff --git a/spec/features/harvests/browse_harvests_spec.rb b/spec/features/harvests/browse_harvests_spec.rb new file mode 100644 index 000000000..0b4d07f6a --- /dev/null +++ b/spec/features/harvests/browse_harvests_spec.rb @@ -0,0 +1,35 @@ +require 'rails_helper' + +feature "browse harvests" do + let!(:member) { create :member } + + background do + login_as member + end + + feature 'blank optional fields' do + let!(:harvest) { create :harvest, :no_description } + + before (:each) do + visit harvests_path + end + + scenario 'read more' do + expect(page).not_to have_link "Read more" + end + + end + + feature "filled in optional fields" do + let!(:harvest) { create :harvest, :long_description } + + before (:each) do + visit harvests_path + end + + scenario 'read more' do + expect(page).to have_link "Read more" + end + + end +end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index a30142f36..938d2a2a0 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -23,6 +23,8 @@ end require 'capybara' require 'capybara/poltergeist' +require 'capybara/rspec' +require 'capybara-screenshot/rspec' Capybara.javascript_driver = :poltergeist if ENV['GROWSTUFF_CAPYBARA_DRIVER'].present? @@ -32,6 +34,11 @@ if ENV['GROWSTUFF_CAPYBARA_DRIVER'].present? end Capybara.javascript_driver = ENV['GROWSTUFF_CAPYBARA_DRIVER'].to_sym end + +Capybara::Screenshot.register_filename_prefix_formatter(:rspec) do |example| + "screenshot_#{example.description.gsub(' ', '-').gsub(/^.*\/spec\//,'')}" +end + Capybara.app_host = 'http://localhost' Capybara.server_port = 8081