mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-11-29 10:24:20 +01:00
83 lines
2.7 KiB
Ruby
83 lines
2.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'test_helper'
|
|
|
|
class ChainedElementTest < ActiveSupport::TestCase
|
|
test 'create a first element' do
|
|
source = Invoice.first
|
|
element = ChainedElement.create!(
|
|
element: source,
|
|
previous: nil
|
|
)
|
|
assert element.persisted?
|
|
assert_not_nil element.content
|
|
assert_not_nil element.footprint
|
|
assert_nil element.previous
|
|
|
|
assert element.content.is_a?(Hash)
|
|
FootprintService.footprint_columns(Invoice).each do |col|
|
|
if source[col].blank?
|
|
assert_not_includes element.content.keys, col
|
|
else
|
|
assert_includes element.content.keys, col
|
|
end
|
|
end
|
|
assert_includes element.content.keys, 'previous'
|
|
|
|
assert_equal source.id, element.content['id']
|
|
assert_equal source.total, element.content['total']
|
|
assert_equal source.reference, element.content['reference']
|
|
assert_equal source.payment_method, element.content['payment_method']
|
|
assert_nil element.content['previous']
|
|
assert_not element.corrupted?
|
|
end
|
|
|
|
test 'chain two elements' do
|
|
source1 = sample_reservation_invoice(users(:user2), users(:user1))
|
|
element1 = source1.chained_element
|
|
assert element1.persisted?
|
|
|
|
source2 = sample_reservation_invoice(users(:user3), users(:user1))
|
|
element2 = source2.chained_element
|
|
assert element2.persisted?
|
|
assert element2.content.is_a?(Hash)
|
|
assert_equal element1.footprint, element2.content['previous']
|
|
assert_equal element1.id, element2.previous_id
|
|
|
|
assert_not element1.corrupted?
|
|
assert_not element2.corrupted?
|
|
end
|
|
|
|
test 'chain element with children embedded json' do
|
|
source = sample_schedule(users(:user2), users(:user1))
|
|
previous = nil
|
|
source.payment_schedule_items.each do |item|
|
|
element = item.chained_element
|
|
|
|
assert element.persisted?
|
|
assert_not_nil element.content
|
|
assert_not_nil element.footprint
|
|
assert_equal previous, element.previous unless previous.nil?
|
|
|
|
assert element.content.is_a?(Hash)
|
|
FootprintService.footprint_columns(PaymentScheduleItem).each do |col|
|
|
if item[col].blank?
|
|
assert_not_includes element.content.keys, col
|
|
else
|
|
assert_includes element.content.keys, col
|
|
assert item.chained_element.content[col].is_a?(Hash) if item[col].is_a?(Hash)
|
|
end
|
|
end
|
|
assert_includes element.content.keys, 'previous'
|
|
|
|
assert_equal item.id, element.content['id']
|
|
assert_equal item.details, element.content['details']
|
|
assert_equal item.payment_schedule_id, element.content['payment_schedule_id']
|
|
assert_not_nil element.content['previous'] unless previous.nil?
|
|
assert_not element.corrupted?
|
|
|
|
previous = element
|
|
end
|
|
end
|
|
end
|