mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-03-21 17:25:10 -05:00
* Refactor Teams.save Fixes a bug where passwords were changed every time a team was updated. * Refactor Teams to use lib/database * Add unit tests (This found a bug which has also been fixed) * Test more things --------- Co-authored-by: Mia <49593536+mia-pi-git@users.noreply.github.com>
62 lines
2.0 KiB
JavaScript
62 lines
2.0 KiB
JavaScript
"use strict";
|
|
const assert = require('assert').strict;
|
|
const { PGDatabase, SQL } = require('../../dist/lib/database');
|
|
|
|
const database = new PGDatabase();
|
|
const assertSQL = (sql, rawSql, args) => assert.deepEqual(
|
|
database._resolveSQL(sql), [rawSql, args || []]
|
|
);
|
|
|
|
describe("Postgres library", () => {
|
|
it("should support template strings", async () => {
|
|
assertSQL(SQL`INSERT INTO test (col1, col2) VALUES (${'a'}, ${'b'})`,
|
|
"INSERT INTO test (col1, col2) VALUES ($1, $2)", ["a", "b"]);
|
|
assertSQL(SQL`INSERT INTO test (${{ col1: "a", col2: "b" }})`,
|
|
`INSERT INTO test ("col1", "col2") VALUES ($1, $2)`, ["a", "b"]);
|
|
assertSQL(SQL`SELECT * FROM test ${SQL`WHERE `}${SQL`a = 1`} LIMIT 1`,
|
|
`SELECT * FROM test WHERE a = 1 LIMIT 1`);
|
|
assertSQL(SQL`SELECT ${undefined}1+1`,
|
|
`SELECT 1+1`);
|
|
assertSQL(SQL`SELECT ${[]}2+2`,
|
|
`SELECT 2+2`);
|
|
|
|
const constructed = SQL`SELECT `;
|
|
constructed.appendRaw(`3`);
|
|
constructed.append(SQL` + `);
|
|
constructed.append(3);
|
|
assertSQL(constructed, `SELECT 3 + $1`, [3]);
|
|
|
|
assertSQL(SQL`SELECT * FROM test ${[SQL`WHERE `, SQL`a = 2`]} LIMIT 1`,
|
|
`SELECT * FROM test WHERE a = 2 LIMIT 1`);
|
|
});
|
|
|
|
// only run these if you already have postgres configured
|
|
// TODO: update for new db
|
|
|
|
it.skip("Should be able to connect to a database", async () => {
|
|
this.database = new PGDatabase();
|
|
});
|
|
it.skip("Should be able to insert data", async () => {
|
|
await assert.doesNotThrowAsync(async () => {
|
|
await this.database.query(`CREATE TABLE test (col TEXT, col2 TEXT)`);
|
|
await this.database.query(
|
|
`INSERT INTO test (col, col2) VALUES ($1, $2)`,
|
|
['foo', 'bar']
|
|
);
|
|
});
|
|
});
|
|
it.skip("Should be able to run multiple statements in transaction", async () => {
|
|
await assert.doesNotThrowAsync(async () => {
|
|
await this.database.transaction(async worker => {
|
|
const tables = await worker.query(
|
|
`SELECT tablename FROM pg_catalog.pg_tables ` +
|
|
`WHERE tablename = 'test' LIMIT 1;`
|
|
);
|
|
for (const { tablename } of tables) {
|
|
await worker.query(`DROP TABLE ` + tablename);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
});
|