123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- 'use strict';
- const chai = require('chai');
- const expect = chai.expect;
- const Support = require('../../support');
- const { DataTypes, sql } = require('@sequelize/core');
- const current = Support.sequelize;
- const dialect = current.dialect;
- describe(Support.getTestDialectTeaser('Instance'), () => {
- describe('build', () => {
- it('should populate NOW default values', async () => {
- const Model = current.define(
- 'Model',
- {
- created_time: {
- type: DataTypes.DATE,
- allowNull: true,
- defaultValue: DataTypes.NOW,
- },
- updated_time: {
- type: DataTypes.DATE,
- allowNull: true,
- defaultValue: DataTypes.NOW,
- },
- ip: {
- type: DataTypes.STRING,
- validate: {
- isIP: true,
- },
- },
- ip2: {
- type: DataTypes.STRING,
- validate: {
- isIP: {
- msg: 'test',
- },
- },
- },
- },
- {
- timestamp: false,
- },
- );
- const instance = Model.build({ ip: '127.0.0.1', ip2: '0.0.0.0' });
- expect(instance.get('created_time')).to.be.an.instanceof(
- Date,
- 'created_time should be a date',
- );
- expect(instance.get('updated_time')).to.be.an.instanceof(
- Date,
- 'updated_time should be a date',
- );
- await instance.validate();
- });
- it('should populate explicitly undefined UUID primary keys', () => {
- const Model = current.define('Model', {
- id: {
- type: DataTypes.UUID,
- primaryKey: true,
- allowNull: false,
- defaultValue: sql.uuidV4,
- },
- });
- const instance = Model.build({
- id: undefined,
- });
- expect(instance.get('id')).not.to.be.undefined;
- expect(instance.get('id')).to.be.ok;
- });
- it('should populate undefined columns with default value', () => {
- const Model = current.define('Model', {
- number1: {
- type: DataTypes.INTEGER,
- defaultValue: 1,
- },
- number2: {
- type: DataTypes.INTEGER,
- defaultValue: 2,
- },
- });
- const instance = Model.build({
- number1: undefined,
- });
- expect(instance.get('number1')).not.to.be.undefined;
- expect(instance.get('number1')).to.equal(1);
- expect(instance.get('number2')).not.to.be.undefined;
- expect(instance.get('number2')).to.equal(2);
- });
- if (dialect.supports.dataTypes.JSONB) {
- it('should clone the default values', () => {
- const Model = current.define('Model', {
- data: {
- type: DataTypes.JSONB,
- defaultValue: { foo: 'bar' },
- },
- });
- const instance = Model.build();
- instance.data.foo = 'biz';
- expect(instance.get('data')).to.eql({ foo: 'biz' });
- expect(Model.build().get('data')).to.eql({ foo: 'bar' });
- });
- }
- });
- });
|