tax-rate.e2e-spec.ts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. /* tslint:disable:no-non-null-assertion */
  2. import { pick } from '@vendure/common/lib/pick';
  3. import { createTestEnvironment } from '@vendure/testing';
  4. import gql from 'graphql-tag';
  5. import path from 'path';
  6. import { initialData } from '../../../e2e-common/e2e-initial-data';
  7. import { testConfig, TEST_SETUP_TIMEOUT_MS } from '../../../e2e-common/test-config';
  8. import { TAX_RATE_FRAGMENT } from './graphql/fragments';
  9. import {
  10. CreateTaxRate,
  11. DeleteTaxRate,
  12. DeletionResult,
  13. GetTaxRate,
  14. GetTaxRates,
  15. UpdateTaxRate,
  16. } from './graphql/generated-e2e-admin-types';
  17. import { GET_TAX_RATES_LIST, UPDATE_TAX_RATE } from './graphql/shared-definitions';
  18. describe('TaxRate resolver', () => {
  19. const { server, adminClient, shopClient } = createTestEnvironment(testConfig());
  20. beforeAll(async () => {
  21. await server.init({
  22. initialData,
  23. productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
  24. customerCount: 2,
  25. });
  26. await adminClient.asSuperAdmin();
  27. }, TEST_SETUP_TIMEOUT_MS);
  28. afterAll(async () => {
  29. await server.destroy();
  30. });
  31. it('taxRates list', async () => {
  32. const { taxRates } = await adminClient.query<GetTaxRates.Query>(GET_TAX_RATES_LIST);
  33. expect(taxRates.totalItems).toBe(15);
  34. });
  35. it('taxRate', async () => {
  36. const { taxRate } = await adminClient.query<GetTaxRate.Query, GetTaxRate.Variables>(GET_TAX_RATE, {
  37. id: 'T_1',
  38. });
  39. expect(pick(taxRate!, ['id', 'name', 'enabled', 'value'])).toEqual({
  40. id: 'T_1',
  41. name: 'Standard Tax Oceania',
  42. enabled: true,
  43. value: 20,
  44. });
  45. expect(taxRate!.category.name).toBe('Standard Tax');
  46. expect(taxRate!.zone.name).toBe('Oceania');
  47. });
  48. it('createTaxRate', async () => {
  49. const { createTaxRate } = await adminClient.query<CreateTaxRate.Mutation, CreateTaxRate.Variables>(
  50. CREATE_TAX_RATE,
  51. {
  52. input: {
  53. name: 'My Tax Rate',
  54. categoryId: 'T_1',
  55. zoneId: 'T_1',
  56. enabled: true,
  57. value: 17.5,
  58. },
  59. },
  60. );
  61. expect(createTaxRate.name).toBe('My Tax Rate');
  62. expect(createTaxRate.value).toBe(17.5);
  63. });
  64. it('updateTaxRate', async () => {
  65. const { updateTaxRate } = await adminClient.query<UpdateTaxRate.Mutation, UpdateTaxRate.Variables>(
  66. UPDATE_TAX_RATE,
  67. {
  68. input: {
  69. id: 'T_1',
  70. value: 17.5,
  71. },
  72. },
  73. );
  74. expect(updateTaxRate.value).toBe(17.5);
  75. });
  76. it('deleteTaxRate', async () => {
  77. const { deleteTaxRate } = await adminClient.query<DeleteTaxRate.Mutation, DeleteTaxRate.Variables>(
  78. DELETE_TAX_RATE,
  79. {
  80. id: 'T_3',
  81. },
  82. );
  83. expect(deleteTaxRate.result).toBe(DeletionResult.DELETED);
  84. expect(deleteTaxRate.message).toBeNull();
  85. const { taxRates } = await adminClient.query<GetTaxRates.Query>(GET_TAX_RATES_LIST);
  86. expect(taxRates.items.find(x => x.id === 'T_3')).toBeUndefined();
  87. });
  88. });
  89. export const GET_TAX_RATE = gql`
  90. query GetTaxRate($id: ID!) {
  91. taxRate(id: $id) {
  92. ...TaxRate
  93. }
  94. }
  95. ${TAX_RATE_FRAGMENT}
  96. `;
  97. export const CREATE_TAX_RATE = gql`
  98. mutation CreateTaxRate($input: CreateTaxRateInput!) {
  99. createTaxRate(input: $input) {
  100. ...TaxRate
  101. }
  102. }
  103. ${TAX_RATE_FRAGMENT}
  104. `;
  105. export const DELETE_TAX_RATE = gql`
  106. mutation DeleteTaxRate($id: ID!) {
  107. deleteTaxRate(id: $id) {
  108. result
  109. message
  110. }
  111. }
  112. `;