Improve tests to also work with node --test

This commit is contained in:
Daniel Hutzel
2024-05-14 14:37:37 +02:00
parent 0f6809a45b
commit aaa94e2d5f
4 changed files with 84 additions and 87 deletions

View File

@@ -1,13 +1,10 @@
const cds = require ('@sap/cds') const cds = require ('@sap/cds')
describe('Hello world!', () => { describe('Hello world!', () => {
beforeAll (()=> process.env.CDS_TYPESCRIPT = true)
afterAll (()=> delete process.env.CDS_TYPESCRIPT)
const {GET} = cds.test.in(__dirname,'../srv').run('serve', 'world.cds') const {GET} = cds.test.in(__dirname,'../srv').run('serve', 'world.cds')
it('should say hello with class impl', async () => { it('should say hello with class impl', async () => {
const {data} = await GET`/say/hello(to='world')` const {data} = await GET`/say/hello(to='world')`
expect(data.value).toMatch(/Hello world.*typescript.*/i) expect(data.value).to.match(/Hello world.*typescript.*/i)
}) })
}) })

View File

@@ -1,7 +1,8 @@
describe('cds.ql → cqn', () => {
const cds = require('@sap/cds/lib') const cds = require('@sap/cds/lib')
const { expect } = cds.test const { expect } = cds.test
describe('cds.ql → cqn', () => {
const Foo = { name: 'Foo' } const Foo = { name: 'Foo' }
const Books = { name: 'capire.bookshop.Books' } const Books = { name: 'capire.bookshop.Books' }

View File

@@ -77,29 +77,27 @@ describe('cap/samples - Hierarchical Data', ()=>{
) )
}) })
it ('supports nested reads', async()=>{ it ('supports nested reads', ()=> expect (
expect (await
SELECT.one.from (Cats, c=>{ SELECT.one.from (Cats, c=>{
c.ID, c.name.as('parent'), c.children (c=>{ c.ID, c.name.as('parent'), c.children (c=>{
c.name.as('child') c.name.as('child')
}) })
}) .where ({name:'Cat'}) }) .where ({name:'Cat'})
) .to.eql ( ) .to.eventually.eql (
{ ID:101, parent:'Cat', children:[ { ID:101, parent:'Cat', children:[
{ child:'Kitty' }, { child:'Kitty' },
{ child:'Catwoman' }, { child:'Catwoman' },
]} ]}
) ))
})
it ('supports deeply nested reads', async()=>{ it ('supports deeply nested reads', ()=> expect (
expect (await SELECT.one.from (Cats, c=>{ SELECT.one.from (Cats, c=>{
c.ID, c.name, c.children ( c.ID, c.name, c.children (
c => { c.name }, c => { c.name },
{levels:3} {levels:3}
) )
}) .where ({name:'Cat'}) }) .where ({name:'Cat'})
) .to.eql ( ) .to.eventually.eql (
{ ID:101, name:'Cat', children:[ { ID:101, name:'Cat', children:[
{ name:'Kitty', children:[ { name:'Kitty', children:[
{ name:'Kitty Cat', children:[ { name:'Kitty Cat', children:[
@@ -108,18 +106,16 @@ describe('cap/samples - Hierarchical Data', ()=>{
{ name:'Catwoman', children:[ { name:'Catwoman', children:[
{ name:'Catalina', children:[] } ]}, { name:'Catalina', children:[] } ]},
]} ]}
) ))
})
it ('supports cascaded deletes', async()=>{ it ('supports cascaded deletes', async()=>{
const affectedRows = await DELETE.from (Cats) .where ({ID:[102,106]}) const affectedRows = await DELETE.from (Cats) .where ({ID:[102,106]})
expect (affectedRows) .to.be.greaterThan (0) expect (affectedRows) .to.be.greaterThan (0)
const expected = [ await expect (SELECT`ID,name`.from(Cats) ).to.eventually.eql ([
{ ID:100, name:'Some Cats...' }, { ID:100, name:'Some Cats...' },
{ ID:101, name:'Cat' }, { ID:101, name:'Cat' },
{ ID:108, name:'Catweazle' } { ID:108, name:'Catweazle' }
] ])
expect ( await SELECT`ID,name`.from(Cats) ).to.eql (expected)
}) })
}) })

View File

@@ -28,6 +28,8 @@ describe('cap/samples - Bookshop APIs', () => {
]) ])
}) })
describe('query options...', () => {
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` },
@@ -86,6 +88,7 @@ describe('cap/samples - Bookshop APIs', () => {
{ ID: 271, title: 'Catweazle' }, { ID: 271, title: 'Catweazle' },
]) ])
}) })
})
it('serves user info', async () => { it('serves user info', async () => {
const { data: alice } = await GET `/user/me` const { data: alice } = await GET `/user/me`