Slide 47
Slide 47 text
describe CreateInvoice do
describe "#call" do
it "creates an invoice with items" do
customer = Customer.create(name: "Big Corp")
magic = LineItem.create(name: 'Magic', unit: 'Hour', price: 2)
healing = LineItem.create(name: 'Healing', unit: 'Hour', price: 4)
today = Date.today
params = {
status: "DRAFT",
customer_id: customer.id,
issue_date: today,
delivery_date: today,
due_date: today + 1.month,
items: [
{ line_item_id: magic.id, quantity: 2 },
{ line_item_id: healing.id, quantity: 3 },
]
}
create_invoice = CreateInvoice.new(params)
invoice = create_invoice.call
expect(invoice.customer).to eql(customer)
expect(invoice.line_items.to_a).to eql([magic, healing])
expect(invoice.total_amount).to eql(magic.price * 2 + healing.price * 3)
end
end
end