From ff3247078141a7ff0418c7b4ffcbf5e70129cb0e Mon Sep 17 00:00:00 2001 From: D045778 Date: Fri, 24 Oct 2025 09:46:39 +0200 Subject: [PATCH 1/3] fix: adding new items to an order should not crash --- srv/orders-service.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/srv/orders-service.js b/srv/orders-service.js index 222129b..b79de7e 100644 --- a/srv/orders-service.js +++ b/srv/orders-service.js @@ -8,7 +8,8 @@ class OrdersService extends cds.ApplicationService { this.before ('UPDATE', 'Orders', async function(req) { const { ID, Items } = req.data if (Items) for (let { product_ID, quantity } of Items) { - const { quantity:before } = await SELECT.one.from (OrderItems, oi => oi.quantity) .where ({up__ID:ID, product_ID}) + const { quantity:before } = (await SELECT.one.from (OrderItems, oi => oi.quantity) .where ({up__ID:ID, product_ID})) || {} + if (!before) continue if (quantity != before) await this.orderChanged (product_ID, quantity-before) } }) From f585520214b8e2fc8c8eef782354df8cd381f41d Mon Sep 17 00:00:00 2001 From: Vladislav Leonkev <131776471+vl-leon@users.noreply.github.com> Date: Wed, 29 Jul 2026 16:06:47 +0200 Subject: [PATCH 2/3] Update srv/orders-service.js --- srv/orders-service.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/srv/orders-service.js b/srv/orders-service.js index b79de7e..5eeb9b2 100644 --- a/srv/orders-service.js +++ b/srv/orders-service.js @@ -8,8 +8,7 @@ class OrdersService extends cds.ApplicationService { this.before ('UPDATE', 'Orders', async function(req) { const { ID, Items } = req.data if (Items) for (let { product_ID, quantity } of Items) { - const { quantity:before } = (await SELECT.one.from (OrderItems, oi => oi.quantity) .where ({up__ID:ID, product_ID})) || {} - if (!before) continue + const { quantity:before } = (await SELECT.one.from (OrderItems, oi => oi.quantity) .where ({up__ID:ID, product_ID})) || {quantity: 0} if (quantity != before) await this.orderChanged (product_ID, quantity-before) } }) From a9618ec9b5ffc1613dc49259dff5c8daf55e8c5a Mon Sep 17 00:00:00 2001 From: Vladislav Leonkev Date: Thu, 30 Jul 2026 12:51:17 +0200 Subject: [PATCH 3/3] test: add new OrderItem to active Order --- test/odata.orders.test.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 test/odata.orders.test.js diff --git a/test/odata.orders.test.js b/test/odata.orders.test.js new file mode 100644 index 0000000..79378c6 --- /dev/null +++ b/test/odata.orders.test.js @@ -0,0 +1,34 @@ +const cds = require('@sap/cds') +const { GET, POST, PATCH, expect, defaults } = cds.test(__dirname + "/../", '--with-mocks') + +describe ('OrdersService', () => { + + beforeAll (()=> { + cds.requires.queue = { timeout: '1h' } + defaults.auth = { username: 'alice' } + defaults.path = '/odata/v4/orders' + }) + + it('check order count', async () => { + const { data } = await GET(`/Orders`, { + params: { + $select: 'OrderNo' + }, + }) + expect (data.value.length) .to.equal (2) + }) + + it('add new OrderItem to active Order', async () => { + const { data: data1 } = await POST(`/Orders`, { + 'OrderNo': '3', + IsActiveEntity: true + }) + expect (data1.OrderNo) .to.equal ('3') + const { data: data2 } = await PATCH(`/Orders(${data1.ID})`, {Items:[{ + product_ID: '201', + quantity: 1 + }]}) + expect (data2.ID) .to.equal (data1.ID) + }) + +})