commit 8145acda94ba0bb1fc2bbe6cda3bfb12b9fffd5a
parent ad4f0177e175251f51e939eba22b9fa7d28474b8
Author: bohdan-potuzhnyi <bohdan.potuzhnyi@gmail.com>
Date: Mon, 31 Mar 2025 22:26:31 +0200
Merge branch 'master' of ssh://git.taler.net/merchant
Diffstat:
3 files changed, 36 insertions(+), 24 deletions(-)
diff --git a/src/backend/taler-merchant-httpd_post-orders-ID-abort.c b/src/backend/taler-merchant-httpd_post-orders-ID-abort.c
@@ -797,6 +797,7 @@ begin_transaction (struct AbortContext *ac)
&h_contract_terms))
{
GNUNET_break_op (0);
+ TMH_db->rollback (TMH_db->cls);
resume_abort_with_error (ac,
MHD_HTTP_FORBIDDEN,
TALER_EC_MERCHANT_POST_ORDERS_ID_ABORT_CONTRACT_HASH_MISSMATCH,
diff --git a/src/backenddb/pg_statistics_examples.sql b/src/backenddb/pg_statistics_examples.sql
@@ -56,16 +56,16 @@ VALUES
('deposits'
,'sales (before refunds)'
,'amount'
- ,generate_series (1, 10, 1) || generate_series (60, 180, 60),
- ,array_fill (1, 10) || array_fill (5, 3)]
+ ,ARRAY(SELECT generate_series (1, 10, 1)) || ARRAY(SELECT generate_series (60, 180, 60)),
+ ,array_fill (1, ARRAY[10]) || array_fill (5, ARRAY[3])
),
('products-sold'
,'number of products sold'
,'number'
- ,generate_series (1, 10, 1) || [60],
- ,array_fill (1, 10) || [10]
+ ,ARRAY(SELECT generate_series (1, 10, 1)) || [60],
+ ,array_fill (1, ARRAY[10]) || [10]
)
-ON CONFLICT DO NOTHING;
+ON CONFLICT DO NOTHING;
DROP FUNCTION IF EXISTS merchant_deposits_statistics_trigger CASCADE;
CREATE FUNCTION merchant_deposits_statistics_trigger()
@@ -134,7 +134,7 @@ VALUES
,ARRAY['second'::statistic_range, 'minute', 'day', 'week', 'month', 'quarter', 'year']
,ARRAY[120, 120, 60, 12, 24, 8, 10] -- track last 120s, 120 minutes, 60 days, 12 weeks, 24 months, 8 quarters and 10 years
)
-ON CONFLICT DO NOTHING;
+ON CONFLICT DO NOTHING;
DROP FUNCTION IF EXISTS merchant_products_sold_statistics_trigger CASCADE;
CREATE FUNCTION merchant_products_sold_statistics_trigger()
diff --git a/src/backenddb/test_merchantdb.c b/src/backenddb/test_merchantdb.c
@@ -720,6 +720,7 @@ make_product (const char *id,
product->product.description_i18n = json_array ();
GNUNET_assert (NULL != product->product.description_i18n);
product->product.unit = "boxes";
+ product->product.minimum_age = 0;
GNUNET_assert (GNUNET_OK ==
TALER_string_to_amount ("EUR:120.40",
&product->product.price));
@@ -1115,6 +1116,7 @@ pre_test_products (struct TestProducts_Closure *cls)
&cls->products[1]);
cls->products[1].product.description = "This is a another test product";
cls->products[1].product.unit = "cans";
+ cls->products[1].product.minimum_age = 0;
GNUNET_assert (GNUNET_OK ==
TALER_string_to_amount ("EUR:4.95",
&cls->products[1].product.price));
@@ -1438,18 +1440,25 @@ make_order (const char *order_id,
&order->claim_token,
sizeof (order->claim_token));
refund_deadline = GNUNET_TIME_relative_to_timestamp (GNUNET_TIME_UNIT_WEEKS);
- json_object_set_new (order->contract,
- "fulfillment_url",
- json_string ("a"));
- json_object_set_new (order->contract,
- "order_id",
- json_string (order_id));
- json_object_set_new (order->contract,
- "pay_deadline",
- GNUNET_JSON_from_timestamp (order->pay_deadline));
- json_object_set_new (order->contract,
- "refund_deadline",
- GNUNET_JSON_from_timestamp (refund_deadline));
+ GNUNET_assert (0 ==
+ json_object_set_new (order->contract,
+ "fulfillment_url",
+ json_string ("a")));
+ GNUNET_assert (0 ==
+ json_object_set_new (order->contract,
+ "order_id",
+ json_string (order_id)));
+ GNUNET_assert (0 ==
+ json_object_set_new (
+ order->contract,
+ "pay_deadline",
+ GNUNET_JSON_from_timestamp (order->pay_deadline))
+ );
+ GNUNET_assert (0 ==
+ json_object_set_new (order->contract,
+ "refund_deadline",
+ GNUNET_JSON_from_timestamp (
+ refund_deadline)));
}
@@ -2113,9 +2122,10 @@ pre_test_orders (struct TestOrders_Closure *cls)
make_order ("test_orders_od_2",
&cls->orders[2]);
- GNUNET_assert (0 == json_object_set_new (cls->orders[1].contract,
- "other_field",
- json_string ("Second contract")));
+ GNUNET_assert (0 ==
+ json_object_set_new (cls->orders[1].contract,
+ "other_field",
+ json_string ("Second contract")));
cls->orders[2].pay_deadline = GNUNET_TIME_UNIT_ZERO_TS;
GNUNET_assert (0 ==
@@ -2252,9 +2262,10 @@ run_test_orders (struct TestOrders_Closure *cls)
}
}
/* Test update contract terms */
- json_object_set_new (cls->orders[0].contract,
- "some_new_field",
- json_string ("another value"));
+ GNUNET_assert (0 ==
+ json_object_set_new (cls->orders[0].contract,
+ "some_new_field",
+ json_string ("another value")));
TEST_RET_ON_FAIL (test_update_contract_terms (&cls->instance,
&cls->orders[0],
GNUNET_DB_STATUS_SUCCESS_ONE_RESULT));