Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemathinc
GitHub Repository: sagemathinc/cocalc
Path: blob/master/src/packages/next/pages/api/v2/guesslang.test.ts
5956 views
1
/** @jest-environment node */
2
3
import { createMocks } from "lib/api/test-framework";
4
import handler from "./guesslang";
5
6
describe("/api/v2/guesslang", () => {
7
test("guess language of some code", async () => {
8
const { req, res } = createMocks({
9
method: "POST",
10
url: "/api/v2/guesslang",
11
body: {
12
code: "for i in range(10):\n print(i**2)",
13
cutoff: 3,
14
},
15
});
16
17
await handler(req, res);
18
expect(res.statusCode).toBe(200);
19
const data = res._getJSONData();
20
expect(data.result.length).toBe(3);
21
expect(data.result[0]).toEqual("py");
22
});
23
24
test("default number of responses is 5", async () => {
25
const { req, res } = createMocks({
26
method: "POST",
27
url: "/api/v2/guesslang",
28
body: { code: "for i in range(10):\n print(i**2)" },
29
});
30
31
await handler(req, res);
32
33
expect(res.statusCode).toBe(200);
34
const data = res._getJSONData();
35
expect(data.result.length).toBe(5);
36
});
37
38
test("error if code not given", async () => {
39
const { req, res } = createMocks({
40
method: "POST",
41
url: "/api/v2/guesslang",
42
body: {},
43
});
44
45
await handler(req, res);
46
expect(res.statusCode).toBe(400);
47
});
48
49
test("error if code is not a string", async () => {
50
const { req, res } = createMocks({
51
method: "POST",
52
url: "/api/v2/guesslang",
53
body: { code: 10 },
54
});
55
56
await handler(req, res);
57
expect(res.statusCode).toBe(400);
58
});
59
60
test("no error if extra param", async () => {
61
const cutoff = 7;
62
const { req, res } = createMocks({
63
method: "POST",
64
url: "/api/v2/guesslang",
65
body: {
66
code: "for i in range(10):\n print(i**2)",
67
foo: "bar",
68
cutoff,
69
},
70
});
71
72
await handler(req, res);
73
expect(res.statusCode).toBe(200);
74
const data = res._getJSONData();
75
expect(data.result.length).toBe(cutoff);
76
});
77
});
78
79