summaryrefslogtreecommitdiff
path: root/tests/administration_rw_tests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/administration_rw_tests.cpp')
-rw-r--r--tests/administration_rw_tests.cpp68
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