fixed accidential push

This commit is contained in:
Daniel
2022-04-09 12:38:24 +02:00
parent bf317bc2c9
commit b733643f2a
3 changed files with 55 additions and 13 deletions

View File

@@ -1,20 +1,13 @@
const cds = require('@sap/cds') const cds = require('@sap/cds')
class CatalogService extends cds.ApplicationService { async init(){
class CatalogService extends cds.ApplicationService { init(){
const { Books } = cds.entities ('sap.capire.bookshop') const { Books } = cds.entities ('sap.capire.bookshop')
const { ListOfBooks } = this.entities
this.on('READ','ListOfBooks', ()=>{
Error.stackTraceLimit = 22
cds._debug = true
return SELECT.from (ListOfBooks)
})
// Reduce stock of ordered books if available stock suffices // Reduce stock of ordered books if available stock suffices
this.on ('submitOrder', async req => { this.on ('submitOrder', async req => {
const {book,quantity} = req.data const {book,quantity} = req.data
if (quantity < 1) return req.reject (400,`quantity has to be 1 or more`) if (quantity < 1) return req.reject (400,`quantity has to be 1 or more`)
cds._debug = true
let b = await SELECT `stock` .from (Books,book) let b = await SELECT `stock` .from (Books,book)
if (!b) return req.error (404,`Book #${book} doesn't exist`) if (!b) return req.error (404,`Book #${book} doesn't exist`)
let {stock} = b let {stock} = b
@@ -29,8 +22,7 @@ class CatalogService extends cds.ApplicationService { async init(){
if (each.stock > 111) each.title += ` -- 11% discount!` if (each.stock > 111) each.title += ` -- 11% discount!`
}) })
await super.init() return super.init()
return
}} }}
module.exports = { CatalogService } module.exports = { CatalogService }

View File

@@ -16,9 +16,9 @@ GET {{server}}/browse/$metadata
### ------------------------------------------------------------------------ ### ------------------------------------------------------------------------
# Browse Books as any user # Browse Books as any user
GET {{server}}/browse/Books? GET {{server}}/browse/ListOfBooks?
# &$select=title,stock # &$select=title,stock
# &$expand=currency &$expand=genre
# &sap-language=de # &sap-language=de
{{me}} {{me}}

View File

@@ -4,6 +4,46 @@ axios.defaults.auth = { username: 'alice', password: 'admin' }
describe('cap/samples - Bookshop APIs', () => { describe('cap/samples - Bookshop APIs', () => {
// Genres
const Drama = {
"name": "Drama",
"descr": null,
"ID": 11,
"parent_ID": 10
}
const Mystery = {
"name": "Mystery",
"descr": null,
"ID": 16,
"parent_ID": 10
}
const Fantasy = {
"name": "Fantasy",
"descr": null,
"ID": 13,
"parent_ID": 10
}
// Currencies
const GBP = {
"name": "British Pound",
"descr": null,
"code": "GBP",
"symbol": "£"
}
const USD = {
"name": "US Dollar",
"descr": null,
"code": "USD",
"symbol": "$"
}
const JPY = {
"name": "Yen",
"descr": null,
"code": "JPY",
"symbol": "¥"
}
it('serves $metadata documents in v4', async () => { it('serves $metadata documents in v4', async () => {
const { headers, status, data } = await GET `/browse/$metadata` const { headers, status, data } = await GET `/browse/$metadata`
@@ -16,6 +56,16 @@ describe('cap/samples - Bookshop APIs', () => {
expect(data).to.contain('<Annotation Term="Common.Label" String="Currency"/>') expect(data).to.contain('<Annotation Term="Common.Label" String="Currency"/>')
}) })
it('serves ListOfBooks?$expand=genre,currency', async () => {
const { data } = await GET `/browse/ListOfBooks ${{
params: { $search: 'Po', $select: `title,author`, $expand:`genre,currency` },
}}`
expect(data.value).to.eql([
{ ID: 251, title: 'The Raven', author: 'Edgar Allen Poe', genre:Mystery, currency:USD },
{ ID: 252, title: 'Eleonora', author: 'Edgar Allen Poe', genre:Mystery, currency:USD },
])
})
it('supports $search in multiple fields', async () => { it('supports $search in multiple fields', async () => {
const { data } = await GET `/browse/Books ${{ const { data } = await GET `/browse/Books ${{
params: { $search: 'Po', $select: `title,author` }, params: { $search: 'Po', $select: `title,author` },