global-settings.e2e-spec.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. import { createErrorResultGuard, createTestEnvironment, ErrorResultGuard } from '@vendure/testing';
  2. import gql from 'graphql-tag';
  3. import path from 'path';
  4. import { initialData } from '../../../e2e-common/e2e-initial-data';
  5. import { testConfig, TEST_SETUP_TIMEOUT_MS } from '../../../e2e-common/test-config';
  6. import { GLOBAL_SETTINGS_FRAGMENT } from './graphql/fragments';
  7. import {
  8. GetGlobalSettings,
  9. GlobalSettingsFragment,
  10. LanguageCode,
  11. UpdateGlobalSettings,
  12. } from './graphql/generated-e2e-admin-types';
  13. import { UPDATE_GLOBAL_SETTINGS } from './graphql/shared-definitions';
  14. describe('GlobalSettings resolver', () => {
  15. const { server, adminClient } = createTestEnvironment({
  16. ...testConfig(),
  17. ...{
  18. customFields: {
  19. Customer: [{ name: 'age', type: 'int' }],
  20. },
  21. },
  22. });
  23. let globalSettings: GlobalSettingsFragment;
  24. const globalSettingsGuard: ErrorResultGuard<GlobalSettingsFragment> = createErrorResultGuard(
  25. input => !!input.availableLanguages,
  26. );
  27. beforeAll(async () => {
  28. await server.init({
  29. initialData,
  30. productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
  31. customerCount: 1,
  32. });
  33. await adminClient.asSuperAdmin();
  34. await adminClient.query<UpdateGlobalSettings.Mutation, UpdateGlobalSettings.Variables>(
  35. UPDATE_GLOBAL_SETTINGS,
  36. {
  37. input: {
  38. trackInventory: false,
  39. },
  40. },
  41. );
  42. const result = await adminClient.query<GetGlobalSettings.Query>(GET_GLOBAL_SETTINGS);
  43. globalSettings = result.globalSettings;
  44. }, TEST_SETUP_TIMEOUT_MS);
  45. afterAll(async () => {
  46. await server.destroy();
  47. });
  48. describe('globalSettings query', () => {
  49. it('includes basic settings', () => {
  50. expect(globalSettings.availableLanguages).toEqual([LanguageCode.en]);
  51. expect(globalSettings.trackInventory).toBe(false);
  52. });
  53. it('includes orderProcess', () => {
  54. expect(globalSettings.serverConfig.orderProcess[0]).toEqual({
  55. name: 'Created',
  56. to: ['AddingItems', 'Draft'],
  57. });
  58. });
  59. it('includes permittedAssetTypes', () => {
  60. expect(globalSettings.serverConfig.permittedAssetTypes).toEqual([
  61. 'image/*',
  62. 'video/*',
  63. 'audio/*',
  64. '.pdf',
  65. ]);
  66. });
  67. it('includes customFieldConfig', () => {
  68. expect(globalSettings.serverConfig.customFieldConfig.Customer).toEqual([{ name: 'age' }]);
  69. });
  70. it('includes non-internal permission definitions', () => {
  71. const permissionNames = globalSettings.serverConfig.permissions.map(p => p.name);
  72. expect(permissionNames).toContain('CreateAdministrator');
  73. expect(permissionNames).not.toContain('SuperAdmin');
  74. expect(permissionNames).not.toContain('Owner');
  75. expect(permissionNames).not.toContain('Authenticated');
  76. });
  77. });
  78. describe('update', () => {
  79. it('returns error result when removing required language', async () => {
  80. const { updateGlobalSettings } = await adminClient.query<
  81. UpdateGlobalSettings.Mutation,
  82. UpdateGlobalSettings.Variables
  83. >(UPDATE_GLOBAL_SETTINGS, {
  84. input: {
  85. availableLanguages: [LanguageCode.zh],
  86. },
  87. });
  88. globalSettingsGuard.assertErrorResult(updateGlobalSettings);
  89. expect(updateGlobalSettings.message).toBe(
  90. 'Cannot make language "en" unavailable as it is used as the defaultLanguage by the channel "__default_channel__"',
  91. );
  92. });
  93. it('successful update', async () => {
  94. const { updateGlobalSettings } = await adminClient.query<
  95. UpdateGlobalSettings.Mutation,
  96. UpdateGlobalSettings.Variables
  97. >(UPDATE_GLOBAL_SETTINGS, {
  98. input: {
  99. availableLanguages: [LanguageCode.en, LanguageCode.zh],
  100. trackInventory: true,
  101. },
  102. });
  103. globalSettingsGuard.assertSuccess(updateGlobalSettings);
  104. expect(updateGlobalSettings.availableLanguages).toEqual([LanguageCode.en, LanguageCode.zh]);
  105. expect(updateGlobalSettings.trackInventory).toBe(true);
  106. });
  107. });
  108. });
  109. const GET_GLOBAL_SETTINGS = gql`
  110. query GetGlobalSettings {
  111. globalSettings {
  112. ...GlobalSettings
  113. }
  114. }
  115. ${GLOBAL_SETTINGS_FRAGMENT}
  116. `;