forked from cap-js-community/odata-v2-adapter
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.test.js
133 lines (119 loc) · 4.43 KB
/
main.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
"use strict";
const cds = require("@sap/cds");
const supertest = require("supertest");
const util = require("../test/_env/util/request");
cds.test(__dirname + "/_env");
let request;
describe("postgres-main", () => {
beforeAll(async () => {
await global._init;
request = supertest(cds.app.server);
});
it("Index page including V2 links", async () => {
expect(cds.services["test.MainService"].$linkProviders.length).toEqual(2);
const provider = cds.services["test.MainService"].$linkProviders[0];
const link = provider("Header");
expect(link).toEqual({
href: "/odata/v2/main/Header",
name: "Header (V2)",
title: "OData V2",
});
});
it("HEAD service", async () => {
let response = await util.callHead(request, "/odata/v2/main");
expect(response.status).toEqual(200);
expect(response.text).not.toBeDefined();
expect(response.headers).toMatchObject({
"content-type": "application/json; charset=utf-8",
dataserviceversion: "2.0",
});
response = await util.callHead(request, "/odata/v2/main/Header");
expect(response.status).toEqual(405);
response = await util.callHead(request, "/odata/v2/main/Header", {
"content-type": "application/json",
});
expect(response.status).toEqual(405);
});
it("GET service JSON format", async () => {
let response = await util.callRead(request, "/odata/v2/main", {
accept: "application/json",
});
expect(response.body).toBeDefined();
expect(response.body.d.EntitySets.sort()).toMatchSnapshot();
response = await util.callRead(request, "/odata/v2/main/", {
accept: "application/json",
});
expect(response.body).toBeDefined();
expect(response.body.d.EntitySets.sort()).toMatchSnapshot();
response = await util.callRead(request, "/odata/v2/main/?$format=json");
expect(response.body).toBeDefined();
expect(response.body.d.EntitySets.sort()).toMatchSnapshot();
});
it("HEAD $metadata", async () => {
const response = await util.callHead(request, "/odata/v2/main/$metadata");
expect(response.status).toEqual(200);
expect(response.body).toBeDefined();
expect(response.headers).toMatchObject({
"content-type": "application/xml",
dataserviceversion: "2.0",
});
});
it("GET $metadata", async () => {
const response = await util.callRead(request, "/odata/v2/main/$metadata", {
accept: "application/xml",
});
expect(response.body).toBeDefined();
expect(response.text).toMatchSnapshot();
});
it("GET $metadata with query options", async () => {
const response = await util.callRead(request, "/odata/v2/main/$metadata?sap-value-list=none&sap-language=EN", {
accept: "application/xml",
});
expect(response.body).toBeDefined();
expect(response.text).toMatchSnapshot();
});
it("GET $metadata localized", async () => {
let response = await util.callRead(request, "/odata/v2/main/$metadata", {
accept: "application/xml",
"accept-language": "de",
});
expect(response.body).toBeDefined();
expect(response.text).toMatchSnapshot();
expect(response.text).toMatch(/Angelegt am/);
response = await util.callRead(request, "/odata/v2/main/$metadata", {
"accept-language": "de-DE",
});
expect(response.body).toBeDefined();
expect(response.text).toMatchSnapshot();
});
it("GET request", async () => {
let response = await util.callRead(request, "/odata/v2/main/Header");
expect(response.body).toBeDefined();
expect(response.body.d.results).toHaveLength(1);
response = await util.callRead(request, `/odata/v2/main/Header(guid'${response.body.d.results[0].ID}')`);
expect(response.body.d).toMatchObject({
ID: "e0582b6a-6d93-46d9-bd28-98723a285d40",
date: "/Date(1719446400000)/",
name: "Header",
time: "PT12H34M56S",
price: "12.34",
stock: 11,
country: "Germany",
currency: "EUR",
dateTime: "/Date(1704110400000+0000)/",
createdAt: "/Date(1704110400000+0000)/",
createdBy: "anonymous",
timestamp: "/Date(1704110400000+0000)/",
modifiedAt: "/Date(1704110400000+0000)/",
modifiedBy: "anonymous",
description: "This is a test Header",
__metadata: {
type: "test.MainService.Header",
uri: `http://${response.request.host.replace(
"127.0.0.1",
"localhost",
)}/odata/v2/main/Header(guid'e0582b6a-6d93-46d9-bd28-98723a285d40')`,
},
});
});
});