@guardian/google-admanager-api
Version:
Google Ad Manager API Client Library for NodeJs
101 lines • 4.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const exceptions_handler_1 = require("../common/handlers/exceptions.handler");
const utils_1 = require("../common/utils");
describe("test StatementBuilder", () => {
it("to statement for pql table", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder
.select("Id")
.from("table")
.where("a = b AND b = c")
.orderBy("a ASC, b DESC")
.limit(200)
.offset(1)
.toStatement().query;
expect(query).toBe("SELECT Id FROM table WHERE a = b AND b = c ORDER BY a ASC, b DESC LIMIT 200 OFFSET 1");
});
it("to statement with keywords", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder
.select("Id")
.from("FrOM table")
.where("WHERE a = b AND b = c")
.orderBy("order BY a ASC, b DESC")
.limit(200)
.offset(1)
.toStatement().query;
expect(query).toBe("SELECT Id FROM table WHERE a = b AND b = c ORDER BY a ASC, b DESC LIMIT 200 OFFSET 1");
});
it("to statement not pql table", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder
.where("a = b AND b = c")
.orderBy("a ASC, b DESC")
.limit(200)
.offset(1)
.toStatement().query;
expect(query).toBe("WHERE a = b AND b = c ORDER BY a ASC, b DESC LIMIT 200 OFFSET 1");
});
it("to statement not offset", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder
.where("a = b AND b = c")
.orderBy("a ASC, b DESC")
.limit(200)
.toStatement().query;
expect(query).toBe("WHERE a = b AND b = c ORDER BY a ASC, b DESC LIMIT 200");
});
it("to statement just limit", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder.limit(500).toStatement().query;
expect(query).toBe("LIMIT 500");
});
it("to statement limit and offset", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder
.limit(500)
.offset(1)
.where("a = b")
.orderBy("a");
expect(query.toStatement().query).toBe("WHERE a = b ORDER BY a LIMIT 500 OFFSET 1");
expect(query.removeLimitAndOffset().toStatement().query).toBe("WHERE a = b ORDER BY a");
});
it("to statement remove limit and offset", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder.limit(500).offset(1).toStatement().query;
expect(query).toBe("LIMIT 500 OFFSET 1");
});
it("to statement not initial offset", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder.limit(500).where("a = b").orderBy("a");
expect(query.toStatement().query).toBe("WHERE a = b ORDER BY a LIMIT 500");
expect(query.increaseOffsetBy(120).toStatement().query).toBe("WHERE a = b ORDER BY a LIMIT 500 OFFSET 120");
});
it("to statement with initial offset", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder
.limit(500)
.offset(10)
.where("a = b")
.orderBy("a");
expect(query.toStatement().query).toBe("WHERE a = b ORDER BY a LIMIT 500 OFFSET 10");
expect(query.increaseOffsetBy(30).toStatement().query).toBe("WHERE a = b ORDER BY a LIMIT 500 OFFSET 40");
});
it("to statement empty", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder.toStatement().query;
expect(query).toBe("");
});
it("to statement offset without limit", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder.offset(500);
try {
query.toStatement();
}
catch (error) {
expect(error).toBeInstanceOf(exceptions_handler_1.InvalidOperationException);
}
});
});
//# sourceMappingURL=statementBuilder.spec.js.map