commit 8e4fb784b0c0773e6951ce91a2bea0824d7bf677
parent 12223f6e8a3054104aaac161773f89348bcb48e0
Author: bohdan-potuzhnyi <bohdan.potuzhnyi@gmail.com>
Date: Sun, 15 Feb 2026 17:09:06 +0100
fix + update to test suite for #0011082
Diffstat:
2 files changed, 108 insertions(+), 4 deletions(-)
diff --git a/src/backenddb/pg_do_handle_inventory_changes.sql b/src/backenddb/pg_do_handle_inventory_changes.sql
@@ -65,7 +65,10 @@ BEGIN
NEW.taxes::TEXT);
resolved_body := replace_placeholder(resolved_body,
'price',
- NEW.price::TEXT);
+ NEW.price_array[1]::TEXT);
+ resolved_body := replace_placeholder(resolved_body,
+ 'unit_price',
+ NEW.price_array::TEXT);
resolved_body := replace_placeholder(resolved_body,
'total_stock',
NEW.total_stock::TEXT);
@@ -155,10 +158,16 @@ BEGIN
NEW.taxes::TEXT);
resolved_body := replace_placeholder(resolved_body,
'old_price',
- OLD.price::TEXT);
+ OLD.price_array[1]::TEXT);
+ resolved_body := replace_placeholder(resolved_body,
+ 'old_unit_price',
+ OLD.price_array::TEXT);
resolved_body := replace_placeholder(resolved_body,
'price',
- NEW.price::TEXT);
+ NEW.price_array[1]::TEXT);
+ resolved_body := replace_placeholder(resolved_body,
+ 'unit_price',
+ NEW.price_array::TEXT);
resolved_body := replace_placeholder(resolved_body,
'old_total_stock',
OLD.total_stock::TEXT);
@@ -251,7 +260,10 @@ BEGIN
OLD.taxes::TEXT);
resolved_body := replace_placeholder(resolved_body,
'price',
- OLD.price::TEXT);
+ OLD.price_array[1]::TEXT);
+ resolved_body := replace_placeholder(resolved_body,
+ 'unit_price',
+ OLD.price_array::TEXT);
resolved_body := replace_placeholder(resolved_body,
'total_stock',
OLD.total_stock::TEXT);
diff --git a/src/testing/test_merchant_api.c b/src/testing/test_merchant_api.c
@@ -2411,6 +2411,96 @@ run (void *cls,
MHD_HTTP_NO_CONTENT),
TALER_TESTING_cmd_end ()
};
+ struct TALER_TESTING_Command inventory_webhooks[] = {
+ TALER_TESTING_cmd_testserver (
+ "launch-http-server-for-inventory-webhooks",
+ 12346),
+ TALER_TESTING_cmd_merchant_post_webhooks2 (
+ "post-webhooks-inventory-added",
+ merchant_url,
+ "webhook-inventory-added",
+ "inventory_added",
+ "http://localhost:12346/",
+ "POST",
+ "Taler-test-header: inventory",
+ "inventory-added",
+ MHD_HTTP_NO_CONTENT),
+ TALER_TESTING_cmd_merchant_post_webhooks2 (
+ "post-webhooks-inventory-updated",
+ merchant_url,
+ "webhook-inventory-updated",
+ "inventory_updated",
+ "http://localhost:12346/",
+ "POST",
+ "Taler-test-header: inventory",
+ "inventory-updated",
+ MHD_HTTP_NO_CONTENT),
+ TALER_TESTING_cmd_merchant_post_webhooks2 (
+ "post-webhooks-inventory-deleted",
+ merchant_url,
+ "webhook-inventory-deleted",
+ "inventory_deleted",
+ "http://localhost:12346/",
+ "POST",
+ "Taler-test-header: inventory",
+ "inventory-deleted",
+ MHD_HTTP_NO_CONTENT),
+ TALER_TESTING_cmd_merchant_post_products (
+ "post-product-inventory-hook",
+ merchant_url,
+ "product-inventory-hook",
+ "webhook inventory product",
+ "EUR:1",
+ MHD_HTTP_NO_CONTENT),
+ cmd_webhook ("pending-webhooks-inventory-added"),
+ TALER_TESTING_cmd_checkserver2 (
+ "check-inventory-webhook-added",
+ "launch-http-server-for-inventory-webhooks",
+ 0,
+ "/",
+ "POST",
+ NULL,
+ "inventory-added"),
+ TALER_TESTING_cmd_merchant_patch_product (
+ "patch-product-inventory-hook",
+ merchant_url,
+ "product-inventory-hook",
+ "webhook inventory product patched",
+ json_object (),
+ "unit",
+ "EUR:2",
+ "",
+ json_array (),
+ 5,
+ 0,
+ json_object (),
+ GNUNET_TIME_relative_to_timestamp (GNUNET_TIME_UNIT_MINUTES),
+ MHD_HTTP_NO_CONTENT),
+ cmd_webhook ("pending-webhooks-inventory-updated"),
+ TALER_TESTING_cmd_checkserver2 (
+ "check-inventory-webhook-updated",
+ "launch-http-server-for-inventory-webhooks",
+ 1,
+ "/",
+ "POST",
+ NULL,
+ "inventory-updated"),
+ TALER_TESTING_cmd_merchant_delete_product (
+ "delete-product-inventory-hook",
+ merchant_url,
+ "product-inventory-hook",
+ MHD_HTTP_NO_CONTENT),
+ cmd_webhook ("pending-webhooks-inventory-deleted"),
+ TALER_TESTING_cmd_checkserver2 (
+ "check-inventory-webhook-deleted",
+ "launch-http-server-for-inventory-webhooks",
+ 2,
+ "/",
+ "POST",
+ NULL,
+ "inventory-deleted"),
+ TALER_TESTING_cmd_end ()
+ };
struct TALER_TESTING_Command repurchase[] = {
cmd_transfer_to_exchange (
"create-reserve-30x",
@@ -3181,6 +3271,8 @@ run (void *cls,
templates),
TALER_TESTING_cmd_batch ("webhooks",
webhooks),
+ TALER_TESTING_cmd_batch ("inventory-webhooks",
+ inventory_webhooks),
TALER_TESTING_cmd_batch ("auth",
auth),
TALER_TESTING_cmd_batch ("repurchase",