administrator.e2e-spec.ts 4.8 KB

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