Привет, я работаю над проектом RoR с ruby-2.5.0 и rails 5. У меня есть две модели Receipt и Receipt Items. Квитанция имеет большое количество чеков.
Сериализатор квитанций: -
# frozen_string_literal: true
class ReceiptSerializer
include JSONAPI::Serializer
TYPE = 'reciept'
attribute :name
attribute :receipt_date
attribute :address
attribute :total_paid
attribute :user_id
attribute :receipt_date do
object.receipt_date.strftime('%d/%m/%Y %H:%M:%S')
end
attribute :receipt_items do
object.receipt_items.map do |receipt_item|
::ReceiptItemSerializer.new(receipt_item).attributes
end
end
end
Сериализатор пунктов получения: -
# frozen_string_literal: true
class ReceiptItemSerializer
include JSONAPI::Serializer
TYPE = 'reciept_item'
attribute :item_name
attribute :quantity
attribute :price
end
Я написал модульный тест для обоих сериализаторов следующим образом:
receipt_serializer_spec.rb
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe ReceiptSerializer do
let(:id) { 1 }
let(:user_id) { 1 }
let(:name) { 'IGA' }
let(:address) { 'address' }
let(:total_paid) { '100' }
let(:receipt_date) { '12/04/2018 15:36:00' }
let(:receipt) do
Receipt.new(
user_id: user_id,
name: name,
address: address,
total_paid: total_paid,
receipt_date: receipt_date
)
end
subject { JSONAPI::Serializer.serialize(receipt) }
it { is_expected.to have_jsonapi_attributes('user-id' => user_id) }
it { is_expected.to have_jsonapi_attributes('address' => address) }
it { is_expected.to have_jsonapi_attributes('total-paid' => total_paid) }
it { is_expected.to have_jsonapi_attributes('receipt-date' => receipt_date) }
it { is_expected.to have_jsonapi_attributes('receipt-date' => receipt_date) }
end
receipt_item_serializer_spec.rb
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe ReceiptSerializer do
let(:receipt_id) { 1 }
let(:item_name) { 'ABC' }
let(:quantity) { 1 }
let(:price) { '100' }
let(:receipt_item) do
ReceiptItem.new(
receipt_id: receipt_id,
item_name: item_name,
quantity: quantity,
price: price
)
end
subject { JSONAPI::Serializer.serialize(receipt_item) }
it { is_expected.to have_jsonapi_attributes('item-name' => item_name) }
it { is_expected.to have_jsonapi_attributes('quantity' => quantity) }
it { is_expected.to have_jsonapi_attributes('price' => price) }
end
Теперь я не знаю, как написать модульный тест для атрибута receive_items, который я определил в receive_serializer.rb. Пожалуйста, помогите мне. Заранее спасибо.