diff options
Diffstat (limited to 'tests/administration_rw_tests.cpp')
| -rw-r--r-- | tests/administration_rw_tests.cpp | 68 |
1 files changed, 66 insertions, 2 deletions
diff --git a/tests/administration_rw_tests.cpp b/tests/administration_rw_tests.cpp index e1582f7..cf95efe 100644 --- a/tests/administration_rw_tests.cpp +++ b/tests/administration_rw_tests.cpp @@ -144,16 +144,28 @@ TEST _administration_rw_info(void) administration_writer_create(); s32 next_id, next_sequence_number; + ai_service ais; administration_create_empty(test_file_path); { next_id = administration_get_next_id(); next_sequence_number = administration_get_next_sequence_number(); + + ai_service ss = {0}; + ss.provider = AI_PROVIDER_OPENAI; + strops_copy(ss.api_key_public, "123", sizeof(ss.api_key_public)); + strops_copy(ss.api_key_private, "321", sizeof(ss.api_key_private)); + administration_set_ai_service(ss); + + ais = administration_get_ai_service(); } administration_reader_open_existing(test_file_path); { ASSERT_EQ(next_id, administration_get_next_id()); ASSERT_EQ(next_sequence_number, administration_get_next_sequence_number()); + + ai_service rs = administration_get_ai_service(); + ASSERT_MEM_EQ(&ais, &rs, sizeof(ai_service)); } PASS(); @@ -167,7 +179,8 @@ TEST _assert_invoices_are_equal(invoice inv, invoice invr) ASSERT_EQ(invr.issued_at, inv.issued_at); ASSERT_EQ(invr.expires_at, inv.expires_at); ASSERT_EQ(invr.delivered_at, inv.delivered_at); - ASSERT_STR_EQ(invr.document, inv.document); + ASSERT_STR_EQ(invr.document.original_path, inv.document.original_path); + ASSERT_STR_EQ(invr.document.copy_path, inv.document.copy_path); ASSERT_STR_EQ(invr.project_id, inv.project_id); ASSERT_STR_EQ(invr.cost_center_id, inv.cost_center_id); @@ -302,7 +315,6 @@ TEST _administration_rw_b2c_invoice(void) PASS(); } - TEST _administration_rw_b2b2c_invoice(void) { u32 count; @@ -346,6 +358,57 @@ TEST _administration_rw_b2b2c_invoice(void) PASS(); } +TEST _administration_rw_b2c_2currency_invoice(void) +{ + u32 count; + invoice inv; + invoice invr; + + administration_writer_create(); + + administration_create_default(test_file_path); + { + contact pw1 = _create_nl_business(); + contact pw2 = _create_nl_consumer(); + + inv = administration_invoice_create_empty(); + inv.supplier = pw1; + inv.customer = pw2; + inv.is_outgoing = 1; + inv.status = invoice_status::INVOICE_CONCEPT; + inv.issued_at = time(NULL); + inv.delivered_at = inv.issued_at; + inv.expires_at = inv.issued_at + 1000; + + administration_invoice_set_currency(&inv, "USD"); + + administration_billing_item_add_to_invoice(&inv, _create_bi3(&inv)); + administration_billing_item_add_to_invoice(&inv, _create_bi4(&inv)); + administration_billing_item_add_to_invoice(&inv, _create_bi5(&inv)); + administration_billing_item_add_to_invoice(&inv, _create_bi6(&inv)); + + // Finals are set manually for multi currency invoices. + inv.total = 20.0f; + inv.tax = 10.0f; + inv.net = 10.0f; + inv.allowance = 5.0f; + + count = administration_invoice_count(); + ASSERT_EQ(administration_invoice_add(&inv), A_ERR_SUCCESS); + ASSERT_EQ(count+1, administration_invoice_count()); + } + + administration_reader_open_existing(test_file_path); + { + ASSERT_EQ(count+1, administration_invoice_count()); + ASSERT_EQ(A_ERR_SUCCESS, administration_invoice_get_by_id(&invr, inv.id)); + + CHECK_CALL(_assert_invoices_are_equal(inv, invr)); + } + + PASS(); +} + SUITE(administration_rw) { SET_SETUP(setup_cb, NULL); SET_TEARDOWN(teardown_cb, NULL); @@ -358,4 +421,5 @@ SUITE(administration_rw) { RUN_TEST(_administration_rw_b2b_invoice); RUN_TEST(_administration_rw_b2c_invoice); RUN_TEST(_administration_rw_b2b2c_invoice); + RUN_TEST(_administration_rw_b2c_2currency_invoice); }
\ No newline at end of file |
