administrator.e2e-spec.ts 4.1 KB

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