mirror of
https://github.com/internetee/registry.git
synced 2025-07-27 21:16:12 +02:00
105 lines
2.8 KiB
Ruby
105 lines
2.8 KiB
Ruby
require 'test_helper'
|
|
|
|
class InvoiceTest < ActiveSupport::TestCase
|
|
include ActionMailer::TestHelper
|
|
|
|
setup do
|
|
@invoice = invoices(:one)
|
|
@unpaid = invoices(:unpaid)
|
|
|
|
stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_status')
|
|
.with(
|
|
body: '{"invoice_number":2,"status":"paid"}'
|
|
)
|
|
.to_return(status: 200, body: '', headers: {})
|
|
end
|
|
|
|
def test_unpaid_invoice_can_be_change_status_to_paid
|
|
assert !@unpaid.paid?
|
|
|
|
InvoiceStateMachine.new(invoice: @unpaid, status: 'paid').call
|
|
@unpaid.reload
|
|
|
|
assert @unpaid.paid?
|
|
end
|
|
|
|
def test_no_any_errors_if_invoice_with_unpaid_status_set_again_unpaid
|
|
assert !@unpaid.paid?
|
|
|
|
InvoiceStateMachine.new(invoice: @unpaid, status: 'unpaid').call
|
|
@unpaid.reload
|
|
|
|
assert !@unpaid.paid?
|
|
assert @unpaid.errors.empty?
|
|
end
|
|
|
|
def test_only_unpaid_invoice_can_be_cancelled
|
|
assert !@unpaid.paid?
|
|
|
|
InvoiceStateMachine.new(invoice: @unpaid, status: 'cancelled').call
|
|
@unpaid.reload
|
|
|
|
assert @unpaid.cancelled?
|
|
|
|
assert @invoice.paid?
|
|
InvoiceStateMachine.new(invoice: @invoice, status: 'cancelled').call
|
|
@invoice.reload
|
|
|
|
assert_equal @invoice.errors.full_messages.join, 'Inavalid state cancelled'
|
|
assert @invoice.errors.present?
|
|
end
|
|
|
|
def test_cancelled_invoiced_cannot_be_unpaid
|
|
assert !@unpaid.paid?
|
|
|
|
InvoiceStateMachine.new(invoice: @unpaid, status: 'cancelled').call
|
|
@unpaid.reload
|
|
|
|
assert @unpaid.cancelled?
|
|
|
|
InvoiceStateMachine.new(invoice: @unpaid, status: 'unpaid').call
|
|
@unpaid.reload
|
|
|
|
assert @unpaid.cancelled?
|
|
|
|
assert @unpaid.errors.present?
|
|
assert_equal @unpaid.errors.full_messages.join, 'Inavalid state unpaid'
|
|
end
|
|
|
|
def test_if_paid_invoice_not_have_response_from_everypay_it_can_be_unpaid_back
|
|
assert !@unpaid.paid?
|
|
|
|
InvoiceStateMachine.new(invoice: @unpaid, status: 'paid').call
|
|
@unpaid.reload
|
|
|
|
assert @unpaid.paid?
|
|
assert_nil @unpaid.payment_orders.last.payment_reference?
|
|
|
|
InvoiceStateMachine.new(invoice: @unpaid, status: 'unpaid').call
|
|
@unpaid.reload
|
|
|
|
assert !@unpaid.paid?
|
|
end
|
|
|
|
def test_if_paid_invoice_has_response_from_everypay_it_cannot_be_rollback
|
|
assert !@unpaid.paid?
|
|
|
|
InvoiceStateMachine.new(invoice: @unpaid, status: 'paid').call
|
|
@unpaid.reload
|
|
|
|
assert @unpaid.paid?
|
|
payment_order = @unpaid.payment_orders.last
|
|
payment_order.response = {}
|
|
payment_order.response[:payment_reference] = 'responsefromeveryapy'
|
|
payment_order.save && payment_order.reload
|
|
|
|
assert @unpaid.payment_orders.last.payment_reference?
|
|
|
|
InvoiceStateMachine.new(invoice: @unpaid, status: 'unpaid').call
|
|
@unpaid.reload
|
|
|
|
assert @unpaid.paid?
|
|
assert @unpaid.errors.present?
|
|
assert_equal @unpaid.errors.full_messages.join, 'Inavalid state unpaid'
|
|
end
|
|
end
|