From 63a452f85c314b00125679111466a0937a8769fb Mon Sep 17 00:00:00 2001 From: Manny Dinssa <44172848+Dinssa@users.noreply.github.com> Date: Wed, 16 Apr 2025 14:37:29 +0100 Subject: [PATCH] Add tests for OrganisationNameChangesController actions --- ...ganisation_name_changes_controller_spec.rb | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 spec/controllers/organisation_name_changes_controller_spec.rb diff --git a/spec/controllers/organisation_name_changes_controller_spec.rb b/spec/controllers/organisation_name_changes_controller_spec.rb new file mode 100644 index 000000000..dbfd6d3f2 --- /dev/null +++ b/spec/controllers/organisation_name_changes_controller_spec.rb @@ -0,0 +1,46 @@ +require "rails_helper" + +RSpec.describe OrganisationNameChangesController, type: :controller do + let(:organisation) { create(:organisation) } + + describe "GET #change_name" do + it "assigns previous name changes" do + create(:organisation_name_change, organisation:, name: "Old Name", startdate: 1.day.ago) + get :change_name, params: { id: organisation.id } + expect(controller.instance_variable_get(:@previous_name_changes)).to eq(organisation.name_changes_with_dates) + end + end + + describe "POST #create" do + let(:params) do + { + organisation_name_change: { + name: "New Name", + startdate: 1.day.from_now, + immediate_change: false, + }, + } + end + + it "creates a new organisation name change with valid params" do + expect { + post :create, params: { id: organisation.id }.merge(params) + }.to change(OrganisationNameChange, :count).by(1) + + expect(response).to redirect_to(organisation_path(organisation)) + expect(flash[:notice]).to eq("Name change scheduled for #{1.day.from_now.to_date.to_formatted_s(:govuk_date)}.") + end + + it "creates an immediate name change when immediate_change is true" do + params[:organisation_name_change][:immediate_change] = true + params[:organisation_name_change].delete(:startdate) + + expect { + post :create, params: { id: organisation.id }.merge(params) + }.to change(OrganisationNameChange, :count).by(1) + + expect(response).to redirect_to(organisation_path(organisation)) + expect(flash[:notice]).to eq("Name change saved successfully.") + end + end +end