dao.test.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. 'use strict';
  2. const { expect } = require('chai');
  3. const Support = require('../../support');
  4. const { DataTypes } = require('@sequelize/core');
  5. const dialect = Support.getTestDialect();
  6. describe('[MariaDB Specific] DAO', () => {
  7. if (dialect !== 'mariadb') {
  8. return;
  9. }
  10. beforeEach(async function () {
  11. this.User = this.sequelize.define('User', {
  12. username: DataTypes.STRING,
  13. email: DataTypes.STRING,
  14. location: DataTypes.GEOMETRY(),
  15. });
  16. await this.User.sync({ force: true });
  17. });
  18. describe('integers', () => {
  19. describe('integer', () => {
  20. beforeEach(async function () {
  21. this.User = this.sequelize.define('User', {
  22. aNumber: DataTypes.INTEGER,
  23. });
  24. await this.User.sync({ force: true });
  25. });
  26. it('positive', async function () {
  27. const User = this.User;
  28. const user = await User.create({ aNumber: 2_147_483_647 });
  29. expect(user.aNumber).to.equal(2_147_483_647);
  30. const _user = await User.findOne({ where: { aNumber: 2_147_483_647 } });
  31. expect(_user.aNumber).to.equal(2_147_483_647);
  32. });
  33. it('negative', async function () {
  34. const User = this.User;
  35. const user = await User.create({ aNumber: -2_147_483_647 });
  36. expect(user.aNumber).to.equal(-2_147_483_647);
  37. const _user = await User.findOne({ where: { aNumber: -2_147_483_647 } });
  38. expect(_user.aNumber).to.equal(-2_147_483_647);
  39. });
  40. });
  41. describe('bigint', () => {
  42. beforeEach(async function () {
  43. this.User = this.sequelize.define('User', {
  44. aNumber: DataTypes.BIGINT,
  45. });
  46. await this.User.sync({ force: true });
  47. });
  48. it('positive', async function () {
  49. const User = this.User;
  50. const user = await User.create({ aNumber: '9223372036854775807' });
  51. expect(user.aNumber).to.equal('9223372036854775807');
  52. const _user = await User.findOne({ where: { aNumber: '9223372036854775807' } });
  53. await expect(_user.aNumber.toString()).to.equal('9223372036854775807');
  54. });
  55. it('negative', async function () {
  56. const User = this.User;
  57. const user = await User.create({ aNumber: '-9223372036854775807' });
  58. expect(user.aNumber).to.equal('-9223372036854775807');
  59. const _user = await User.findOne({ where: { aNumber: '-9223372036854775807' } });
  60. await expect(_user.aNumber.toString()).to.equal('-9223372036854775807');
  61. });
  62. });
  63. });
  64. it('should save geometry correctly', async function () {
  65. const point = { type: 'Point', coordinates: [39.807_222, -76.984_722] };
  66. const newUser = await this.User.create({
  67. username: 'user',
  68. email: 'foo@bar.com',
  69. location: point,
  70. });
  71. expect(newUser.location).to.deep.eql(point);
  72. });
  73. it('should update geometry correctly', async function () {
  74. const User = this.User;
  75. const point1 = { type: 'Point', coordinates: [39.807_222, -76.984_722] };
  76. const point2 = { type: 'Point', coordinates: [39.828_333, -77.232_222] };
  77. const oldUser = await User.create({
  78. username: 'user',
  79. email: 'foo@bar.com',
  80. location: point1,
  81. });
  82. await User.update({ location: point2 }, { where: { username: oldUser.username } });
  83. const updatedUser = await User.findOne({ where: { username: oldUser.username } });
  84. expect(updatedUser.location).to.deep.eql(point2);
  85. });
  86. it('should read geometry correctly', async function () {
  87. const User = this.User;
  88. const point = { type: 'Point', coordinates: [39.807_222, -76.984_722] };
  89. const user0 = await User.create({ username: 'user', email: 'foo@bar.com', location: point });
  90. const user = await User.findOne({ where: { username: user0.username } });
  91. expect(user.location).to.deep.eql(point);
  92. });
  93. });