mirror of
https://github.com/usatiuk/writer.git
synced 2025-10-29 00:17:48 +01:00
156 lines
4.3 KiB
TypeScript
156 lines
4.3 KiB
TypeScript
import { expect } from "chai";
|
|
import { connect } from "config/database";
|
|
import * as request from "supertest";
|
|
import { getConnection } from "typeorm";
|
|
import { app } from "~app";
|
|
import { Document, IDocumentJSON } from "~entity/Document";
|
|
|
|
import { ISeed, seedDB } from "./util";
|
|
|
|
const callback = app.callback();
|
|
|
|
let seed: ISeed;
|
|
|
|
describe("docs", () => {
|
|
before(async () => {
|
|
await connect();
|
|
});
|
|
|
|
after(async () => {
|
|
await getConnection().close();
|
|
});
|
|
|
|
beforeEach(async () => {
|
|
seed = await seedDB();
|
|
});
|
|
|
|
it("should create a document", async () => {
|
|
const response = await request(callback)
|
|
.post("/docs/new")
|
|
.set({
|
|
Authorization: `Bearer ${seed.user1.toJWT()}`,
|
|
"Content-Type": "application/json",
|
|
})
|
|
.send({ name: "Test1", content: "Test1" })
|
|
.expect(200);
|
|
|
|
expect(response.body.error).to.be.false;
|
|
|
|
const document = response.body.data as IDocumentJSON;
|
|
|
|
expect(document.name).to.be.equal("Test1");
|
|
|
|
const dbDocument = await Document.findOneOrFail({
|
|
id: document.id,
|
|
user: seed.user1.id as any,
|
|
});
|
|
|
|
expect(dbDocument.name).to.be.equal("Test1");
|
|
});
|
|
|
|
it("should update a document", async () => {
|
|
const response = await request(callback)
|
|
.patch(`/docs/byID/${seed.doc1.id}`)
|
|
.set({
|
|
Authorization: `Bearer ${seed.user1.toJWT()}`,
|
|
"Content-Type": "application/json",
|
|
})
|
|
.send({ name: "Test1", content: "Test1" })
|
|
.expect(200);
|
|
|
|
expect(response.body.error).to.be.false;
|
|
|
|
const document = response.body.data as IDocumentJSON;
|
|
|
|
expect(document.name).to.be.equal("Test1");
|
|
|
|
const dbDocument = await Document.findOne({
|
|
id: seed.doc1.id,
|
|
user: seed.user1.id as any,
|
|
});
|
|
|
|
expect(dbDocument.name).to.be.equal("Test1");
|
|
expect(dbDocument.editedAt.getTime()).to.be.closeTo(
|
|
new Date().getTime(),
|
|
2000,
|
|
);
|
|
});
|
|
|
|
it("should list docs", async () => {
|
|
const response = await request(callback)
|
|
.get("/docs/list")
|
|
.set({
|
|
Authorization: `Bearer ${seed.user1.toJWT()}`,
|
|
})
|
|
.expect(200);
|
|
|
|
expect(response.body.error).to.be.false;
|
|
|
|
const documents = response.body.data as IDocumentJSON[];
|
|
|
|
const userDocs = [
|
|
seed.doc1.toJSON(seed.user1.id),
|
|
seed.doc2p.toJSON(seed.user1.id),
|
|
];
|
|
|
|
expect(documents).to.deep.equal(userDocs);
|
|
});
|
|
|
|
it("should get a shared document", async () => {
|
|
const response = await request(callback)
|
|
.get(`/docs/shared/${seed.user1.username}/${seed.doc2p.id}`)
|
|
.expect(200);
|
|
|
|
expect(response.body.error).to.be.false;
|
|
|
|
const document = response.body.data as IDocumentJSON;
|
|
|
|
const usedDoc = seed.doc2p.toJSON(seed.user1.id);
|
|
|
|
expect(document).to.deep.equal(usedDoc);
|
|
});
|
|
|
|
it("should get a document", async () => {
|
|
const response = await request(callback)
|
|
.get(`/docs/byID/${seed.doc1.id}`)
|
|
.set({
|
|
Authorization: `Bearer ${seed.user1.toJWT()}`,
|
|
})
|
|
.expect(200);
|
|
|
|
expect(response.body.error).to.be.false;
|
|
|
|
const document = response.body.data as IDocumentJSON;
|
|
|
|
const usedDoc = seed.doc1.toJSON(seed.user1.id);
|
|
|
|
expect(document).to.deep.equal(usedDoc);
|
|
});
|
|
|
|
it("should not get a document without jwt", async () => {
|
|
const response = await request(callback)
|
|
.get(`/docs/byID/${seed.doc1.id}`)
|
|
.set({
|
|
Authorization: `Bearer ${seed.user2.toJWT()}`,
|
|
})
|
|
.expect(404);
|
|
|
|
expect(response.body.error).to.be.equal("Not Found");
|
|
});
|
|
|
|
it("should delete a document", async () => {
|
|
const response = await request(callback)
|
|
.delete(`/docs/byID/${seed.doc1.id}`)
|
|
.set({
|
|
Authorization: `Bearer ${seed.user1.toJWT()}`,
|
|
})
|
|
.expect(200);
|
|
|
|
expect(response.body.error).to.be.false;
|
|
|
|
const dbDocument = await Document.findOne(seed.doc1.id);
|
|
|
|
expect(dbDocument).to.be.undefined;
|
|
});
|
|
});
|