Skip to content

Commit

Permalink
feat: Add CartRemoveEntryFailEvent and CartUpdateEntryFailEvent events (
Browse files Browse the repository at this point in the history
#12162)

closes #12125
  • Loading branch information
znikola committed Apr 30, 2021
1 parent fa539cf commit 1f1e8c7
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 7 deletions.
91 changes: 85 additions & 6 deletions projects/core/src/cart/event/cart-event.builder.spec.ts
Expand Up @@ -13,7 +13,9 @@ import {
CartAddEntryEvent,
CartAddEntryFailEvent,
CartAddEntrySuccessEvent,
CartRemoveEntryFailEvent,
CartRemoveEntrySuccessEvent,
CartUpdateEntryFailEvent,
CartUpdateEntrySuccessEvent,
} from './cart.events';

Expand Down Expand Up @@ -240,18 +242,67 @@ describe('CartEventBuilder', () => {
subscription.unsubscribe();
});

it('CartModifiedEntrySuccessEvent', () => {
it('CartRemoveEntryFailEvent', () => {
const firstEventData: CartRemoveEntryFailEvent = {
cartCode: MOCK_ACTIVE_CART.code,
entry: MOCK_ACTIVE_CART.entries[0],
...MOCK_ACTIVE_CART_EVENT,
};

const secondEventData: CartRemoveEntryFailEvent = {
cartCode: MOCK_ACTIVE_CART.code,
entry: MOCK_ACTIVE_CART.entries[1],
...MOCK_ACTIVE_CART_EVENT,
};

const results: CartRemoveEntryFailEvent[] = [];
const subscription = eventService
.get(CartRemoveEntryFailEvent)
.subscribe((e) => results.push(e));

actions$.next(
new CartActions.CartRemoveEntryFail({
error: 'remove failed',
entryNumber: '0',
...MOCK_ACTIVE_CART_EVENT,
})
);
actions$.next(
new CartActions.CartRemoveEntryFail({
error: 'remove failed',
entryNumber: '0',
...MOCK_NOT_ACTIVE_CART_EVENT,
})
);

actions$.next(
new CartActions.CartRemoveEntryFail({
error: 'remove failed',
entryNumber: '1',
...MOCK_ACTIVE_CART_EVENT,
})
);

expect(results.length).toBe(2);
expect(results[0].constructor).toEqual(CartRemoveEntryFailEvent);
expect(results[0]).toEqual(jasmine.objectContaining(firstEventData));
expect(results[1]).toEqual(jasmine.objectContaining(secondEventData));

subscription.unsubscribe();
});

it('CartUpdateEntrySuccessEvent', () => {
const firstEventData: CartUpdateEntrySuccessEvent = {
cartCode: MOCK_ACTIVE_CART.code,
entry: MOCK_ACTIVE_CART.entries[0],
quantity: 2,
...MOCK_ACTIVE_CART_EVENT,
};

const result = [];
const results: CartUpdateEntrySuccessEvent[] = [];
const subscription = eventService
.get(CartUpdateEntrySuccessEvent)
.subscribe((e) => result.push(e));
.subscribe((e) => results.push(e));

actions$.next(
new CartActions.CartUpdateEntrySuccess({
Expand All @@ -260,9 +311,37 @@ describe('CartEventBuilder', () => {
...MOCK_ACTIVE_CART_EVENT,
})
);
expect(result.length).toBe(1);
expect(result[0].constructor).toEqual(CartUpdateEntrySuccessEvent);
expect(result[0]).toEqual(jasmine.objectContaining(firstEventData));
expect(results.length).toBe(1);
expect(results[0].constructor).toEqual(CartUpdateEntrySuccessEvent);
expect(results[0]).toEqual(jasmine.objectContaining(firstEventData));

subscription.unsubscribe();
});

it('CartUpdateEntryFailEvent', () => {
const firstEventData: CartUpdateEntryFailEvent = {
cartCode: MOCK_ACTIVE_CART.code,
entry: MOCK_ACTIVE_CART.entries[0],
quantity: 2,
...MOCK_ACTIVE_CART_EVENT,
};

const results: CartUpdateEntryFailEvent[] = [];
const subscription = eventService
.get(CartUpdateEntryFailEvent)
.subscribe((e) => results.push(e));

actions$.next(
new CartActions.CartUpdateEntryFail({
error: 'update failed',
entryNumber: '0',
quantity: 2,
...MOCK_ACTIVE_CART_EVENT,
})
);
expect(results.length).toBe(1);
expect(results[0].constructor).toEqual(CartUpdateEntryFailEvent);
expect(results[0]).toEqual(jasmine.objectContaining(firstEventData));

subscription.unsubscribe();
});
Expand Down
14 changes: 13 additions & 1 deletion projects/core/src/cart/event/cart-event.builder.ts
Expand Up @@ -12,7 +12,9 @@ import {
CartAddEntryEvent,
CartAddEntryFailEvent,
CartAddEntrySuccessEvent,
CartRemoveEntryFailEvent,
CartRemoveEntrySuccessEvent,
CartUpdateEntryFailEvent,
CartUpdateEntrySuccessEvent,
} from './cart.events';

Expand Down Expand Up @@ -61,13 +63,21 @@ export class CartEventBuilder {
action: CartActions.CART_REMOVE_ENTRY_SUCCESS,
event: CartRemoveEntrySuccessEvent,
});
this.registerMapped({
action: CartActions.CART_REMOVE_ENTRY_FAIL,
event: CartRemoveEntryFailEvent,
});
}

protected registerUpdateEntry(): void {
this.registerMapped({
action: CartActions.CART_UPDATE_ENTRY_SUCCESS,
event: CartUpdateEntrySuccessEvent,
});
this.registerMapped({
action: CartActions.CART_UPDATE_ENTRY_FAIL,
event: CartUpdateEntryFailEvent,
});
}

/**
Expand Down Expand Up @@ -114,6 +124,8 @@ export class CartEventBuilder {
protected getAction(
actionType: string | string[]
): Observable<{ type: string; payload?: any }> {
return this.actionsSubject.pipe(ofType(...[].concat(actionType)));
return this.actionsSubject.pipe(
ofType(...([] as string[]).concat(actionType))
);
}
}
17 changes: 17 additions & 0 deletions projects/core/src/cart/event/cart.events.ts
Expand Up @@ -42,6 +42,14 @@ export class CartAddEntryFailEvent extends CartEvent {
quantity: number;
}

export class CartRemoveEntryFailEvent extends CartEvent {
/**
* Event's type
*/
static readonly type = 'CartRemoveEntryFailEvent';
entry: OrderEntry;
}

export class CartRemoveEntrySuccessEvent extends CartEvent {
/**
* Event's type
Expand All @@ -58,3 +66,12 @@ export class CartUpdateEntrySuccessEvent extends CartEvent {
quantity: number;
entry: OrderEntry;
}

export class CartUpdateEntryFailEvent extends CartEvent {
/**
* Event's type
*/
static readonly type = 'CartUpdateEntryFailEvent';
quantity: number;
entry: OrderEntry;
}

0 comments on commit 1f1e8c7

Please sign in to comment.