group.test.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. 'use strict';
  2. const { DataTypes } = require('@sequelize/core');
  3. const { beforeAll2, expectsql, sequelize } = require('../../support');
  4. const sql = sequelize.dialect.queryGenerator;
  5. describe('QueryGenerator#selectQuery with "group"', () => {
  6. function expectSelect(options, expectation) {
  7. const model = options.model;
  8. return expectsql(
  9. sql.selectQuery(options.table || (model && model.table), options, options.model),
  10. expectation,
  11. );
  12. }
  13. const vars = beforeAll2(() => {
  14. const User = sequelize.define('User', {
  15. name: {
  16. type: DataTypes.STRING,
  17. field: 'name',
  18. allowNull: false,
  19. },
  20. });
  21. return { User };
  22. });
  23. it('supports simple GROUP BY', () => {
  24. const { User } = vars;
  25. expectSelect(
  26. {
  27. model: User,
  28. group: ['name'],
  29. },
  30. {
  31. default: 'SELECT * FROM `Users` AS `User` GROUP BY `name`;',
  32. postgres: 'SELECT * FROM "Users" AS "User" GROUP BY "name";',
  33. db2: 'SELECT * FROM "Users" AS "User" GROUP BY "name";',
  34. ibmi: 'SELECT * FROM "Users" AS "User" GROUP BY "name"',
  35. mssql: 'SELECT * FROM [Users] AS [User] GROUP BY [name];',
  36. snowflake: 'SELECT * FROM "Users" AS "User" GROUP BY "name";',
  37. },
  38. );
  39. });
  40. it('does not add GROUP BY if it is empty', () => {
  41. const { User } = vars;
  42. expectSelect(
  43. {
  44. model: User,
  45. group: [],
  46. },
  47. {
  48. default: 'SELECT * FROM `Users` AS `User`;',
  49. postgres: 'SELECT * FROM "Users" AS "User";',
  50. db2: 'SELECT * FROM "Users" AS "User";',
  51. ibmi: 'SELECT * FROM "Users" AS "User"',
  52. mssql: 'SELECT * FROM [Users] AS [User];',
  53. snowflake: 'SELECT * FROM "Users" AS "User";',
  54. },
  55. );
  56. });
  57. });