global-settings.e2e-spec.ts 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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. GlobalSettingsFragment
  26. >(input => !!input.availableLanguages);
  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. const result = await adminClient.query<GetGlobalSettings.Query>(GET_GLOBAL_SETTINGS);
  35. globalSettings = result.globalSettings;
  36. }, TEST_SETUP_TIMEOUT_MS);
  37. afterAll(async () => {
  38. await server.destroy();
  39. });
  40. describe('globalSettings query', () => {
  41. it('includes basic settings', () => {
  42. expect(globalSettings.availableLanguages).toEqual([LanguageCode.en]);
  43. expect(globalSettings.trackInventory).toBe(false);
  44. });
  45. it('includes orderProcess', () => {
  46. expect(globalSettings.serverConfig.orderProcess[0]).toEqual({
  47. name: 'Created',
  48. to: ['AddingItems'],
  49. });
  50. });
  51. it('includes permittedAssetTypes', () => {
  52. expect(globalSettings.serverConfig.permittedAssetTypes).toEqual([
  53. 'image/*',
  54. 'video/*',
  55. 'audio/*',
  56. '.pdf',
  57. ]);
  58. });
  59. it('includes customFieldConfig', () => {
  60. expect(globalSettings.serverConfig.customFieldConfig.Customer).toEqual([{ name: 'age' }]);
  61. });
  62. it('includes non-internal permission definitions', () => {
  63. const permissionNames = globalSettings.serverConfig.permissions.map(p => p.name);
  64. expect(permissionNames).toContain('CreateAdministrator');
  65. expect(permissionNames).not.toContain('SuperAdmin');
  66. expect(permissionNames).not.toContain('Owner');
  67. expect(permissionNames).not.toContain('Authenticated');
  68. });
  69. });
  70. describe('update', () => {
  71. it('returns error result when removing required language', async () => {
  72. const { updateGlobalSettings } = await adminClient.query<
  73. UpdateGlobalSettings.Mutation,
  74. UpdateGlobalSettings.Variables
  75. >(UPDATE_GLOBAL_SETTINGS, {
  76. input: {
  77. availableLanguages: [LanguageCode.zh],
  78. },
  79. });
  80. globalSettingsGuard.assertErrorResult(updateGlobalSettings);
  81. expect(updateGlobalSettings.message).toBe(
  82. 'Cannot make language "en" unavailable as it is used as the defaultLanguage by the channel "__default_channel__"',
  83. );
  84. });
  85. it('successful update', async () => {
  86. const { updateGlobalSettings } = await adminClient.query<
  87. UpdateGlobalSettings.Mutation,
  88. UpdateGlobalSettings.Variables
  89. >(UPDATE_GLOBAL_SETTINGS, {
  90. input: {
  91. availableLanguages: [LanguageCode.en, LanguageCode.zh],
  92. trackInventory: true,
  93. },
  94. });
  95. globalSettingsGuard.assertSuccess(updateGlobalSettings);
  96. expect(updateGlobalSettings.availableLanguages).toEqual([LanguageCode.en, LanguageCode.zh]);
  97. expect(updateGlobalSettings.trackInventory).toBe(true);
  98. });
  99. });
  100. });
  101. const GET_GLOBAL_SETTINGS = gql`
  102. query GetGlobalSettings {
  103. globalSettings {
  104. ...GlobalSettings
  105. }
  106. }
  107. ${GLOBAL_SETTINGS_FRAGMENT}
  108. `;