@guardian/google-admanager-api
Version:
Google Ad Manager API Client Library for NodeJs
101 lines • 5.03 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const node_test_1 = require("node:test");
const node_assert_1 = __importDefault(require("node:assert"));
const exceptions_handler_1 = require("../common/handlers/exceptions.handler");
const utils_1 = require("../common/utils");
(0, node_test_1.describe)("test StatementBuilder", () => {
(0, node_test_1.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;
node_assert_1.default.equal(query, "SELECT Id FROM table WHERE a = b AND b = c ORDER BY a ASC, b DESC LIMIT 200 OFFSET 1");
});
(0, node_test_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;
node_assert_1.default.equal(query, "SELECT Id FROM table WHERE a = b AND b = c ORDER BY a ASC, b DESC LIMIT 200 OFFSET 1");
});
(0, node_test_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;
node_assert_1.default.equal(query, "WHERE a = b AND b = c ORDER BY a ASC, b DESC LIMIT 200 OFFSET 1");
});
(0, node_test_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;
node_assert_1.default.equal(query, "WHERE a = b AND b = c ORDER BY a ASC, b DESC LIMIT 200");
});
(0, node_test_1.it)("to statement just limit", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder.limit(500).toStatement().query;
node_assert_1.default.equal(query, "LIMIT 500");
});
(0, node_test_1.it)("to statement limit and offset", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder
.limit(500)
.offset(1)
.where("a = b")
.orderBy("a");
node_assert_1.default.equal(query.toStatement().query, "WHERE a = b ORDER BY a LIMIT 500 OFFSET 1");
node_assert_1.default.equal(query.removeLimitAndOffset().toStatement().query, "WHERE a = b ORDER BY a");
});
(0, node_test_1.it)("to statement remove limit and offset", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder.limit(500).offset(1).toStatement().query;
node_assert_1.default.equal(query, "LIMIT 500 OFFSET 1");
});
(0, node_test_1.it)("to statement not initial offset", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder.limit(500).where("a = b").orderBy("a");
node_assert_1.default.equal(query.toStatement().query, "WHERE a = b ORDER BY a LIMIT 500");
node_assert_1.default.equal(query.increaseOffsetBy(120).toStatement().query, "WHERE a = b ORDER BY a LIMIT 500 OFFSET 120");
});
(0, node_test_1.it)("to statement with initial offset", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder
.limit(500)
.offset(10)
.where("a = b")
.orderBy("a");
node_assert_1.default.equal(query.toStatement().query, "WHERE a = b ORDER BY a LIMIT 500 OFFSET 10");
node_assert_1.default.equal(query.increaseOffsetBy(30).toStatement().query, "WHERE a = b ORDER BY a LIMIT 500 OFFSET 40");
});
(0, node_test_1.it)("to statement empty", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder.toStatement().query;
node_assert_1.default.equal(query, "");
});
(0, node_test_1.it)("to statement offset without limit", () => {
const statementBuilder = new utils_1.StatementBuilder();
const query = statementBuilder.offset(500);
node_assert_1.default.throws(() => query.toStatement(), exceptions_handler_1.InvalidOperationException);
});
});
//# sourceMappingURL=statementBuilder.spec.js.map