Presupuestador_web/server/src/contexts/sales/infrastructure/sequelize/quoteChapter.model.test.ts

26 lines
1.4 KiB
TypeScript

import { DataTypes, Sequelize } from "sequelize";
import initQuote, { Quote_Model } from "./quote.model";
import initItems, { QuoteItem_Model } from "./quoteItem.model";
import initChapters, { QuoteChapter_Model } from "./quoteChapter.model";
it("registers chapter metadata, quote associations and legacy defaults without connecting", () => {
const connection = new Sequelize("metadata_test", "", "", { dialect: "mysql", logging: false });
connection.define("Dealer_Model", { id: { type: DataTypes.UUID, primaryKey: true } });
initQuote(connection);
initItems(connection);
initChapters(connection);
Quote_Model.associate(connection);
QuoteItem_Model.associate(connection);
QuoteChapter_Model.associate(connection);
expect(QuoteChapter_Model.primaryKeyAttributes).toEqual(["quote_id", "chapter_id"]);
expect(Quote_Model.associations.chapters.target).toBe(QuoteChapter_Model);
expect(QuoteChapter_Model.associations.quote.target).toBe(Quote_Model);
expect(Quote_Model.getAttributes().show_chapter_line_amounts.defaultValue).toBe(true);
expect(QuoteItem_Model.getAttributes().chapter_id.allowNull).toBe(true);
expect(QuoteItem_Model.getAttributes().chapter_id.defaultValue).toBeNull();
expect(QuoteChapter_Model.options.timestamps).toBe(false);
expect(QuoteChapter_Model.options.indexes).toEqual(expect.arrayContaining([
expect.objectContaining({ fields: ["quote_id", "position"] }),
]));
});