diff --git a/app/controllers/scientific_names_controller.rb b/app/controllers/scientific_names_controller.rb index 202c3942c..3911a6618 100644 --- a/app/controllers/scientific_names_controller.rb +++ b/app/controllers/scientific_names_controller.rb @@ -83,7 +83,9 @@ class ScientificNamesController < ApplicationController @scientific_name.destroy respond_to do |format| - format.html { redirect_to @crop } + format.html { + redirect_to @crop, notice: 'Scientific name was successfully deleted.' + } format.json { head :no_content } end end diff --git a/app/views/scientific_names/show.html.haml b/app/views/scientific_names/show.html.haml index 23e3a3c47..a3efe2d6f 100644 --- a/app/views/scientific_names/show.html.haml +++ b/app/views/scientific_names/show.html.haml @@ -5,7 +5,7 @@ = @scientific_name.scientific_name %p %b Crop: - = @scientific_name.crop_id + = link_to @scientific_name.crop, @scientific_name.crop = link_to 'Edit', edit_scientific_name_path(@scientific_name), :class => 'btn btn-default btn-xs' \| diff --git a/spec/features/scientific_name_spec.rb b/spec/features/scientific_name_spec.rb new file mode 100644 index 000000000..1fda79d42 --- /dev/null +++ b/spec/features/scientific_name_spec.rb @@ -0,0 +1,75 @@ +require 'spec_helper' + +feature "Scientific names" do + let!(:zea_mays) { FactoryGirl.create(:zea_mays) } + let(:crop) { zea_mays.crop } + + scenario "Display scientific names on crop page" do + visit crop_path(zea_mays.crop) + expect(page.status_code).to equal 200 + expect(page).to have_content zea_mays.scientific_name + end + + scenario "Index page for scientific names" do + visit scientific_names_path + expect(page.status_code).to equal 200 + expect(page).to have_content zea_mays.scientific_name + end + + context "User is a crop wrangler" do + let!(:crop_wranglers) { FactoryGirl.create_list(:crop_wrangling_member, 3) } + let(:member){crop_wranglers.first} + + before :each do + login_as(member) + end + + scenario "Crop wranglers can edit scientific names" do + visit crop_path(crop) + expect(page.status_code).to equal 200 + expect(page).to have_content "CROP WRANGLER" + expect(page).to have_content zea_mays.scientific_name + expect(page).to have_link "Edit", :href => edit_scientific_name_path(zea_mays) + within('.scientific_names') { click_on "Edit" } + expect(page.status_code).to equal 200 + expect(page).to have_css "option[value='#{crop.id}'][selected=selected]" + fill_in 'Scientific name', with: "Zea mirabila" + click_on "Save" + expect(page).to have_content "Zea mirabila" + expect(page).to have_content 'Scientific name was successfully updated' + end + + scenario "Crop wranglers can delete scientific names" do + visit crop_path(zea_mays.crop) + expect(page).to have_link "Delete", + href: scientific_name_path(zea_mays) + within('.scientific_names') { click_on "Delete" } + expect(page.status_code).to equal 200 + expect(page).to_not have_content zea_mays.scientific_name + expect(page).to have_content 'Scientific name was successfully deleted' + end + + scenario "Crop wranglers can add scientific names" do + visit crop_path(crop) + expect(page).to have_link "Add", + href: new_scientific_name_path(crop_id: crop.id) + within('.scientific_names') { click_on "Add" } + expect(page.status_code).to equal 200 + expect(page).to have_css "option[value='#{crop.id}'][selected=selected]" + fill_in 'Scientific name', with: "Zea mirabila" + click_on "Save" + expect(page.status_code).to equal 200 + expect(page).to have_content "Zea mirabila" + expect(page).to have_content 'Scientific name was successfully created' + end + + scenario "The show-scientific-name page works" do + visit scientific_name_path(zea_mays) + expect(page.status_code).to equal 200 + expect(page).to have_link zea_mays.crop.name, + href: crop_path(zea_mays.crop) + end + + end + +end