add tests for migrations (#39)
This commit is contained in:
parent
2edaa79bec
commit
cfd8d288d4
149
.github/workflows/test.yml
vendored
149
.github/workflows/test.yml
vendored
@ -20,31 +20,6 @@ jobs:
|
||||
name: Run linters
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
|
||||
services:
|
||||
maria:
|
||||
image: mariadb
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
MYSQL_DATABASE: ohmyform
|
||||
options: >-
|
||||
--health-cmd "mysqladmin ping"
|
||||
--health-interval 10s
|
||||
--health-timeout 5s
|
||||
--health-retries 5
|
||||
|
||||
postgres:
|
||||
image: postgres:10-alpine
|
||||
env:
|
||||
POSTGRES_USER: root
|
||||
POSTGRES_PASSWORD: root
|
||||
POSTGRES_DB: ohmyform
|
||||
options: >-
|
||||
--health-cmd pg_isready
|
||||
--health-interval 10s
|
||||
--health-timeout 5s
|
||||
--health-retries 5
|
||||
|
||||
steps:
|
||||
- name: Check out Git repository
|
||||
uses: actions/checkout@v2
|
||||
@ -67,20 +42,136 @@ jobs:
|
||||
- name: Typecheck
|
||||
uses: andoshin11/typescript-error-reporter-action@v1.0.2
|
||||
|
||||
run-postgres:
|
||||
name: Run Postgres
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:10-alpine
|
||||
env:
|
||||
POSTGRES_USER: root
|
||||
POSTGRES_PASSWORD: root
|
||||
POSTGRES_DB: ohmyform
|
||||
ports:
|
||||
- 5432:5432
|
||||
options: >-
|
||||
--health-cmd pg_isready
|
||||
--health-interval 10s
|
||||
--health-timeout 5s
|
||||
--health-retries 5
|
||||
|
||||
steps:
|
||||
- name: Check out Git repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- name: Install Node.js dependencies
|
||||
run: yarn install --frozen-lockfile --silent
|
||||
|
||||
- name: PostgreSQL Migrations
|
||||
run: yarn typeorm migration:run
|
||||
env:
|
||||
DATABASE_DRIVER: postgres
|
||||
DATABASE_URL: postgresql://root@127.0.0.1:5432/ohmyform
|
||||
|
||||
TYPEORM_CONNECTION: postgres
|
||||
TYPEORM_HOST: localhost
|
||||
TYPEORM_PORT: 5432
|
||||
TYPEORM_USERNAME: root
|
||||
TYPEORM_PASSWORD: root
|
||||
TYPEORM_DATABASE: ohmyform
|
||||
TYPEORM_AUTO_SCHEMA_SYNC: false
|
||||
TYPEORM_ENTITIES: src/entity/**/*.ts
|
||||
TYPEORM_SUBSCRIBERS: src/subscriber/**/*.ts
|
||||
TYPEORM_MIGRATIONS: src/migrations/postgres/**/*.ts
|
||||
TYPEORM_MIGRATIONS_TRANSACTION_MODE: 'each'
|
||||
TYPEORM_ENTITIES_DIR: src/entity
|
||||
TYPEORM_MIGRATIONS_DIR: src/migrations/postgres
|
||||
TYPEORM_SUBSCRIBERS_DIR: src/subscriber
|
||||
|
||||
run-mariadb:
|
||||
name: Run MariaDB
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
services:
|
||||
mariadb:
|
||||
image: mariadb
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
MYSQL_DATABASE: ohmyform
|
||||
ports:
|
||||
- 3306:3306
|
||||
options: >-
|
||||
--health-cmd "mysqladmin ping"
|
||||
--health-interval 10s
|
||||
--health-timeout 5s
|
||||
--health-retries 5
|
||||
|
||||
steps:
|
||||
- name: Check out Git repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- name: Install Node.js dependencies
|
||||
run: yarn install --frozen-lockfile --silent
|
||||
|
||||
- name: MariaDB Migrations
|
||||
run: yarn typeorm migration:run
|
||||
env:
|
||||
DATABASE_DRIVER: mariadb
|
||||
DATABASE_URL: mysql://root@127.0.0.1:3306/ohmyform
|
||||
|
||||
TYPEORM_CONNECTION: mariadb
|
||||
TYPEORM_HOST: localhost
|
||||
TYPEORM_PORT: 3306
|
||||
TYPEORM_USERNAME: root
|
||||
TYPEORM_PASSWORD: root
|
||||
TYPEORM_DATABASE: ohmyform
|
||||
TYPEORM_AUTO_SCHEMA_SYNC: false
|
||||
TYPEORM_ENTITIES: src/entity/**/*.ts
|
||||
TYPEORM_SUBSCRIBERS: src/subscriber/**/*.ts
|
||||
TYPEORM_MIGRATIONS: src/migrations/mariadb/**/*.ts
|
||||
TYPEORM_MIGRATIONS_TRANSACTION_MODE: 'each'
|
||||
TYPEORM_ENTITIES_DIR: src/entity
|
||||
TYPEORM_MIGRATIONS_DIR: src/migrations/mariadb
|
||||
TYPEORM_SUBSCRIBERS_DIR: src/subscriber
|
||||
|
||||
run-sqlite:
|
||||
name: Run SQLite
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Check out Git repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- name: Install Node.js dependencies
|
||||
run: yarn install --frozen-lockfile --silent
|
||||
|
||||
- name: SQLite Migrations
|
||||
run: yarn typeorm migration:run
|
||||
run: yarn typeorm migration:run --transaction none
|
||||
env:
|
||||
DATABASE_DRIVER: sqlite
|
||||
DATABASE_URL: sqlite://data.sqlite
|
||||
|
||||
TYPEORM_CONNECTION: sqlite
|
||||
TYPEORM_USERNAME: root
|
||||
TYPEORM_DATABASE: data.sqlite
|
||||
TYPEORM_AUTO_SCHEMA_SYNC: false
|
||||
TYPEORM_ENTITIES: src/entity/**/*.ts
|
||||
TYPEORM_SUBSCRIBERS: src/subscriber/**/*.ts
|
||||
TYPEORM_MIGRATIONS: src/migrations/sqlite/**/*.ts
|
||||
TYPEORM_MIGRATIONS_TRANSACTION_MODE: 'none'
|
||||
TYPEORM_ENTITIES_DIR: src/entity
|
||||
TYPEORM_MIGRATIONS_DIR: src/migrations/sqlite
|
||||
TYPEORM_SUBSCRIBERS_DIR: src/subscriber
|
||||
|
||||
@ -22,7 +22,8 @@
|
||||
"test:e2e": "jest --config ./test/jest-e2e.json",
|
||||
"typeorm:sqlite": "cross-env TS_NODE_TRANSPILE_ONLY=true ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js -f ormconfig_sqlite.json",
|
||||
"typeorm:postgres": "cross-env TS_NODE_TRANSPILE_ONLY=true ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js -f ormconfig_postgres.json",
|
||||
"typeorm:mariadb": "cross-env TS_NODE_TRANSPILE_ONLY=true ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js -f ormconfig_mariadb.json"
|
||||
"typeorm:mariadb": "cross-env TS_NODE_TRANSPILE_ONLY=true ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js -f ormconfig_mariadb.json",
|
||||
"typeorm": "cross-env TS_NODE_TRANSPILE_ONLY=true ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ardatan/aggregate-error": "^0.0.6",
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
import { MigrationInterface, QueryRunner } from 'typeorm'
|
||||
import { QueryRunner } from 'typeorm'
|
||||
import { SqliteMigration } from '../sqlite.migration'
|
||||
|
||||
export class initial1619723437787 implements MigrationInterface {
|
||||
export class initial1619723437787 extends SqliteMigration {
|
||||
name = 'initial1619723437787'
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
public async realUp(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query('CREATE TABLE "page" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "show" boolean NOT NULL, "title" varchar, "paragraph" text, "buttonText" varchar)');
|
||||
await queryRunner.query('CREATE TABLE "user" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "firstName" varchar, "lastName" varchar, "email" varchar(255) NOT NULL, "username" varchar(255) NOT NULL, "passwordHash" varchar NOT NULL, "salt" varchar, "provider" varchar NOT NULL, "roles" text NOT NULL, "language" varchar NOT NULL, "resetPasswordToken" varchar, "resetPasswordExpires" datetime, "token" varchar, "apiKey" varchar, "created" datetime NOT NULL DEFAULT (datetime(\'now\')), "lastModified" datetime NOT NULL DEFAULT (datetime(\'now\')), CONSTRAINT "UQ_e12875dfb3b1d92d7d7c5377e22" UNIQUE ("email"), CONSTRAINT "UQ_78a916df40e02a9deb1c4b75edb" UNIQUE ("username"))');
|
||||
await queryRunner.query('CREATE TABLE "form_field_logic" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "formula" varchar NOT NULL, "action" varchar(10) NOT NULL, "visible" boolean, "require" boolean, "disable" boolean, "enabled" boolean NOT NULL, "fieldId" integer, "jumpToId" integer, CONSTRAINT "FK_6098b83f6759445d8cfdd03d545" FOREIGN KEY ("fieldId") REFERENCES "form_field" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_4a8019f2b753cfb3216dc3001a6" FOREIGN KEY ("jumpToId") REFERENCES "form_field" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)');
|
||||
@ -16,13 +17,10 @@ export class initial1619723437787 implements MigrationInterface {
|
||||
await queryRunner.query('CREATE TABLE "form_visitor" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "referrer" varchar, "ipAddr" varchar NOT NULL, "created" datetime NOT NULL DEFAULT (datetime(\'now\')), "updated" datetime NOT NULL DEFAULT (datetime(\'now\')), "formId" integer, "geoLocationCountry" varchar, "geoLocationCity" varchar, "deviceLanguage" varchar, "deviceType" varchar, "deviceName" varchar, CONSTRAINT "FK_72ade6c3a3e55d1fce94300f8b6" FOREIGN KEY ("formId") REFERENCES "form" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)');
|
||||
await queryRunner.query('CREATE TABLE "submission" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "ipAddr" varchar NOT NULL, "tokenHash" varchar NOT NULL, "timeElapsed" numeric NOT NULL, "percentageComplete" numeric NOT NULL, "created" datetime NOT NULL DEFAULT (datetime(\'now\')), "lastModified" datetime NOT NULL DEFAULT (datetime(\'now\')), "formId" integer, "visitorId" integer, "userId" integer, "geoLocationCountry" varchar, "geoLocationCity" varchar, "deviceLanguage" varchar, "deviceType" varchar, "deviceName" varchar, CONSTRAINT "FK_6090e1d5cbf3433ffd14e3b53e7" FOREIGN KEY ("formId") REFERENCES "form" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_95b73c7faf2c199f005fda5e8c8" FOREIGN KEY ("visitorId") REFERENCES "form_visitor" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_7bd626272858ef6464aa2579094" FOREIGN KEY ("userId") REFERENCES "user" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)');
|
||||
|
||||
|
||||
|
||||
|
||||
await queryRunner.query('CREATE TABLE "form" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar NOT NULL, "language" varchar(10) NOT NULL, "showFooter" boolean NOT NULL, "isLive" boolean NOT NULL, "created" datetime NOT NULL DEFAULT (datetime(\'now\')), "lastModified" datetime NOT NULL DEFAULT (datetime(\'now\')), "adminId" integer, "startPageId" integer, "endPageId" integer, "analyticsGacode" varchar, "designFont" varchar, "designColorsBackground" varchar, "designColorsQuestion" varchar, "designColorsAnswer" varchar, "designColorsButton" varchar, "designColorsButtonactive" varchar, "designColorsButtontext" varchar, CONSTRAINT "FK_a7cb33580bca2b362e5e34fdfcd" FOREIGN KEY ("adminId") REFERENCES "user" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_023d9cf1d97e93facc96c86ca70" FOREIGN KEY ("startPageId") REFERENCES "page" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT "FK_e5d158932e43cfbf9958931ee01" FOREIGN KEY ("endPageId") REFERENCES "page" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION)');
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
public async realDown(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query('DROP TABLE "form"');
|
||||
await queryRunner.query('DROP TABLE "submission"');
|
||||
await queryRunner.query('DROP TABLE "form_visitor"');
|
||||
|
||||
@ -1,13 +1,14 @@
|
||||
import { MigrationInterface, QueryRunner } from 'typeorm'
|
||||
import { QueryRunner } from 'typeorm'
|
||||
import { SqliteMigration } from '../sqlite.migration'
|
||||
|
||||
export class defaultValue1645952169100 implements MigrationInterface {
|
||||
export class defaultValue1645952169100 extends SqliteMigration {
|
||||
name = 'defaultValue1645952169100'
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
public async realUp(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query('ALTER TABLE "form_field" RENAME COLUMN "value" TO "defaultValue"');
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
public async realDown(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query('ALTER TABLE "form_field" RENAME COLUMN "defaultValue" TO "value"');
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user