Merge branch 'main' into fiori-ext
This commit is contained in:
@@ -5,7 +5,7 @@ service UserService {
|
|||||||
/**
|
/**
|
||||||
* The current user
|
* The current user
|
||||||
*/
|
*/
|
||||||
@odata.singleton entity me {
|
@odata.singleton entity me @cds.persistence.skip {
|
||||||
id : String; // user id
|
id : String; // user id
|
||||||
locale : String;
|
locale : String;
|
||||||
tenant : String;
|
tenant : String;
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
* Exposes data + entity metadata
|
* Exposes data + entity metadata
|
||||||
*/
|
*/
|
||||||
@requires:'authenticated-user'
|
@requires:'authenticated-user'
|
||||||
service DataService @( path:'-data' ) {
|
@odata service DataService @( path:'-data' ) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metadata like name and columns/elements
|
* Metadata like name and columns/elements
|
||||||
*/
|
*/
|
||||||
entity Entities {
|
entity Entities @cds.persistence.skip {
|
||||||
key name : String;
|
key name : String;
|
||||||
columns: Composition of many {
|
columns: Composition of many {
|
||||||
name : String;
|
name : String;
|
||||||
@@ -19,7 +19,7 @@ service DataService @( path:'-data' ) {
|
|||||||
/**
|
/**
|
||||||
* The actual data, organized by column name
|
* The actual data, organized by column name
|
||||||
*/
|
*/
|
||||||
entity Data {
|
entity Data @cds.persistence.skip {
|
||||||
record : array of {
|
record : array of {
|
||||||
column : String;
|
column : String;
|
||||||
data : String;
|
data : String;
|
||||||
|
|||||||
33
package-lock.json
generated
33
package-lock.json
generated
@@ -24,6 +24,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bookshop": {
|
"bookshop": {
|
||||||
|
"name": "@capire/bookshop",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sap/cds": ">=5.9",
|
"@sap/cds": ">=5.9",
|
||||||
@@ -32,6 +33,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bookstore": {
|
"bookstore": {
|
||||||
|
"name": "@capire/bookstore",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@capire/bookshop": "*",
|
"@capire/bookshop": "*",
|
||||||
@@ -44,18 +46,21 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
|
"name": "@capire/common",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sap/cds": "*"
|
"@sap/cds": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"data-viewer": {
|
"data-viewer": {
|
||||||
|
"name": "@capire/data-viewer",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sap/cds": ">=5.0.4"
|
"@sap/cds": ">=5.0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fiori": {
|
"fiori": {
|
||||||
|
"name": "@capire/fiori",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@capire/bookstore": "*",
|
"@capire/bookstore": "*",
|
||||||
@@ -83,6 +88,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hello": {
|
"hello": {
|
||||||
|
"name": "@capire/hello-world",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sap/cds": ">=5.0.4"
|
"@sap/cds": ">=5.0.4"
|
||||||
@@ -94,6 +100,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"media": {
|
"media": {
|
||||||
|
"name": "@capire/media",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lokijs": "^1.5.6"
|
"lokijs": "^1.5.6"
|
||||||
@@ -448,9 +455,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sap/cds": {
|
"node_modules/@sap/cds": {
|
||||||
"version": "6.1.1",
|
"version": "6.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/@sap/cds/-/cds-6.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sap/cds/-/cds-6.1.3.tgz",
|
||||||
"integrity": "sha512-oOdwHpzPnpt10bJ94E8Umq8Y9uuA+1mpEH9zjQNB/jynNqSMuvM1/68ZAsndhL1pSgw49o8W6b83cKJNUVyzfw==",
|
"integrity": "sha512-yvL9lPonVwUx9Md1eylAtpY0JrlSMyoxZXnCA2q9lNoVNudmjPMynO5CJBfAYEaThZSqd2yMJg/+xyKy/mn3wg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sap/cds-compiler": "^3.0.0",
|
"@sap/cds-compiler": "^3.0.0",
|
||||||
"@sap/cds-foss": "^4"
|
"@sap/cds-foss": "^4"
|
||||||
@@ -4038,9 +4045,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/sqlite3": {
|
"node_modules/sqlite3": {
|
||||||
"version": "5.0.11",
|
"version": "5.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.11.tgz",
|
"resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.1.tgz",
|
||||||
"integrity": "sha512-4akFOr7u9lJEeAWLJxmwiV43DJcGV7w3ab7SjQFAFaTVyknY3rZjvXTKIVtWqUoY4xwhjwoHKYs2HDW2SoHVsA==",
|
"integrity": "sha512-mMinkrQr/LKJqFiFF+AF7imPSzRCCpTCreusZO3D/ssJHVjZOrbu2Caz+zPH5KTmGGXBxXMGSRDssL+44CLxvg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -4440,6 +4447,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"orders": {
|
"orders": {
|
||||||
|
"name": "@capire/orders",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@capire/common": "*",
|
"@capire/common": "*",
|
||||||
@@ -4447,6 +4455,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"reviews": {
|
"reviews": {
|
||||||
|
"name": "@capire/reviews",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sap/cds": ">=5",
|
"@sap/cds": ">=5",
|
||||||
@@ -4780,9 +4789,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sap/cds": {
|
"@sap/cds": {
|
||||||
"version": "6.1.1",
|
"version": "6.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/@sap/cds/-/cds-6.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sap/cds/-/cds-6.1.3.tgz",
|
||||||
"integrity": "sha512-oOdwHpzPnpt10bJ94E8Umq8Y9uuA+1mpEH9zjQNB/jynNqSMuvM1/68ZAsndhL1pSgw49o8W6b83cKJNUVyzfw==",
|
"integrity": "sha512-yvL9lPonVwUx9Md1eylAtpY0JrlSMyoxZXnCA2q9lNoVNudmjPMynO5CJBfAYEaThZSqd2yMJg/+xyKy/mn3wg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sap/cds-compiler": "^3.0.0",
|
"@sap/cds-compiler": "^3.0.0",
|
||||||
"@sap/cds-foss": "^4"
|
"@sap/cds-foss": "^4"
|
||||||
@@ -7615,9 +7624,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sqlite3": {
|
"sqlite3": {
|
||||||
"version": "5.0.11",
|
"version": "5.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.11.tgz",
|
"resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.1.tgz",
|
||||||
"integrity": "sha512-4akFOr7u9lJEeAWLJxmwiV43DJcGV7w3ab7SjQFAFaTVyknY3rZjvXTKIVtWqUoY4xwhjwoHKYs2HDW2SoHVsA==",
|
"integrity": "sha512-mMinkrQr/LKJqFiFF+AF7imPSzRCCpTCreusZO3D/ssJHVjZOrbu2Caz+zPH5KTmGGXBxXMGSRDssL+44CLxvg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@mapbox/node-pre-gyp": "^1.0.0",
|
"@mapbox/node-pre-gyp": "^1.0.0",
|
||||||
|
|||||||
@@ -411,18 +411,67 @@ describe('cds.ql → cqn', () => {
|
|||||||
]
|
]
|
||||||
}})
|
}})
|
||||||
|
|
||||||
expect (
|
const ql_with_groups_fix = !!cds.ql.Query.prototype.flat
|
||||||
SELECT.from(Foo).where({x:1,or:{y:2}})
|
if (ql_with_groups_fix) {
|
||||||
).to.eql (
|
|
||||||
CQL`SELECT from Foo where x=1 or y=2`
|
expect (
|
||||||
).to.eql ({ SELECT: {
|
SELECT.from(Foo).where({x:1}).or({y:2}).and({z:3})
|
||||||
from: {ref:['Foo']},
|
).to.eql ({ SELECT: {
|
||||||
where: [
|
from: {ref:['Foo']},
|
||||||
{ref:['x']}, '=', {val:1},
|
where: [
|
||||||
'or',
|
{ref:['x']}, '=', {val:1},
|
||||||
{ref:['y']}, '=', {val:2}
|
'or',
|
||||||
]
|
{ref:['y']}, '=', {val:2},
|
||||||
}})
|
'and',
|
||||||
|
{ref:['z']}, '=', {val:3},
|
||||||
|
]
|
||||||
|
}})
|
||||||
|
|
||||||
|
expect (
|
||||||
|
SELECT.from(Foo).where({x:1,or:{y:2}}).and({z:3})
|
||||||
|
).to.eql ({ SELECT: {
|
||||||
|
from: {ref:['Foo']},
|
||||||
|
where: [
|
||||||
|
{xpr:[
|
||||||
|
{ref:['x']}, '=', {val:1},
|
||||||
|
'or',
|
||||||
|
{ref:['y']}, '=', {val:2},
|
||||||
|
]},
|
||||||
|
'and',
|
||||||
|
{ref:['z']}, '=', {val:3},
|
||||||
|
]
|
||||||
|
}})
|
||||||
|
|
||||||
|
expect (
|
||||||
|
SELECT.from(Foo).where({a:1}).or({x:1,or:{y:2}}).and({z:3})
|
||||||
|
).to.eql ({ SELECT: {
|
||||||
|
from: {ref:['Foo']},
|
||||||
|
where: [
|
||||||
|
{ref:['a']}, '=', {val:1},
|
||||||
|
'or',
|
||||||
|
{xpr:[
|
||||||
|
{ref:['x']}, '=', {val:1},
|
||||||
|
'or',
|
||||||
|
{ref:['y']}, '=', {val:2},
|
||||||
|
]},
|
||||||
|
'and',
|
||||||
|
{ref:['z']}, '=', {val:3},
|
||||||
|
]
|
||||||
|
}})
|
||||||
|
|
||||||
|
expect (
|
||||||
|
{ SELECT: SELECT.from(Foo).where({x:1,or:{y:2}}).SELECT }
|
||||||
|
).to.eql ({ SELECT: {
|
||||||
|
from: {ref:['Foo']},
|
||||||
|
where: [
|
||||||
|
{ref:['x']}, '=', {val:1},
|
||||||
|
'or',
|
||||||
|
{ref:['y']}, '=', {val:2},
|
||||||
|
]
|
||||||
|
}})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
expect (
|
expect (
|
||||||
SELECT.from(Foo).where({x:1,and:{y:2}}).or({z:3})
|
SELECT.from(Foo).where({x:1,and:{y:2}}).or({z:3})
|
||||||
|
|||||||
@@ -5,21 +5,10 @@ describe('cap/samples - Localized Data', () => {
|
|||||||
else cds.User = cds.User.Privileged // hard core monkey patch for older cds releases
|
else cds.User = cds.User.Privileged // hard core monkey patch for older cds releases
|
||||||
|
|
||||||
it('serves localized $metadata documents', async () => {
|
it('serves localized $metadata documents', async () => {
|
||||||
const { data } = await GET`/browse/$metadata?sap-language=de`
|
const { data } = await GET(`/browse/$metadata?sap-language=de`, { headers: { 'accept-language': 'de' }})
|
||||||
expect(data).to.contain('<Annotation Term="Common.Label" String="Währung"/>')
|
expect(data).to.contain('<Annotation Term="Common.Label" String="Währung"/>')
|
||||||
})
|
})
|
||||||
|
|
||||||
it('supports sap-language param', async () => {
|
|
||||||
const { data } = await GET(`/browse/Books?$select=title,author` + '&sap-language=de')
|
|
||||||
expect(data.value).to.containSubset([
|
|
||||||
{ title: 'Sturmhöhe', author: 'Emily Brontë' },
|
|
||||||
{ title: 'Jane Eyre', author: 'Charlotte Brontë' },
|
|
||||||
{ title: 'The Raven', author: 'Edgar Allen Poe' },
|
|
||||||
{ title: 'Eleonora', author: 'Edgar Allen Poe' },
|
|
||||||
{ title: 'Catweazle', author: 'Richard Carpenter' },
|
|
||||||
])
|
|
||||||
})
|
|
||||||
|
|
||||||
it('supports accept-language header', async () => {
|
it('supports accept-language header', async () => {
|
||||||
const { data } = await GET(`/browse/Books?$select=title,author`, {
|
const { data } = await GET(`/browse/Books?$select=title,author`, {
|
||||||
headers: { 'Accept-Language': 'de' },
|
headers: { 'Accept-Language': 'de' },
|
||||||
|
|||||||
Reference in New Issue
Block a user