many-cloud
Version:
A Node module for abstracting file management and interfacing with a variety of cloud storages.
70 lines (63 loc) • 2.19 kB
JavaScript
describe("delete_folder", () => {
describe("when all operations are successfull", () => {
const initial_folder_key = "first_folder";
const recursive_folder_key = "second_folder";
let func, data, result, delete_file_fn;
beforeEach(async () => {
delete_file_fn = jest.fn().mockImplementation(() => {
return new Promise((resolve, reject) => {
resolve();
});
});
data = {
list_all_files: jest.fn().mockImplementation(folderID => {
return new Promise((resolve, reject) => {
if (folderID === initial_folder_key) {
resolve({
Contents: [{ Key: "first_file" }, { Key: "second_file" }],
CommonPrefixes: [{ Prefix: recursive_folder_key + "/" }]
});
} else if (folderID === recursive_folder_key) {
resolve({
Contents: [
{ Key: "recursive_first_file" },
{ Key: "recursive_second_file" }
],
CommonPrefixes: []
});
}
});
}),
delete_file: delete_file_fn
};
func = require("../delete_folder")(data);
result = await func(initial_folder_key);
});
it("resolves with undefined", () => {
expect(result).toBeUndefined();
});
it("calls list_all_files twice", () => {
expect(data.list_all_files).toHaveBeenCalledTimes(2);
});
it("calls delete_file with all files that should be deleted", () => {
expect(delete_file_fn.mock.calls).toMatchSnapshot();
});
});
describe("when list_all_files throws an error", () => {
const expected_error = "we do what we must because we can";
let func, data;
beforeEach(() => {
data = {
list_all_files: jest.fn().mockImplementation(folderID => {
return new Promise((resolve, reject) => {
reject(new Error(expected_error));
});
})
};
func = require("../delete_folder")(data);
});
it("rejects with the error", async () => {
await expect(func("1234")).rejects.toThrowErrorMatchingSnapshot();
});
});
});