adding complete db migrations from posgres
This commit is contained in:
@@ -66,32 +66,58 @@ export class ApiSeeder {
|
||||
return res.json()
|
||||
}
|
||||
|
||||
// --- reference data (relies on DataSeeder's MAIN/SHOP/PCS/BOX/General Goods seed) -----
|
||||
// --- reference data: get-or-create ------------------------------------------------
|
||||
//
|
||||
// These used to assume DataSeeder had planted MAIN/SHOP warehouses, PCS/BOX UOMs and a
|
||||
// "General Goods" category, and threw if they were missing. That demo data was removed
|
||||
// with the MySQL port so a fresh database is production-shaped, so each helper now creates
|
||||
// what it needs. This also removes the suite's hidden dependency on seed data that a real
|
||||
// deployment would never have.
|
||||
|
||||
async firstWarehouse(): Promise<Warehouse> {
|
||||
const page = await this.get<{ items: Warehouse[] }>("/warehouses?page=1&pageSize=1")
|
||||
if (!page.items.length) throw new Error("No warehouses found - expected DataSeeder's MAIN warehouse to exist.")
|
||||
return page.items[0]
|
||||
if (page.items.length) return page.items[0]
|
||||
return this.createWarehouse("E2E Main")
|
||||
}
|
||||
|
||||
async secondWarehouse(): Promise<Warehouse> {
|
||||
const page = await this.get<{ items: Warehouse[] }>("/warehouses?page=1&pageSize=10")
|
||||
if (page.items.length < 2) throw new Error("Need at least 2 warehouses (DataSeeder seeds MAIN + SHOP).")
|
||||
return page.items[1]
|
||||
if (page.items.length >= 2) return page.items[1]
|
||||
await this.firstWarehouse()
|
||||
return this.createWarehouse("E2E Secondary")
|
||||
}
|
||||
|
||||
async firstUom(): Promise<Uom> {
|
||||
const page = await this.get<{ items: Uom[] }>("/uoms?page=1&pageSize=1")
|
||||
if (!page.items.length) throw new Error("No UOMs found - expected DataSeeder's PCS uom to exist.")
|
||||
return page.items[0]
|
||||
if (page.items.length) return page.items[0]
|
||||
return this.post<Uom>("/uoms", { name: `E2E-UOM-${uniqueSuffix()}` })
|
||||
}
|
||||
|
||||
async firstCategory(): Promise<Category> {
|
||||
const page = await this.get<{ items: Category[] }>("/categories?page=1&pageSize=1")
|
||||
if (!page.items.length) throw new Error("No categories found - expected DataSeeder's General Goods category.")
|
||||
if (page.items.length) return page.items[0]
|
||||
return this.post<Category>("/categories", { name: `E2E Category ${uniqueSuffix()}` })
|
||||
}
|
||||
|
||||
/** The deployment's default branch (BR-000), seeded by DataSeeder.EnsureDefaultBranchAsync. */
|
||||
async firstBranch(): Promise<{ branchId: number; code: string }> {
|
||||
const page = await this.get<{ items: { branchId: number; code: string }[] }>(
|
||||
"/branches?page=1&pageSize=1")
|
||||
if (!page.items.length) throw new Error("No branches found - expected the seeded BR-000 branch.")
|
||||
return page.items[0]
|
||||
}
|
||||
|
||||
async createWarehouse(namePrefix = "E2E Warehouse"): Promise<Warehouse> {
|
||||
const suffix = uniqueSuffix()
|
||||
// branchId is required whenever warehouse branching is enabled, which it is by default.
|
||||
const branchId = (await this.firstBranch()).branchId
|
||||
return this.post<Warehouse>("/warehouses", {
|
||||
code: `E2E-W-${suffix}`,
|
||||
name: `${namePrefix} ${suffix}`,
|
||||
branchId,
|
||||
})
|
||||
}
|
||||
|
||||
// --- writes used to build test fixtures -------------------------------------------
|
||||
|
||||
async createVendor(namePrefix = "E2E Vendor"): Promise<Vendor> {
|
||||
|
||||
Reference in New Issue
Block a user