Browse Source

refactor(server): Consolidate order-related config into single object

Michael Bromley 7 years ago
parent
commit
205d410c0e

+ 0 - 1
server/dev-config.ts

@@ -44,7 +44,6 @@ export const devConfig: VendureConfig = {
         // password: 'Be70',
         // database: 'vendure',
     },
-    orderProcessOptions: {} as OrderProcessOptions<any>,
     paymentOptions: {
         paymentMethodHandlers: [examplePaymentHandler],
     },

+ 1 - 2
server/src/config/config.service.mock.ts

@@ -31,8 +31,7 @@ export class MockConfigService implements MockClass<ConfigService> {
     taxOptions: {};
     emailOptions: {};
     importExportOptions: {};
-    orderMergeOptions = {};
-    orderProcessOptions = {};
+    orderOptions = {};
     customFields = {};
     middleware = [];
     plugins = [];

+ 3 - 8
server/src/config/config.service.ts

@@ -14,8 +14,7 @@ import {
     AuthOptions,
     EmailOptions,
     ImportExportOptions,
-    OrderMergeOptions,
-    OrderProcessOptions,
+    OrderOptions,
     PaymentOptions,
     PromotionOptions,
     ShippingOptions,
@@ -90,12 +89,8 @@ export class ConfigService implements VendureConfig {
         return this.activeConfig.shippingOptions;
     }
 
-    get orderMergeOptions(): OrderMergeOptions {
-        return this.activeConfig.orderMergeOptions;
-    }
-
-    get orderProcessOptions(): OrderProcessOptions<any> {
-        return this.activeConfig.orderProcessOptions;
+    get orderOptions(): OrderOptions {
+        return this.activeConfig.orderOptions;
     }
 
     get paymentOptions(): PaymentOptions {

+ 2 - 2
server/src/config/default-config.ts

@@ -61,10 +61,10 @@ export const defaultConfig: ReadOnlyRequired<VendureConfig> = {
         shippingEligibilityCheckers: [defaultShippingEligibilityChecker],
         shippingCalculators: [defaultShippingCalculator],
     },
-    orderProcessOptions: {},
-    orderMergeOptions: {
+    orderOptions: {
         mergeStrategy: new MergeOrdersStrategy(),
         checkoutMergeStrategy: new UseGuestStrategy(),
+        process: {},
     },
     paymentOptions: {
         paymentMethodHandlers: [],

+ 9 - 10
server/src/config/vendure-config.ts

@@ -138,13 +138,18 @@ export interface OrderProcessOptions<T extends string> {
      * @description
      * Define a custom error handler function for transition errors.
      */
-    onError?(fromState: T, toState: T, message?: string): void;
+    onTransitionError?(fromState: T, toState: T, message?: string): void;
 }
 
 /**
  * @docsCategory orders
  */
-export interface OrderMergeOptions {
+export interface OrderOptions {
+    /**
+     * @description
+     * Defines custom states and transition logic for the order process state machine.
+     */
+    process: OrderProcessOptions<string>;
     /**
      * @description
      * Defines the strategy used to merge a guest Order and an existing Order when
@@ -449,15 +454,9 @@ export interface VendureConfig {
     importExportOptions?: ImportExportOptions;
     /**
      * @description
-     * Define the strategies governing how Orders are merged when an existing
-     * Customer signs in.
-     */
-    orderMergeOptions?: OrderMergeOptions;
-    /**
-     * @description
-     * Defines custom states in the order process finite state machine.
+     * Configuration settings governing how orders are handled.
      */
-    orderProcessOptions?: OrderProcessOptions<any>;
+    orderOptions?: OrderOptions;
     /**
      * @description
      * Custom Express middleware for the server.

+ 1 - 1
server/src/service/helpers/order-merger/order-merger.spec.ts

@@ -16,7 +16,7 @@ describe('OrderMerger', () => {
             providers: [OrderMerger, { provide: ConfigService, useClass: MockConfigService }],
         }).compile();
         const mockConfigService = module.get<ConfigService, MockConfigService>(ConfigService);
-        mockConfigService.orderMergeOptions = {
+        mockConfigService.orderOptions = {
             mergeStrategy: new MergeOrdersStrategy(),
         };
         orderMerger = module.get(OrderMerger);

+ 1 - 1
server/src/service/helpers/order-merger/order-merger.ts

@@ -24,7 +24,7 @@ export class OrderMerger {
      */
     merge(guestOrder?: Order, existingOrder?: Order): MergeResult {
         if (guestOrder && !this.orderEmpty(guestOrder) && existingOrder && !this.orderEmpty(existingOrder)) {
-            const { mergeStrategy } = this.configService.orderMergeOptions;
+            const { mergeStrategy } = this.configService.orderOptions;
             const mergedLines = mergeStrategy.merge(guestOrder, existingOrder);
             return {
                 order: existingOrder,

+ 4 - 4
server/src/service/helpers/order-state-machine/order-state-machine.ts

@@ -64,8 +64,8 @@ export class OrderStateMachine {
             transtitions,
             onTransitionStart,
             onTransitionEnd,
-            onError,
-        } = this.configService.orderProcessOptions;
+            onTransitionError,
+        } = this.configService.orderOptions.process;
 
         const allTransitions = this.mergeTransitionDefinitions(orderStateTransitions, transtitions);
         const initialState = 'AddingItems';
@@ -88,8 +88,8 @@ export class OrderStateMachine {
                 return this.onTransitionEnd(fromState, toState, data);
             },
             onError: (fromState, toState, message) => {
-                if (typeof onError === 'function') {
-                    onError(fromState, toState, message);
+                if (typeof onTransitionError === 'function') {
+                    onTransitionError(fromState, toState, message);
                 }
                 throw new IllegalOperationError(message || 'error.cannot-transition-order-from-to', {
                     fromState,