Я новичок в тестах на рельсах, и у меня есть некоторые сомнения ... Мне нужно протестировать несколько моделей, я знаю, как проверить основы, такие как проверки и ассоциации, но я не уверен, как подойтичто мне нужно сделать.
У меня есть две модели, PaymentDocument, PaymentAmount (PaymentDocument has_many PaymentAmount), у каждой модели есть поле с именем «сумма», сумма в модели PaymentDocument имеет сумму каждого PaymentAmount, связанного сЭто.поэтому мне нужно применить некоторые математические операции к каждой сумме PaymentAmount и суммировать их, затем выполнить ту же математическую операцию с суммой PaymentDocument и сравнить ее, чтобы проверить, точно ли они равны или я потерял несколько десятичных знаков.
Прямо сейчасу меня есть два файла спецификаций, один для PaymentDocument и другой для PaymentAmount, как я могу протестировать обе модели одновременно (чтобы убедиться, что информация о каждой модели верна) и затем применить математическую операцию, о которой я упоминал ранее?
payment_document_spec
require "rails_helper"
RSpec.describe PaymentDocument, type: :model do
describe "validations" do
it { is_expected.to validate_presence_of(:amount) }
it { is_expected.to validate_numerality_of(:amount).is_greater_than(0) }
end
describe "associations" do
it { is_expected.to belong_to(:payment_amounts) }
end
end
payment_amount_spec
require "rails_helper"
RSpec.describe PaymentAmount, type: :model do
describe "validations" do
it { is_expected.to validate_presence_of(:payment_document) }
it { is_expected.to validate_presence_of(:amount) }
it { is_expected.to validate_numerality_of(:amount).is_greater_than(0) }
end
describe "associations" do
it { is_expected.to have_many(:payment_document) }
end
end
edit:
Пример
PaymentDocument
{
id => 1,
amount => 3540095,94
}
PaymentAmounts:
{
id => 1,
pd_id => 1,
amount => 40095.00,
}
{
id => 2,
pd_id => 1,
amount => 500000.94,
}
{
id => 2,
pd_id => 1,
amount => 3000000.00,
}
#The math operation is remove divide the amounts by 1000 and round them by 2
{
id => 1,
pd_id => 1,
amount => 40.10,
}
{
id => 2,
pd_id => 1,
amount => 500.00,
}
{
id => 2,
pd_id => 1,
amount => 3000.00,
}
#The sum of all the payment amounts is 3540.10 and if i do the same operation to the amount of the payment document the result is 3540.1 but in some cases it may not be equal so that's why i want to test this.