You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
3.0 KiB
89 lines
3.0 KiB
require "rails_helper" |
|
|
|
RSpec.describe DuplicateLogReference, type: :model do |
|
context "when adding a new duplicate log" do |
|
context "and duplicate_log_reference_id is not given" do |
|
let(:sales_log) { create(:sales_log) } |
|
|
|
it "generates a new random duplicate_log_reference_id" do |
|
duplicate_log = described_class.create!(log_id: sales_log.id, log_type: "SalesLog") |
|
expect(duplicate_log.duplicate_log_reference_id).to be_a(Integer) |
|
end |
|
end |
|
|
|
context "and duplicate_log_reference_id is given" do |
|
let(:sales_log) { create(:sales_log) } |
|
|
|
it "adds correct duplicate_log_reference_id" do |
|
duplicate_log = described_class.create!(log_id: sales_log.id, log_type: "SalesLog", duplicate_log_reference_id: 123_456) |
|
expect(duplicate_log.duplicate_log_reference_id).to eq(123_456) |
|
end |
|
end |
|
|
|
context "and log does not exist" do |
|
it "raises an error" do |
|
expect { described_class.create!(log_id: 1, log_type: "SalesLog") }.to raise_error(ActiveRecord::RecordInvalid) |
|
end |
|
end |
|
|
|
context "and log_type is invalid" do |
|
let(:sales_log) { create(:sales_log) } |
|
|
|
it "raises an error" do |
|
expect { described_class.create!(log_id: sales_log.id, log_type: "SomethingElse") }.to raise_error(NameError) |
|
end |
|
end |
|
end |
|
|
|
context "when accessing all duplicates for a sales log" do |
|
let(:sales_log) { create(:sales_log) } |
|
|
|
context "and there are no duplicates" do |
|
it "returns an empty array" do |
|
expect(sales_log.duplicates).to eq([]) |
|
end |
|
end |
|
|
|
context "and there are duplicates" do |
|
let(:other_sales_log) { create(:sales_log) } |
|
|
|
before do |
|
duplicate_log = described_class.create!(log_id: sales_log.id, log_type: "SalesLog") |
|
described_class.create!(log_id: other_sales_log.id, log_type: "SalesLog", duplicate_log_reference_id: duplicate_log.duplicate_log_reference_id) |
|
create(:sales_log) |
|
create(:sales_log) |
|
end |
|
|
|
it "returns the correct duplicates" do |
|
expect(sales_log.duplicates.count).to eq(1) |
|
expect(sales_log.duplicates).to include(other_sales_log) |
|
end |
|
end |
|
end |
|
|
|
context "when accessing all duplicates for a lettings log" do |
|
let(:lettings_log) { create(:lettings_log) } |
|
|
|
context "and there are no duplicates" do |
|
it "returns an empty array" do |
|
expect(lettings_log.duplicates).to eq([]) |
|
end |
|
end |
|
|
|
context "and there are duplicates" do |
|
let(:other_lettings_log) { create(:lettings_log) } |
|
|
|
before do |
|
duplicate_log = described_class.create!(log_id: lettings_log.id, log_type: "LettingsLog") |
|
described_class.create!(log_id: other_lettings_log.id, log_type: "LettingsLog", duplicate_log_reference_id: duplicate_log.duplicate_log_reference_id) |
|
create(:lettings_log) |
|
create(:lettings_log) |
|
end |
|
|
|
it "returns the correct duplicates" do |
|
expect(lettings_log.duplicates.count).to eq(1) |
|
expect(lettings_log.duplicates).to include(other_lettings_log) |
|
end |
|
end |
|
end |
|
end
|
|
|