Merge branch 'main' into fiori-ext

This commit is contained in:
Christian Georgi
2022-09-23 10:25:25 +02:00
committed by GitHub
5 changed files with 87 additions and 40 deletions

View File

@@ -5,7 +5,7 @@ service UserService {
/**
* The current user
*/
@odata.singleton entity me {
@odata.singleton entity me @cds.persistence.skip {
id : String; // user id
locale : String;
tenant : String;

View File

@@ -2,12 +2,12 @@
* Exposes data + entity metadata
*/
@requires:'authenticated-user'
service DataService @( path:'-data' ) {
@odata service DataService @( path:'-data' ) {
/**
* Metadata like name and columns/elements
*/
entity Entities {
entity Entities @cds.persistence.skip {
key name : String;
columns: Composition of many {
name : String;
@@ -19,7 +19,7 @@ service DataService @( path:'-data' ) {
/**
* The actual data, organized by column name
*/
entity Data {
entity Data @cds.persistence.skip {
record : array of {
column : String;
data : String;

33
package-lock.json generated
View File

@@ -24,6 +24,7 @@
}
},
"bookshop": {
"name": "@capire/bookshop",
"version": "1.0.0",
"dependencies": {
"@sap/cds": ">=5.9",
@@ -32,6 +33,7 @@
}
},
"bookstore": {
"name": "@capire/bookstore",
"version": "1.0.0",
"dependencies": {
"@capire/bookshop": "*",
@@ -44,18 +46,21 @@
}
},
"common": {
"name": "@capire/common",
"version": "1.0.0",
"dependencies": {
"@sap/cds": "*"
}
},
"data-viewer": {
"name": "@capire/data-viewer",
"version": "0.1.0",
"dependencies": {
"@sap/cds": ">=5.0.4"
}
},
"fiori": {
"name": "@capire/fiori",
"version": "1.0.0",
"dependencies": {
"@capire/bookstore": "*",
@@ -83,6 +88,7 @@
}
},
"hello": {
"name": "@capire/hello-world",
"version": "1.0.0",
"dependencies": {
"@sap/cds": ">=5.0.4"
@@ -94,6 +100,7 @@
}
},
"media": {
"name": "@capire/media",
"version": "1.0.0",
"dependencies": {
"lokijs": "^1.5.6"
@@ -448,9 +455,9 @@
}
},
"node_modules/@sap/cds": {
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/@sap/cds/-/cds-6.1.1.tgz",
"integrity": "sha512-oOdwHpzPnpt10bJ94E8Umq8Y9uuA+1mpEH9zjQNB/jynNqSMuvM1/68ZAsndhL1pSgw49o8W6b83cKJNUVyzfw==",
"version": "6.1.3",
"resolved": "https://registry.npmjs.org/@sap/cds/-/cds-6.1.3.tgz",
"integrity": "sha512-yvL9lPonVwUx9Md1eylAtpY0JrlSMyoxZXnCA2q9lNoVNudmjPMynO5CJBfAYEaThZSqd2yMJg/+xyKy/mn3wg==",
"dependencies": {
"@sap/cds-compiler": "^3.0.0",
"@sap/cds-foss": "^4"
@@ -4038,9 +4045,9 @@
}
},
"node_modules/sqlite3": {
"version": "5.0.11",
"resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.11.tgz",
"integrity": "sha512-4akFOr7u9lJEeAWLJxmwiV43DJcGV7w3ab7SjQFAFaTVyknY3rZjvXTKIVtWqUoY4xwhjwoHKYs2HDW2SoHVsA==",
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.1.tgz",
"integrity": "sha512-mMinkrQr/LKJqFiFF+AF7imPSzRCCpTCreusZO3D/ssJHVjZOrbu2Caz+zPH5KTmGGXBxXMGSRDssL+44CLxvg==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
@@ -4440,6 +4447,7 @@
}
},
"orders": {
"name": "@capire/orders",
"version": "1.0.0",
"dependencies": {
"@capire/common": "*",
@@ -4447,6 +4455,7 @@
}
},
"reviews": {
"name": "@capire/reviews",
"version": "1.0.0",
"dependencies": {
"@sap/cds": ">=5",
@@ -4780,9 +4789,9 @@
}
},
"@sap/cds": {
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/@sap/cds/-/cds-6.1.1.tgz",
"integrity": "sha512-oOdwHpzPnpt10bJ94E8Umq8Y9uuA+1mpEH9zjQNB/jynNqSMuvM1/68ZAsndhL1pSgw49o8W6b83cKJNUVyzfw==",
"version": "6.1.3",
"resolved": "https://registry.npmjs.org/@sap/cds/-/cds-6.1.3.tgz",
"integrity": "sha512-yvL9lPonVwUx9Md1eylAtpY0JrlSMyoxZXnCA2q9lNoVNudmjPMynO5CJBfAYEaThZSqd2yMJg/+xyKy/mn3wg==",
"requires": {
"@sap/cds-compiler": "^3.0.0",
"@sap/cds-foss": "^4"
@@ -7615,9 +7624,9 @@
}
},
"sqlite3": {
"version": "5.0.11",
"resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.11.tgz",
"integrity": "sha512-4akFOr7u9lJEeAWLJxmwiV43DJcGV7w3ab7SjQFAFaTVyknY3rZjvXTKIVtWqUoY4xwhjwoHKYs2HDW2SoHVsA==",
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.1.tgz",
"integrity": "sha512-mMinkrQr/LKJqFiFF+AF7imPSzRCCpTCreusZO3D/ssJHVjZOrbu2Caz+zPH5KTmGGXBxXMGSRDssL+44CLxvg==",
"dev": true,
"requires": {
"@mapbox/node-pre-gyp": "^1.0.0",

View File

@@ -411,18 +411,67 @@ describe('cds.ql → cqn', () => {
]
}})
expect (
SELECT.from(Foo).where({x:1,or:{y:2}})
).to.eql (
CQL`SELECT from Foo where x=1 or y=2`
).to.eql ({ SELECT: {
from: {ref:['Foo']},
where: [
{ref:['x']}, '=', {val:1},
'or',
{ref:['y']}, '=', {val:2}
]
}})
const ql_with_groups_fix = !!cds.ql.Query.prototype.flat
if (ql_with_groups_fix) {
expect (
SELECT.from(Foo).where({x:1}).or({y:2}).and({z:3})
).to.eql ({ SELECT: {
from: {ref:['Foo']},
where: [
{ref:['x']}, '=', {val:1},
'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 (
SELECT.from(Foo).where({x:1,and:{y:2}}).or({z:3})

View File

@@ -5,21 +5,10 @@ describe('cap/samples - Localized Data', () => {
else cds.User = cds.User.Privileged // hard core monkey patch for older cds releases
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"/>')
})
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 () => {
const { data } = await GET(`/browse/Books?$select=title,author`, {
headers: { 'Accept-Language': 'de' },