@tsed/formio
Version:
Formio package for Ts.ED framework
115 lines (101 loc) • 2.93 kB
text/typescript
import {Injectable} from "@tsed/di";
import {PlatformTest} from "@tsed/platform-http/testing";
import {FormioDatabase} from "./FormioDatabase.js";
import {FormioRepository} from "./FormioRepository.js";
@Injectable()
class PackagesRepository extends FormioRepository {
formName = "package";
}
describe("FormioRepository", () => {
beforeEach(() => PlatformTest.create());
afterEach(() => PlatformTest.reset());
describe("saveSubmission()", () => {
it("should create submission", async () => {
const database = {
formModel: {
findOne: vi.fn().mockResolvedValue({
_id: "id"
})
},
saveSubmission: vi.fn().mockImplementation((o) => o)
};
const service = await PlatformTest.invoke<PackagesRepository>(PackagesRepository, [
{
token: FormioDatabase,
use: database
}
]);
const result = await service.saveSubmission({
data: {
label: "label"
}
});
expect(result).toEqual({
data: {
label: "label"
},
form: "id"
});
expect(database.saveSubmission).toHaveBeenCalledWith({
data: {
label: "label"
},
form: "id"
});
});
});
describe("getSubmissions()", () => {
it("should get all saved submissions", async () => {
const database = {
formModel: {
findOne: vi.fn().mockResolvedValue({
_id: "id"
})
},
getSubmissions: vi.fn().mockResolvedValue([])
};
const service = await PlatformTest.invoke<PackagesRepository>(PackagesRepository, [
{
token: FormioDatabase,
use: database
}
]);
const submissions = await service.getSubmissions();
expect(submissions).toEqual([]);
expect(database.formModel.findOne).toHaveBeenCalledWith({
name: {
$eq: "package"
}
});
expect(database.getSubmissions).toHaveBeenCalledWith({form: "id"});
});
});
describe("findOneSubmission()", () => {
it("should find on submission", async () => {
const database = {
formModel: {
findOne: vi.fn().mockResolvedValue({
_id: "id"
})
},
submissionModel: {
findOne: vi.fn().mockResolvedValue({_id: "id"})
}
};
const service = await PlatformTest.invoke<PackagesRepository>(PackagesRepository, [
{
token: FormioDatabase,
use: database
}
]);
const submission = await service.findOneSubmission({});
expect(submission).toEqual({_id: "id"});
expect(database.formModel.findOne).toHaveBeenCalledWith({
name: {
$eq: "package"
}
});
expect(database.submissionModel.findOne).toHaveBeenCalledWith({deleted: null, form: "id"});
});
});
});