Updating migration test case to check both env vars.
This commit is contained in:
parent
de9462403c
commit
c159ebba1f
|
@ -66,64 +66,69 @@ function oldLinkDocument(): Omit<LinkDocument, "tableId"> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function sqsDisabled(cb: () => Promise<void>) {
|
type SQSEnvVar = "SQS_MIGRATION_ENABLE" | "SQS_SEARCH_ENABLE"
|
||||||
await config.withEnv({ SQS_MIGRATION_ENABLE: "" }, cb)
|
|
||||||
|
async function sqsDisabled(envVar: SQSEnvVar, cb: () => Promise<void>) {
|
||||||
|
await config.withEnv({ [envVar]: "" }, cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
async function sqsEnabled(cb: () => Promise<void>) {
|
async function sqsEnabled(envVar: SQSEnvVar, cb: () => Promise<void>) {
|
||||||
await config.withEnv({ SQS_MIGRATION_ENABLE: "1" }, cb)
|
await config.withEnv({ [envVar]: "1" }, cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
beforeAll(async () => {
|
describe.each(["SQS_MIGRATION_ENABLE", "SQS_SEARCH_ENABLE"] as SQSEnvVar[])(
|
||||||
await sqsDisabled(async () => {
|
"SQS migration with (%s)",
|
||||||
await config.init()
|
envVar => {
|
||||||
const table = await config.api.table.save(basicTable())
|
beforeAll(async () => {
|
||||||
tableId = table._id!
|
await sqsDisabled(envVar, async () => {
|
||||||
const db = dbCore.getDB(config.appId!)
|
await config.init()
|
||||||
// old link document
|
const table = await config.api.table.save(basicTable())
|
||||||
await db.put(oldLinkDocument())
|
tableId = table._id!
|
||||||
})
|
const db = dbCore.getDB(config.appId!)
|
||||||
})
|
// old link document
|
||||||
|
await db.put(oldLinkDocument())
|
||||||
describe("SQS migration", () => {
|
|
||||||
it("test migration runs as expected against an older DB", async () => {
|
|
||||||
const db = dbCore.getDB(config.appId!)
|
|
||||||
// confirm nothing exists initially
|
|
||||||
await sqsDisabled(async () => {
|
|
||||||
let error: any | undefined
|
|
||||||
try {
|
|
||||||
await db.get(SQLITE_DESIGN_DOC_ID)
|
|
||||||
} catch (err: any) {
|
|
||||||
error = err
|
|
||||||
}
|
|
||||||
expect(error).toBeDefined()
|
|
||||||
expect(error.status).toBe(404)
|
|
||||||
})
|
|
||||||
await sqsEnabled(async () => {
|
|
||||||
await processMigrations(config.appId!, MIGRATIONS)
|
|
||||||
const designDoc = await db.get<SQLiteDefinition>(SQLITE_DESIGN_DOC_ID)
|
|
||||||
expect(designDoc.sql.tables).toBeDefined()
|
|
||||||
const mainTableDef = designDoc.sql.tables[tableId]
|
|
||||||
expect(mainTableDef).toBeDefined()
|
|
||||||
expect(mainTableDef.fields[prefix("name")]).toEqual({
|
|
||||||
field: "name",
|
|
||||||
type: SQLiteType.TEXT,
|
|
||||||
})
|
})
|
||||||
expect(mainTableDef.fields[prefix("description")]).toEqual({
|
|
||||||
field: "description",
|
|
||||||
type: SQLiteType.TEXT,
|
|
||||||
})
|
|
||||||
|
|
||||||
const { tableId1, tableId2, rowId1, rowId2 } = oldLinkDocInfo()
|
|
||||||
const linkDoc = await db.get<LinkDocument>(oldLinkDocID())
|
|
||||||
expect(linkDoc.tableId).toEqual(
|
|
||||||
generateJunctionTableID(tableId1, tableId2)
|
|
||||||
)
|
|
||||||
// should have swapped the documents
|
|
||||||
expect(linkDoc.doc1.tableId).toEqual(tableId2)
|
|
||||||
expect(linkDoc.doc1.rowId).toEqual(rowId2)
|
|
||||||
expect(linkDoc.doc2.tableId).toEqual(tableId1)
|
|
||||||
expect(linkDoc.doc2.rowId).toEqual(rowId1)
|
|
||||||
})
|
})
|
||||||
})
|
|
||||||
})
|
it("test migration runs as expected against an older DB", async () => {
|
||||||
|
const db = dbCore.getDB(config.appId!)
|
||||||
|
// confirm nothing exists initially
|
||||||
|
await sqsDisabled(envVar, async () => {
|
||||||
|
let error: any | undefined
|
||||||
|
try {
|
||||||
|
await db.get(SQLITE_DESIGN_DOC_ID)
|
||||||
|
} catch (err: any) {
|
||||||
|
error = err
|
||||||
|
}
|
||||||
|
expect(error).toBeDefined()
|
||||||
|
expect(error.status).toBe(404)
|
||||||
|
})
|
||||||
|
await sqsEnabled(envVar, async () => {
|
||||||
|
await processMigrations(config.appId!, MIGRATIONS)
|
||||||
|
const designDoc = await db.get<SQLiteDefinition>(SQLITE_DESIGN_DOC_ID)
|
||||||
|
expect(designDoc.sql.tables).toBeDefined()
|
||||||
|
const mainTableDef = designDoc.sql.tables[tableId]
|
||||||
|
expect(mainTableDef).toBeDefined()
|
||||||
|
expect(mainTableDef.fields[prefix("name")]).toEqual({
|
||||||
|
field: "name",
|
||||||
|
type: SQLiteType.TEXT,
|
||||||
|
})
|
||||||
|
expect(mainTableDef.fields[prefix("description")]).toEqual({
|
||||||
|
field: "description",
|
||||||
|
type: SQLiteType.TEXT,
|
||||||
|
})
|
||||||
|
|
||||||
|
const { tableId1, tableId2, rowId1, rowId2 } = oldLinkDocInfo()
|
||||||
|
const linkDoc = await db.get<LinkDocument>(oldLinkDocID())
|
||||||
|
expect(linkDoc.tableId).toEqual(
|
||||||
|
generateJunctionTableID(tableId1, tableId2)
|
||||||
|
)
|
||||||
|
// should have swapped the documents
|
||||||
|
expect(linkDoc.doc1.tableId).toEqual(tableId2)
|
||||||
|
expect(linkDoc.doc1.rowId).toEqual(rowId2)
|
||||||
|
expect(linkDoc.doc2.tableId).toEqual(tableId1)
|
||||||
|
expect(linkDoc.doc2.rowId).toEqual(rowId1)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue