mirror of
https://github.com/Instadapp/Swap-Aggregator-Subgraph.git
synced 2024-07-29 21:57:12 +00:00
196 lines
4.7 KiB
TypeScript
196 lines
4.7 KiB
TypeScript
import * as fse from "fs-extra";
|
|
import { expect } from "chai";
|
|
import path from "./assert_path";
|
|
import helper from "./helper";
|
|
import * as jetpack from "..";
|
|
|
|
describe("append", () => {
|
|
beforeEach(helper.setCleanTestCwd);
|
|
afterEach(helper.switchBackToCorrectCwd);
|
|
|
|
describe("appends String to file", () => {
|
|
const preparations = () => {
|
|
fse.writeFileSync("file.txt", "abc");
|
|
};
|
|
|
|
const expectations = () => {
|
|
path("file.txt").shouldBeFileWithContent("abcxyz");
|
|
};
|
|
|
|
it("sync", () => {
|
|
preparations();
|
|
jetpack.append("file.txt", "xyz");
|
|
expectations();
|
|
});
|
|
|
|
it("async", done => {
|
|
preparations();
|
|
jetpack.appendAsync("file.txt", "xyz").then(() => {
|
|
expectations();
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("appends Buffer to file", () => {
|
|
const preparations = () => {
|
|
fse.writeFileSync("file.bin", new Buffer([11]));
|
|
};
|
|
|
|
const expectations = () => {
|
|
path("file.bin").shouldBeFileWithContent(new Buffer([11, 22]));
|
|
};
|
|
|
|
it("sync", () => {
|
|
preparations();
|
|
jetpack.append("file.bin", new Buffer([22]));
|
|
expectations();
|
|
});
|
|
|
|
it("async", done => {
|
|
preparations();
|
|
jetpack.appendAsync("file.bin", new Buffer([22])).then(() => {
|
|
expectations();
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("if file doesn't exist creates it", () => {
|
|
const expectations = () => {
|
|
path("file.txt").shouldBeFileWithContent("xyz");
|
|
};
|
|
|
|
it("sync", () => {
|
|
jetpack.append("file.txt", "xyz");
|
|
expectations();
|
|
});
|
|
|
|
it("async", done => {
|
|
jetpack.appendAsync("file.txt", "xyz").then(() => {
|
|
expectations();
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("if parent directory doesn't exist creates it", () => {
|
|
const expectations = () => {
|
|
path("dir/dir/file.txt").shouldBeFileWithContent("xyz");
|
|
};
|
|
|
|
it("sync", () => {
|
|
jetpack.append("dir/dir/file.txt", "xyz");
|
|
expectations();
|
|
});
|
|
|
|
it("async", done => {
|
|
jetpack.appendAsync("dir/dir/file.txt", "xyz").then(() => {
|
|
expectations();
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("respects internal CWD of jetpack instance", () => {
|
|
const preparations = () => {
|
|
fse.outputFileSync("a/b.txt", "abc");
|
|
};
|
|
|
|
const expectations = () => {
|
|
path("a/b.txt").shouldBeFileWithContent("abcxyz");
|
|
};
|
|
|
|
it("sync", () => {
|
|
const jetContext = jetpack.cwd("a");
|
|
preparations();
|
|
jetContext.append("b.txt", "xyz");
|
|
expectations();
|
|
});
|
|
|
|
it("async", done => {
|
|
const jetContext = jetpack.cwd("a");
|
|
preparations();
|
|
jetContext.appendAsync("b.txt", "xyz").then(() => {
|
|
expectations();
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("input validation", () => {
|
|
const tests = [
|
|
{ type: "sync", method: jetpack.append as any, methodName: "append" },
|
|
{
|
|
type: "async",
|
|
method: jetpack.appendAsync as any,
|
|
methodName: "appendAsync"
|
|
}
|
|
];
|
|
|
|
describe('"path" argument', () => {
|
|
tests.forEach(test => {
|
|
it(test.type, () => {
|
|
expect(() => {
|
|
test.method(undefined, "xyz");
|
|
}).to.throw(
|
|
`Argument "path" passed to ${
|
|
test.methodName
|
|
}(path, data, [options]) must be a string. Received undefined`
|
|
);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('"data" argument', () => {
|
|
tests.forEach(test => {
|
|
it(test.type, () => {
|
|
expect(() => {
|
|
test.method("abc");
|
|
}).to.throw(
|
|
`Argument "data" passed to ${
|
|
test.methodName
|
|
}(path, data, [options]) must be a string or a buffer. Received undefined`
|
|
);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('"options" object', () => {
|
|
describe('"mode" argument', () => {
|
|
tests.forEach(test => {
|
|
it(test.type, () => {
|
|
expect(() => {
|
|
test.method("abc", "xyz", { mode: true });
|
|
}).to.throw(
|
|
`Argument "options.mode" passed to ${
|
|
test.methodName
|
|
}(path, data, [options]) must be a string or a number. Received boolean`
|
|
);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
if (process.platform !== "win32") {
|
|
describe("sets file mode on created file (unix only)", () => {
|
|
const expectations = () => {
|
|
path("file.txt").shouldHaveMode("711");
|
|
};
|
|
|
|
it("sync", () => {
|
|
jetpack.append("file.txt", "abc", { mode: "711" });
|
|
expectations();
|
|
});
|
|
|
|
it("async", done => {
|
|
jetpack.appendAsync("file.txt", "abc", { mode: "711" }).then(() => {
|
|
expectations();
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
}
|
|
});
|