From 7fa421d03fe5a0df41730fa065394a58eaee57fc Mon Sep 17 00:00:00 2001 From: Ali Taheri Date: Sat, 10 Oct 2015 14:53:41 +0330 Subject: [PATCH] Added hasMany associations tests + tiny fix --- sequelize/sequelize-tests.ts | 50 ++++++++++++++++++++++++++++++++++-- sequelize/sequelize.d.ts | 2 +- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/sequelize/sequelize-tests.ts b/sequelize/sequelize-tests.ts index 12089371b0..d62b9d8824 100644 --- a/sequelize/sequelize-tests.ts +++ b/sequelize/sequelize-tests.ts @@ -225,7 +225,43 @@ product.createWarehouse(); product.createWarehouse({ id: 1, capacity: 10000 }); product.createWarehouse({ id: 1 }, { save: true, silent: true }).then(() => { }); -// TODO: hasMany +// hasMany +warehouse.getProducts(); +warehouse.getProducts({where: {}, scope: false}); +warehouse.getProducts({where: {}, scope: false}).then((products) => products[0].id); + +warehouse.setProducts(); +warehouse.setProducts([product]); +warehouse.setProducts([product], { validate: true }).then(() => {}); + +warehouse.addProducts(); +warehouse.addProducts([product]); +warehouse.addProducts([product, 2], { validate: false }).then(() => {}); + +warehouse.addProduct(); +warehouse.addProduct(product); +warehouse.addProduct(2, { validate: true }).then(() => {}); + +warehouse.createProduct(); +warehouse.createProduct({ id: 1, name: 'baz' }); +warehouse.createProduct({ id: 1 }, { silent: true }).then(() => { }); + +warehouse.removeProducts(); +warehouse.removeProducts([product]); +warehouse.removeProducts([product, 2], { validate: false }).then(() => {}); + +warehouse.removeProduct(); +warehouse.removeProduct(product); +warehouse.removeProduct(2, { validate: true }).then(() => {}); + +warehouse.hasProducts([product]); +warehouse.hasProducts([product, 2], { scope: 'bar' }).then((result:boolean) => {}); + +warehouse.hasProduct(product); +warehouse.hasProduct(2, { scope: 'baz' }).then((result:boolean) => {}); + +warehouse.countProducts(); +warehouse.countProducts({ scope: 'baz' }).then((result:number) => {}); // TODO: belongsToMany @@ -271,7 +307,17 @@ interface WarehouseAttributes { }; interface WarehouseInstance extends Sequelize.Instance, WarehouseAttributes { - + // hasMany association mixins: + getProducts: Sequelize.HasManyGetAssociationsMixin; + setProducts: Sequelize.HasManySetAssociationsMixin; + addProducts: Sequelize.HasManyAddAssociationsMixin; + addProduct: Sequelize.HasManyAddAssociationMixin; + createProduct: Sequelize.HasManyCreateAssociationMixin; + removeProduct: Sequelize.HasManyRemoveAssociationMixin; + removeProducts: Sequelize.HasManyRemoveAssociationsMixin; + hasProduct: Sequelize.HasManyHasAssociationMixin; + hasProducts: Sequelize.HasManyHasAssociationsMixin; + countProducts: Sequelize.HasManyCountAssociationsMixin; }; interface BranchAttributes { diff --git a/sequelize/sequelize.d.ts b/sequelize/sequelize.d.ts index d8893524f4..9cb82ab6dc 100644 --- a/sequelize/sequelize.d.ts +++ b/sequelize/sequelize.d.ts @@ -605,7 +605,7 @@ declare module "sequelize" { * @param targets An array of instances or primary key of instances to check. * @param options The options to use when checking the associations. */ - (targets?: Array, options?: HasManyHasAssociationsMixinOptions): Promise + (targets: Array, options?: HasManyHasAssociationsMixinOptions): Promise } /**