fixed accidential push
This commit is contained in:
@@ -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 }
|
||||||
|
|||||||
@@ -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}}
|
||||||
|
|
||||||
|
|||||||
@@ -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` },
|
||||||
|
|||||||
Reference in New Issue
Block a user