Browse Source

added tests

pull/760/head
JG 3 years ago
parent
commit
5ac1ef49a8
  1. 7
      app/controllers/locations_controller.rb
  2. 88
      spec/requests/locations_controller_spec.rb

7
app/controllers/locations_controller.rb

@ -16,12 +16,11 @@ class LocationsController < ApplicationController
end
def create
if valid_date_params?(location_params)
if date_params_missing?(location_params) || valid_date_params?(location_params)
@location = Location.new(location_params)
if @location.save
location_params[:add_another_location] == "Yes" ? redirect_to(new_location_path(id: @scheme.id)) : redirect_to(scheme_check_answers_path(scheme_id: @scheme.id))
else
@location.errors.add(:startdate)
render :new, status: :unprocessable_entity
end
else
@ -58,6 +57,10 @@ private
Date.valid_date?(location_params["startdate(1i)"].to_i, location_params["startdate(2i)"].to_i, location_params["startdate(3i)"].to_i)
end
def date_params_missing?(location_params)
location_params["startdate(1i)"].empty? && location_params["startdate(2i)"].empty? && location_params["startdate(3i)"].empty?
end
def is_integer?(string)
string.to_i.to_s == string
end

88
spec/requests/locations_controller_spec.rb

@ -221,6 +221,50 @@ RSpec.describe LocationsController, type: :request do
expect(page).to have_content(I18n.t("validations.date.invalid_date"))
end
end
context "when invalid time is supplied" do
let(:params) do
{ location: {
name: "Test",
units: "5",
type_of_unit: "Bungalow",
wheelchair_adaptation: "No",
add_another_location: "No",
postcode: "ZZ1 1ZZ",
"startdate(3i)" => "1",
"startdate(2i)" => "1",
"startdate(1i)" => "w",
} }
end
it "displays the new page with an error message" do
expect(response).to have_http_status(:unprocessable_entity)
expect(page).to have_content(I18n.t("validations.date.invalid_date"))
end
end
context "when no startdate is supplied" do
let(:params) do
{ location: {
name: "Test",
units: "5",
type_of_unit: "Bungalow",
wheelchair_adaptation: "No",
add_another_location: "No",
postcode: "ZZ1 1ZZ",
"startdate(3i)" => "",
"startdate(2i)" => "",
"startdate(1i)" => "",
} }
end
it "creates a new location for scheme with valid params and redirects to correct page" do
expect { post "/schemes/#{scheme.id}/locations", params: }.to change(Location, :count).by(1)
follow_redirect!
expect(response).to have_http_status(:ok)
expect(page).to have_content("Check your answers before creating this scheme")
end
end
end
context "when signed in as a support user" do
@ -331,6 +375,50 @@ RSpec.describe LocationsController, type: :request do
expect(page).to have_content(I18n.t("activerecord.errors.models.location.attributes.type_of_unit.blank"))
end
end
context "when invalid time is supplied" do
let(:params) do
{ location: {
name: "Test",
units: "5",
type_of_unit: "Bungalow",
wheelchair_adaptation: "No",
add_another_location: "No",
postcode: "ZZ1 1ZZ",
"startdate(3i)" => "1",
"startdate(2i)" => "1",
"startdate(1i)" => "w",
} }
end
it "displays the new page with an error message" do
expect(response).to have_http_status(:unprocessable_entity)
expect(page).to have_content(I18n.t("validations.date.invalid_date"))
end
end
context "when no startdate is supplied" do
let(:params) do
{ location: {
name: "Test",
units: "5",
type_of_unit: "Bungalow",
wheelchair_adaptation: "No",
add_another_location: "No",
postcode: "ZZ1 1ZZ",
"startdate(3i)" => "",
"startdate(2i)" => "",
"startdate(1i)" => "",
} }
end
it "creates a new location for scheme with valid params and redirects to correct page" do
expect { post "/schemes/#{scheme.id}/locations", params: }.to change(Location, :count).by(1)
follow_redirect!
expect(response).to have_http_status(:ok)
expect(page).to have_content("Check your answers before creating this scheme")
end
end
end
end

Loading…
Cancel
Save