|
|
|
|
@ -332,57 +332,35 @@ RSpec.describe DuplicateLogsController, type: :request do
|
|
|
|
|
context "when the user is a data coordinator" do |
|
|
|
|
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) |
|
|
|
|
expect(response).to have_http_status(:not_found) |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
context "when the user is a provider" do |
|
|
|
|
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 |
|
|
|
|
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 |
|
|
|
|
before do |
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
it "calls the helper method to retrieve duplicates for the current user" do |
|
|
|
|
expect(user).to receive(:duplicate_lettings_logs_sets) |
|
|
|
|
expect(user).to receive(:duplicate_sales_logs_sets) |
|
|
|
|
get duplicate_logs_path |
|
|
|
|
end |
|
|
|
|
# rubocop:enable RSpec/AnyInstance |
|
|
|
|
|
|
|
|
|
describe "viewing the page" do |
|
|
|
|
before do |
|
|
|
|
get duplicate_logs_path(duplicates:) |
|
|
|
|
get duplicate_logs_path |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "has the correct headers" do |
|
|
|
|
@ -391,26 +369,20 @@ RSpec.describe DuplicateLogsController, type: :request do
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
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: "Sales", count: duplicates[:sales].count |
|
|
|
|
expect(page).to have_selector("tbody tr td", text: "Lettings", count: 2) |
|
|
|
|
expect(page).to have_selector("tbody tr td", text: "Sales", count: 1) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "shows the log ids for each set of duplicates" do |
|
|
|
|
id_strings = duplicates.values.flat_map(&:values).map do |id_set| |
|
|
|
|
id_set.map { |id| "Log #{id}" }.join(", ") |
|
|
|
|
end |
|
|
|
|
id_strings.each do |id_string| |
|
|
|
|
expect(page).to have_selector "td", text: id_string |
|
|
|
|
end |
|
|
|
|
expect(page).to have_content("Log 1, Log 2") |
|
|
|
|
expect(page).to have_content("Log 3, Log 4, Log 5") |
|
|
|
|
expect(page).to have_content("Log 11, Log 12") |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
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(id_set.first) |
|
|
|
|
end |
|
|
|
|
duplicates[:sales].each_value do |id_set| |
|
|
|
|
expect(page).to have_link "Review logs", href: sales_log_duplicate_logs_path(id_set.first) |
|
|
|
|
end |
|
|
|
|
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(3)) |
|
|
|
|
expect(page).to have_link("Review logs", href: sales_log_duplicate_logs_path(11)) |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|