Files
cloud-cap-samples/media-store/test/media-service.test.js

68 lines
2.1 KiB
JavaScript

const cds = require("../../test/cds");
const { GET, expect } = cds.test("media-store").in(__dirname, "../../");
const {
FIRST_EMPLOYEE,
SECOND_EMPLOYEE_WITH_EXPANDED_FIELDS,
ALL_ALBUMS_WITH_TRACKS_BY_ARTIST,
CUSTOMER_WITH_THEIR_SUPPORT_REP,
EIGHTH_ALBUM_TRACKS_COUNT,
} = require("./data/media-service.mock");
describe("Media service", () => {
it("should bootstrap the services successfully", () => {
const { MediaService, db } = cds.services;
const { Employees } = MediaService.entities;
expect(MediaService).not.to.be.undefined;
expect(db).not.to.be.undefined;
expect(Employees).not.to.be.undefined;
});
describe("Employees", () => {
it("should return employee (ID=1)", async () => {
const { data } = await GET("/media/Employees(1)");
expect(data).to.eql(FIRST_EMPLOYEE);
});
it("should return employee (ID=2) with subordinates and whom he reports to", async () => {
const { data } = await GET(
`/media/Employees(2)?$expand=subordinates,reportsTo`
);
expect(data).to.eql(SECOND_EMPLOYEE_WITH_EXPANDED_FIELDS);
});
});
describe("Albums", () => {
it("should return all albums with tracks by artist", async () => {
const { data } = await GET(
`/media/Albums?$filter=artist_ID eq 1&$expand=tracks`
);
expect(data).to.eql(ALL_ALBUMS_WITH_TRACKS_BY_ARTIST);
});
});
describe("Customers", () => {
it("should return customer with their invoices", async () => {
const { data } = await GET(`/media/Customers(1)?$expand=supportRep`);
expect(data).to.eql(CUSTOMER_WITH_THEIR_SUPPORT_REP);
});
});
describe("Playlists", () => {
it("should return playlist with their tracks", async () => {
const { data } = await GET(`/media/Customers(1)?$expand=supportRep`);
expect(data).to.eql(CUSTOMER_WITH_THEIR_SUPPORT_REP);
});
});
describe("Tracks", () => {
it("should return the number of tracks by album", async () => {
const { data } = await GET(
`/media/PlaylistTrack/$count?$filter=playlist_ID eq 8`
);
expect(data).to.eql(EIGHTH_ALBUM_TRACKS_COUNT);
});
});
});