Browse Source

Update controller specs

pull/1776/head
Kat 3 years ago
parent
commit
79412c1ada
  1. 72
      spec/requests/duplicate_logs_controller_spec.rb

72
spec/requests/duplicate_logs_controller_spec.rb

@ -332,57 +332,35 @@ RSpec.describe DuplicateLogsController, type: :request do
context "when the user is a data coordinator" do context "when the user is a data coordinator" do
let(:user) { create(:user, :data_coordinator) } let(:user) { create(:user, :data_coordinator) }
it "renders not found" do before do
allow(user.organisation).to receive(:duplicate_lettings_logs_sets).and_return([[1, 2], [3, 4, 5]])
allow(user.organisation).to receive(:duplicate_sales_logs_sets).and_return([[11, 12]])
end
it "gets organisation duplicates" do
expect(user.organisation).to receive(:duplicate_lettings_logs_sets)
expect(user.organisation).to receive(:duplicate_sales_logs_sets)
get duplicate_logs_path(organisation_id: user.organisation.id) get duplicate_logs_path(organisation_id: user.organisation.id)
expect(response).to have_http_status(:not_found)
end end
end end
context "when the user is a provider" do context "when the user is a provider" do
let(:user) { create(:user) } let(:user) { create(:user) }
let(:duplicates) do
{
lettings: {
"0" => [1, 2],
"1" => [3, 4, 5],
},
sales: {
"0" => [11, 12],
},
}
end
# rubocop:disable RSpec/AnyInstance
context "when duplicates are not provided in the params" do
before do before do
allow_any_instance_of(DuplicateLogsHelper).to receive(:duplicates_for_user).and_return duplicates allow(user).to receive(:duplicate_lettings_logs_sets).and_return([[1, 2], [3, 4, 5]])
allow(user).to receive(:duplicate_sales_logs_sets).and_return([[11, 12]])
end end
it "calls the helper method to retrieve duplicates for the current user" do it "calls the helper method to retrieve duplicates for the current user" do
expect_any_instance_of(DuplicateLogsHelper).to receive(:duplicates_for_user).with(user) expect(user).to receive(:duplicate_lettings_logs_sets)
expect(user).to receive(:duplicate_sales_logs_sets)
get duplicate_logs_path get duplicate_logs_path
end end
end
context "when duplicates are provided in the params" do
it "does not call the helper method" do
expect_any_instance_of(DuplicateLogsHelper).not_to receive :duplicates_for_user
get duplicate_logs_path(duplicates:)
end
context "and either lettings or sales is not present" do
let(:duplicates) { { lettings: { "0" => [1, 2] } } }
it "does not throw an error" do
expect { get duplicate_logs_path(duplicates:) }.not_to raise_error
end
end
end
# rubocop:enable RSpec/AnyInstance
describe "viewing the page" do describe "viewing the page" do
before do before do
get duplicate_logs_path(duplicates:) get duplicate_logs_path
end end
it "has the correct headers" do it "has the correct headers" do
@ -391,26 +369,20 @@ RSpec.describe DuplicateLogsController, type: :request do
end end
it "has the correct number of rows for each log type" do it "has the correct number of rows for each log type" do
expect(page).to have_selector "tbody tr td", text: "Lettings", count: duplicates[:lettings].count expect(page).to have_selector("tbody tr td", text: "Lettings", count: 2)
expect(page).to have_selector "tbody tr td", text: "Sales", count: duplicates[:sales].count expect(page).to have_selector("tbody tr td", text: "Sales", count: 1)
end end
it "shows the log ids for each set of duplicates" do it "shows the log ids for each set of duplicates" do
id_strings = duplicates.values.flat_map(&:values).map do |id_set| expect(page).to have_content("Log 1, Log 2")
id_set.map { |id| "Log #{id}" }.join(", ") expect(page).to have_content("Log 3, Log 4, Log 5")
end expect(page).to have_content("Log 11, Log 12")
id_strings.each do |id_string|
expect(page).to have_selector "td", text: id_string
end
end end
it "shows links for each set of duplciates" do it "shows links for each set of duplciates" do
duplicates[:lettings].each_value do |id_set| expect(page).to have_link("Review logs", href: lettings_log_duplicate_logs_path(1))
expect(page).to have_link "Review logs", href: lettings_log_duplicate_logs_path(id_set.first) expect(page).to have_link("Review logs", href: lettings_log_duplicate_logs_path(3))
end expect(page).to have_link("Review logs", href: sales_log_duplicate_logs_path(11))
duplicates[:sales].each_value do |id_set|
expect(page).to have_link "Review logs", href: sales_log_duplicate_logs_path(id_set.first)
end
end end
end end
end end

Loading…
Cancel
Save