diff --git a/srv/orders-service.js b/srv/orders-service.js index 222129b..5eeb9b2 100644 --- a/srv/orders-service.js +++ b/srv/orders-service.js @@ -8,7 +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}) + 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) } }) 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) + }) + +})