administrator.e2e-spec.ts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import {
  2. Administrator,
  3. CreateAdministrator,
  4. GetAdministrator,
  5. GetAdministrators,
  6. UpdateAdministrator,
  7. } from '@vendure/common/lib/generated-types';
  8. import path from 'path';
  9. import {
  10. CREATE_ADMINISTRATOR,
  11. GET_ADMINISTRATOR,
  12. GET_ADMINISTRATORS,
  13. UPDATE_ADMINISTRATOR,
  14. } from '../../../admin-ui/src/app/data/definitions/administrator-definitions';
  15. import { TEST_SETUP_TIMEOUT_MS } from './config/test-config';
  16. import { TestAdminClient } from './test-client';
  17. import { TestServer } from './test-server';
  18. import { assertThrowsWithMessage } from './utils/assert-throws-with-message';
  19. describe('Administrator resolver', () => {
  20. const client = new TestAdminClient();
  21. const server = new TestServer();
  22. let createdAdmin: Administrator.Fragment;
  23. beforeAll(async () => {
  24. const token = await server.init({
  25. productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
  26. customerCount: 1,
  27. });
  28. await client.init();
  29. }, TEST_SETUP_TIMEOUT_MS);
  30. afterAll(async () => {
  31. await server.destroy();
  32. });
  33. it('administrators', async () => {
  34. const result = await client.query<GetAdministrators.Query, GetAdministrators.Variables>(
  35. GET_ADMINISTRATORS,
  36. );
  37. expect(result.administrators.items.length).toBe(1);
  38. expect(result.administrators.totalItems).toBe(1);
  39. });
  40. it('createAdministrator', async () => {
  41. const result = await client.query<CreateAdministrator.Mutation, CreateAdministrator.Variables>(
  42. CREATE_ADMINISTRATOR,
  43. {
  44. input: {
  45. emailAddress: 'test@test.com',
  46. firstName: 'First',
  47. lastName: 'Last',
  48. password: 'password',
  49. roleIds: ['1'],
  50. },
  51. },
  52. );
  53. createdAdmin = result.createAdministrator;
  54. expect(createdAdmin).toMatchSnapshot();
  55. });
  56. it('administrator', async () => {
  57. const result = await client.query<GetAdministrator.Query, GetAdministrator.Variables>(
  58. GET_ADMINISTRATOR,
  59. {
  60. id: createdAdmin.id,
  61. },
  62. );
  63. expect(result.administrator).toEqual(createdAdmin);
  64. });
  65. it('updateAdministrator', async () => {
  66. const result = await client.query<UpdateAdministrator.Mutation, UpdateAdministrator.Variables>(
  67. UPDATE_ADMINISTRATOR,
  68. {
  69. input: {
  70. id: createdAdmin.id,
  71. emailAddress: 'new-email',
  72. firstName: 'new first',
  73. lastName: 'new last',
  74. password: 'new password',
  75. roleIds: ['2'],
  76. },
  77. },
  78. );
  79. expect(result.updateAdministrator).toMatchSnapshot();
  80. });
  81. it('updateAdministrator works with partial input', async () => {
  82. const result = await client.query<UpdateAdministrator.Mutation, UpdateAdministrator.Variables>(
  83. UPDATE_ADMINISTRATOR,
  84. {
  85. input: {
  86. id: createdAdmin.id,
  87. emailAddress: 'newest-email',
  88. },
  89. },
  90. );
  91. expect(result.updateAdministrator.emailAddress).toBe('newest-email');
  92. expect(result.updateAdministrator.firstName).toBe('new first');
  93. expect(result.updateAdministrator.lastName).toBe('new last');
  94. });
  95. it(
  96. 'updateAdministrator throws with invalid roleId',
  97. assertThrowsWithMessage(
  98. () =>
  99. client.query<UpdateAdministrator.Mutation, UpdateAdministrator.Variables>(
  100. UPDATE_ADMINISTRATOR,
  101. {
  102. input: {
  103. id: createdAdmin.id,
  104. emailAddress: 'new-email',
  105. firstName: 'new first',
  106. lastName: 'new last',
  107. password: 'new password',
  108. roleIds: ['999'],
  109. },
  110. },
  111. ),
  112. `No Role with the id '999' could be found`,
  113. ),
  114. );
  115. });