| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- import { createTestEnvironment } from '@vendure/testing';
- import gql from 'graphql-tag';
- import path from 'path';
- import { afterAll, beforeAll, describe, expect, it } from 'vitest';
- import { initialData } from '../../../e2e-common/e2e-initial-data';
- import { testConfig, TEST_SETUP_TIMEOUT_MS } from '../../../e2e-common/test-config';
- import { DeletionResult } from './graphql/generated-e2e-admin-types';
- import * as Codegen from './graphql/generated-e2e-admin-types';
- import { sortById } from './utils/test-order-utils';
- describe('TaxCategory resolver', () => {
- const { server, adminClient, shopClient } = createTestEnvironment(testConfig());
- beforeAll(async () => {
- await server.init({
- initialData,
- productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
- customerCount: 2,
- });
- await adminClient.asSuperAdmin();
- }, TEST_SETUP_TIMEOUT_MS);
- afterAll(async () => {
- await server.destroy();
- });
- it('taxCategories', async () => {
- const { taxCategories } = await adminClient.query<Codegen.GetTaxCategoryListQuery>(
- GET_TAX_CATEGORY_LIST,
- );
- expect(taxCategories.items.sort(sortById)).toEqual([
- { id: 'T_1', name: 'Standard Tax', isDefault: false },
- { id: 'T_2', name: 'Reduced Tax', isDefault: false },
- { id: 'T_3', name: 'Zero Tax', isDefault: false },
- ]);
- });
- it('taxCategory', async () => {
- const { taxCategory } = await adminClient.query<
- Codegen.GetTaxCategoryQuery,
- Codegen.GetTaxCategoryQueryVariables
- >(GET_TAX_CATEGORY, {
- id: 'T_2',
- });
- expect(taxCategory).toEqual({
- id: 'T_2',
- name: 'Reduced Tax',
- isDefault: false,
- });
- });
- it('createTaxCategory', async () => {
- const { createTaxCategory } = await adminClient.query<
- Codegen.CreateTaxCategoryMutation,
- Codegen.CreateTaxCategoryMutationVariables
- >(CREATE_TAX_CATEGORY, {
- input: {
- name: 'New Category',
- },
- });
- expect(createTaxCategory).toEqual({
- id: 'T_4',
- name: 'New Category',
- isDefault: false,
- });
- });
- it('updateCategory', async () => {
- const { updateTaxCategory } = await adminClient.query<
- Codegen.UpdateTaxCategoryMutation,
- Codegen.UpdateTaxCategoryMutationVariables
- >(UPDATE_TAX_CATEGORY, {
- input: {
- id: 'T_4',
- name: 'New Category Updated',
- },
- });
- expect(updateTaxCategory).toEqual({
- id: 'T_4',
- name: 'New Category Updated',
- isDefault: false,
- });
- });
- it('set default', async () => {
- const { updateTaxCategory } = await adminClient.query<
- Codegen.UpdateTaxCategoryMutation,
- Codegen.UpdateTaxCategoryMutationVariables
- >(UPDATE_TAX_CATEGORY, {
- input: {
- id: 'T_2',
- isDefault: true,
- },
- });
- expect(updateTaxCategory).toEqual({
- id: 'T_2',
- name: 'Reduced Tax',
- isDefault: true,
- });
- const { taxCategories } = await adminClient.query<Codegen.GetTaxCategoryListQuery>(
- GET_TAX_CATEGORY_LIST,
- );
- expect(taxCategories.items.sort(sortById)).toEqual([
- { id: 'T_1', name: 'Standard Tax', isDefault: false },
- { id: 'T_2', name: 'Reduced Tax', isDefault: true },
- { id: 'T_3', name: 'Zero Tax', isDefault: false },
- { id: 'T_4', name: 'New Category Updated', isDefault: false },
- ]);
- });
- it('set a different default', async () => {
- const { updateTaxCategory } = await adminClient.query<
- Codegen.UpdateTaxCategoryMutation,
- Codegen.UpdateTaxCategoryMutationVariables
- >(UPDATE_TAX_CATEGORY, {
- input: {
- id: 'T_1',
- isDefault: true,
- },
- });
- expect(updateTaxCategory).toEqual({
- id: 'T_1',
- name: 'Standard Tax',
- isDefault: true,
- });
- const { taxCategories } = await adminClient.query<Codegen.GetTaxCategoryListQuery>(
- GET_TAX_CATEGORY_LIST,
- );
- expect(taxCategories.items.sort(sortById)).toEqual([
- { id: 'T_1', name: 'Standard Tax', isDefault: true },
- { id: 'T_2', name: 'Reduced Tax', isDefault: false },
- { id: 'T_3', name: 'Zero Tax', isDefault: false },
- { id: 'T_4', name: 'New Category Updated', isDefault: false },
- ]);
- });
- describe('deletion', () => {
- it('cannot delete if used by a TaxRate', async () => {
- const { deleteTaxCategory } = await adminClient.query<
- Codegen.DeleteTaxCategoryMutation,
- Codegen.DeleteTaxCategoryMutationVariables
- >(DELETE_TAX_CATEGORY, {
- id: 'T_2',
- });
- expect(deleteTaxCategory.result).toBe(DeletionResult.NOT_DELETED);
- expect(deleteTaxCategory.message).toBe(
- 'Cannot remove TaxCategory "Reduced Tax" as it is referenced by 5 TaxRates',
- );
- });
- it('can delete if not used by TaxRate', async () => {
- const { deleteTaxCategory } = await adminClient.query<
- Codegen.DeleteTaxCategoryMutation,
- Codegen.DeleteTaxCategoryMutationVariables
- >(DELETE_TAX_CATEGORY, {
- id: 'T_4',
- });
- expect(deleteTaxCategory.result).toBe(DeletionResult.DELETED);
- expect(deleteTaxCategory.message).toBeNull();
- const { taxCategory } = await adminClient.query<
- Codegen.GetTaxCategoryQuery,
- Codegen.GetTaxCategoryQueryVariables
- >(GET_TAX_CATEGORY, {
- id: 'T_4',
- });
- expect(taxCategory).toBeNull();
- });
- });
- });
- const GET_TAX_CATEGORY_LIST = gql`
- query GetTaxCategoryList {
- taxCategories {
- items {
- id
- name
- isDefault
- }
- }
- }
- `;
- const GET_TAX_CATEGORY = gql`
- query GetTaxCategory($id: ID!) {
- taxCategory(id: $id) {
- id
- name
- isDefault
- }
- }
- `;
- const CREATE_TAX_CATEGORY = gql`
- mutation CreateTaxCategory($input: CreateTaxCategoryInput!) {
- createTaxCategory(input: $input) {
- id
- name
- isDefault
- }
- }
- `;
- const UPDATE_TAX_CATEGORY = gql`
- mutation UpdateTaxCategory($input: UpdateTaxCategoryInput!) {
- updateTaxCategory(input: $input) {
- id
- name
- isDefault
- }
- }
- `;
- const DELETE_TAX_CATEGORY = gql`
- mutation DeleteTaxCategory($id: ID!) {
- deleteTaxCategory(id: $id) {
- result
- message
- }
- }
- `;
|