diff --git a/packages/bookstore/tests/books.cds b/packages/bookstore/tests/books.cds deleted file mode 100644 index 4c1309d9..00000000 --- a/packages/bookstore/tests/books.cds +++ /dev/null @@ -1,7 +0,0 @@ -using { sap.capire.products as my } from '../db/schema'; - -service BooksService { - entity Books as SELECT from my.Products; -} - -annotate cds.UUID with @odata.Type: 'Edm.String'; diff --git a/packages/bookstore/tests/localized-data.test.js b/packages/bookstore/tests/localized-data.test.js deleted file mode 100644 index acf35d44..00000000 --- a/packages/bookstore/tests/localized-data.test.js +++ /dev/null @@ -1,190 +0,0 @@ -const cds = require ('@sap/cds') - -describe('Localized data on db level', ()=>{ - - let db, Books - - it ('should deploy the db schema to sqlite in-memory', async()=>{ - db = await cds.deploy (__dirname+'/books') .to ('sqlite::memory:') - expect (db.model) .toBeDefined() - Books = db.entities('sap.capire.products').Products - expect (Books) .toBeDefined() - }) - - it ('should list all books with default language', async ()=>{ - const books = await SELECT.from (Books, b=>b.title) - expect (books) .toMatchObject([ - { title: 'Wuthering Heights' }, - { title: 'Jane Eyre' }, - { title: 'The Raven' }, - { title: 'Eleonora' }, - { title: 'Catweazle' } - ]) - }) - - - it ('should read translated texts from Books_texts', async ()=>{ - const texts = await SELECT ('locale','title').from (Books+'_texts') - expect (texts) .toMatchObject ([ - { locale: 'de', title: 'Sturmhöhe' }, - { locale: 'de', title: 'Jane Eyre' }, - { locale: 'de', title: 'Eleonora' } - ]) - }) - - it ('should read translated texts from Books.texts', async ()=>{ - const book = await SELECT.one.from (Books, b=>{ - b.ID, b.title, b.texts(t=> { - t.locale, t.title - }) - }) .where ({title:'Wuthering Heights'}) - expect (book) .toMatchObject ({ - title: 'Wuthering Heights', texts:[ - {locale:'de',title:'Sturmhöhe'} - ] - }) - }) - - it ('should insert books with translated texts', async ()=>{ - const n = await INSERT.into (Books) .entries ({ ID:444, title:'A New Book', texts:[ - {locale:'de', title:'Ein Neues Buch'}, - {locale:'fr', title:'Un Nouveau Livre'}, - ]}) - expect(n).toBe(3) - }) - - it ('should delete books w/ cascaded delete to texts', async()=>{ - const n = await DELETE.from(Books) .where ({ID:444}) - expect(n).toBe(3) - }) - -}) - - -describe('Localized data on service level', ()=>{ - - let srv, Books - - it ('should serve BooksService', async()=>{ - srv = await cds.serve('BooksService').from(__dirname+'/books') - expect (srv.model) .toBeDefined() - Books = srv.entities.Books - expect (Books) .toBeDefined() - }) - - it ('should list all books with default language', async ()=>{ - const books = await srv.read (Books, b=>b.title) - expect (books) .toMatchObject([ - { title: 'Wuthering Heights' }, - { title: 'Jane Eyre' }, - { title: 'The Raven' }, - { title: 'Eleonora' }, - { title: 'Catweazle' } - ]) - }) - - it ('should read Books with translated texts', async ()=>{ - const book = await srv.run ( - SELECT.from (Books, b=>{ b.ID, b.title, b.texts(t=> { - t.locale, t.title - })}) .where ({title:'Wuthering Heights'}) - ) - expect (book) .toMatchObject ([{ - title: 'Wuthering Heights', texts:[ - {locale:'de',title:'Sturmhöhe'} - ] - }]) - }) - - it ('should do the same with convenient method', async ()=>{ - const book = await srv.read (Books, b=>{ b.ID, b.title, b.texts(t=> { - t.locale, t.title - })}) .where ({title:'Wuthering Heights'}) - expect (book) .toMatchObject ([{ - title: 'Wuthering Heights', texts:[ - {locale:'de',title:'Sturmhöhe'} - ] - }]) - }) - - it ('should read single Book with translated texts', async ()=>{ - const book = await srv.run ( - SELECT.one.from (Books, b=>{ b.ID, b.title, b.texts(t=> { - t.locale, t.title - })}) .where ({title:'Wuthering Heights'}) - ) - expect (book) .toMatchObject ({ - title: 'Wuthering Heights', texts:[ - {locale:'de',title:'Sturmhöhe'} - ] - }) - }) - - it ('should insert books with translated texts', async ()=>{ - const book = { ID:444, title:'A New Book', texts:[ - {locale:'de', title:'Ein Neues Buch'}, - {locale:'fr', title:'Un Nouveau Livre'}, - ]} - const response = await srv.create (Books) .entries (book) - expect(response).toMatchObject(book) - }) - - it ('should delete books w/ cascaded delete to texts', async()=>{ - await srv.delete('Books') .where ({ID:444}) - }) -}) - - -describe('Localized data on OData level', () => { - - const app = require('express')() - const srv = require('supertest')(app) - - it ('should serve BooksService', async ()=>{ - await cds.serve('BooksService').from(__dirname+'/books') .in (app) - }) - - it('should list all books with default language', async () => { - const books = await srv.get('/books/Books/201/title') - expect(books.body).toMatchObject({'value': 'Wuthering Heights'}) - }) - - it('should read books with translated texts', async () => { - const books = await srv.get('/books/Books/201/title'). set('Accept-Language', 'de') - expect(books.body).toMatchObject({value: 'Sturmhöhe'}) - }) - - it('should expand translated texts in Book', async () => { - const books = await srv. get('/books/Books/201?$select=title&$expand=texts($select=locale,title)') - expect(books.body).toMatchObject({ - title: 'Wuthering Heights', - texts: [ - { locale: 'de', title: 'Sturmhöhe', }, - ], - }) - }) - - const book = { - title: 'New Book', descr: 'Lorem Ipsum', - texts: [ - { locale: 'de', title: 'Neues Buch', descr: 'Dolor sit amet' }, - { locale: 'fr', title: 'Nouveau Livre', descr: 'consetetur sadipscing elitr' } - ], - } - - it('should insert books with translated texts', async () => { - const {body} = await srv.post('/books/Books').send(book) - expect(body).toMatchObject(book) - book.ID = body.ID - }) - - it ('should read the newly created book', async()=>{ - const {body} = await srv.get('/books/Books/'+book.ID+'?$expand=texts').send(book) - expect(body).toMatchObject(book) - }) - - it ('should delete books w/ cascaded delete to texts', async()=>{ - await srv.delete('/books/Books/'+book.ID) - .expect(204) - }) -})