Browse Source

Update controller specs

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

76
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 before do
context "when duplicates are not provided in the params" do allow(user).to receive(:duplicate_lettings_logs_sets).and_return([[1, 2], [3, 4, 5]])
before do allow(user).to receive(:duplicate_sales_logs_sets).and_return([[11, 12]])
allow_any_instance_of(DuplicateLogsHelper).to receive(:duplicates_for_user).and_return duplicates
end
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)
get duplicate_logs_path
end
end end
context "when duplicates are provided in the params" do it "calls the helper method to retrieve duplicates for the current user" do
it "does not call the helper method" do expect(user).to receive(:duplicate_lettings_logs_sets)
expect_any_instance_of(DuplicateLogsHelper).not_to receive :duplicates_for_user expect(user).to receive(:duplicate_sales_logs_sets)
get duplicate_logs_path(duplicates:) get duplicate_logs_path
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 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