@contrail/flexplm 1.5.1-alpha.5843ce4 → 1.5.1-alpha.8727255
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/publish/base-process-publish-assortment.d.ts +1 -1
- package/lib/publish/base-process-publish-assortment.js +6 -4
- package/lib/publish/base-process-publish-assortment.spec.js +11 -11
- package/package.json +1 -1
- package/src/publish/base-process-publish-assortment.spec.ts +14 -14
- package/src/publish/base-process-publish-assortment.ts +7 -5
|
@@ -79,7 +79,7 @@ export declare class BaseProcessPublishAssortment {
|
|
|
79
79
|
private sendToFlexPLM;
|
|
80
80
|
private saveToLocalFile;
|
|
81
81
|
private handleVibeIQFile;
|
|
82
|
-
sendPublishPayloadEvent
|
|
82
|
+
private sendPublishPayloadEvent;
|
|
83
83
|
private getCurrentDateString;
|
|
84
84
|
getItemFamilyChanges(pcd: PublishChangeData, changeDetail: any, assortmentItemFullChangeMap: Map<string, any>, assortmentItemDeleteMap: Map<string, any>): Map<string, ItemFamilyChanges>;
|
|
85
85
|
getEventsForPublishChangeData(publishChangeData: PublishChangeData): Promise<SeasonalPayload[]>;
|
|
@@ -576,10 +576,11 @@ class BaseProcessPublishAssortment {
|
|
|
576
576
|
events
|
|
577
577
|
};
|
|
578
578
|
const flexPLMConnect = new flexplm_connect_1.FlexPLMConnect(this.config);
|
|
579
|
-
const [
|
|
579
|
+
const [sendResult] = await Promise.allSettled([
|
|
580
580
|
flexPLMConnect.sendToFlexPLM(outboundPublishEvent),
|
|
581
581
|
this.sendPublishPayloadEvent(outboundPublishEvent)
|
|
582
582
|
]);
|
|
583
|
+
const result = sendResult.status === 'fulfilled' ? sendResult.value : { error: sendResult.reason?.message };
|
|
583
584
|
const isResultObject = typeof result === 'object' && result !== null;
|
|
584
585
|
const resultWithOutboundPublishEvent = isResultObject
|
|
585
586
|
? { ...result, outboundPublishEvent }
|
|
@@ -631,10 +632,11 @@ class BaseProcessPublishAssortment {
|
|
|
631
632
|
};
|
|
632
633
|
if (sendMode === 'vibeiqfile') {
|
|
633
634
|
const flexPLMConnect = new flexplm_connect_1.FlexPLMConnect(this.config);
|
|
634
|
-
const [
|
|
635
|
+
const [sendResult] = await Promise.allSettled([
|
|
635
636
|
flexPLMConnect.sendToFlexPLM(outboundPublishEvent),
|
|
636
637
|
this.sendPublishPayloadEvent(outboundPublishEvent)
|
|
637
638
|
]);
|
|
639
|
+
const result = sendResult.status === 'fulfilled' ? sendResult.value : { error: sendResult.reason?.message };
|
|
638
640
|
return { ...result, outboundPublishEvent };
|
|
639
641
|
}
|
|
640
642
|
else {
|
|
@@ -645,7 +647,7 @@ class BaseProcessPublishAssortment {
|
|
|
645
647
|
};
|
|
646
648
|
}
|
|
647
649
|
}
|
|
648
|
-
async sendPublishPayloadEvent(
|
|
650
|
+
async sendPublishPayloadEvent(outboundPublishEvent) {
|
|
649
651
|
console.info('sendPublishPayloadEvent()');
|
|
650
652
|
let initialEvent = {};
|
|
651
653
|
if (this.config?.event) {
|
|
@@ -656,7 +658,7 @@ class BaseProcessPublishAssortment {
|
|
|
656
658
|
const eventBody = {
|
|
657
659
|
originSystemType: 'VibeIQ',
|
|
658
660
|
objectClass: 'AssortmentPublishedToFlexPLM',
|
|
659
|
-
|
|
661
|
+
outboundPublishEvent,
|
|
660
662
|
initialEvent
|
|
661
663
|
};
|
|
662
664
|
await new sdk_1.Entities().create({
|
|
@@ -1709,7 +1709,7 @@ describe('sendToFlexPLM / handleVibeIQFile / sendPublishPayloadEvent', () => {
|
|
|
1709
1709
|
afterEach(() => {
|
|
1710
1710
|
jest.restoreAllMocks();
|
|
1711
1711
|
});
|
|
1712
|
-
it('
|
|
1712
|
+
it('should merge outboundPublishEvent into result and call sendPublishPayloadEvent in parallel', async () => {
|
|
1713
1713
|
const bppa = new base_process_publish_assortment_1.BaseProcessPublishAssortment(config, dc, mapFileUtil);
|
|
1714
1714
|
const flexResponse = { status: 200, data: { ok: true } };
|
|
1715
1715
|
let flexResolved = false;
|
|
@@ -1738,7 +1738,7 @@ describe('sendToFlexPLM / handleVibeIQFile / sendPublishPayloadEvent', () => {
|
|
|
1738
1738
|
expect(spyEvent).toHaveBeenCalledWith(passedOutboundPublishEvent);
|
|
1739
1739
|
expect(result).toEqual({ ...flexResponse, outboundPublishEvent: passedOutboundPublishEvent });
|
|
1740
1740
|
});
|
|
1741
|
-
it('
|
|
1741
|
+
it('should merge outboundPublishEvent into FlexPLM result and call sendPublishPayloadEvent when mode is vibeiqfile', async () => {
|
|
1742
1742
|
const bppa = new base_process_publish_assortment_1.BaseProcessPublishAssortment(config, dc, mapFileUtil);
|
|
1743
1743
|
const flexResponse = { status: 200, data: { ok: true } };
|
|
1744
1744
|
const spyFlex = jest.spyOn(flexplm_connect_1.FlexPLMConnect.prototype, 'sendToFlexPLM')
|
|
@@ -1761,7 +1761,7 @@ describe('sendToFlexPLM / handleVibeIQFile / sendPublishPayloadEvent', () => {
|
|
|
1761
1761
|
expect(spyEvent).toHaveBeenCalledWith(passedOutboundPublishEvent);
|
|
1762
1762
|
expect(result).toEqual({ ...flexResponse, outboundPublishEvent: passedOutboundPublishEvent });
|
|
1763
1763
|
});
|
|
1764
|
-
it('
|
|
1764
|
+
it('should skip FlexPLM but still call sendPublishPayloadEvent when mode is vibeiqfile-dontsendtoflexplm', async () => {
|
|
1765
1765
|
const bppa = new base_process_publish_assortment_1.BaseProcessPublishAssortment(config, dc, mapFileUtil);
|
|
1766
1766
|
const spyFlex = jest.spyOn(flexplm_connect_1.FlexPLMConnect.prototype, 'sendToFlexPLM')
|
|
1767
1767
|
.mockResolvedValue({});
|
|
@@ -1777,31 +1777,31 @@ describe('sendToFlexPLM / handleVibeIQFile / sendPublishPayloadEvent', () => {
|
|
|
1777
1777
|
outboundPublishEvent: passedOutboundPublishEvent
|
|
1778
1778
|
});
|
|
1779
1779
|
});
|
|
1780
|
-
it('
|
|
1780
|
+
it('should create an external-event with initialEvent parsed from config', async () => {
|
|
1781
1781
|
const bppa = new base_process_publish_assortment_1.BaseProcessPublishAssortment(config, dc, mapFileUtil);
|
|
1782
|
-
const
|
|
1783
|
-
await bppa.sendPublishPayloadEvent(
|
|
1782
|
+
const outboundPublishEvent = { foo: 'bar' };
|
|
1783
|
+
await bppa.sendPublishPayloadEvent(outboundPublishEvent);
|
|
1784
1784
|
expect(createCallArg).toEqual({
|
|
1785
1785
|
entityName: 'external-event',
|
|
1786
1786
|
object: {
|
|
1787
1787
|
originSystemType: 'VibeIQ',
|
|
1788
1788
|
objectClass: 'AssortmentPublishedToFlexPLM',
|
|
1789
|
-
|
|
1789
|
+
outboundPublishEvent,
|
|
1790
1790
|
initialEvent: { sourceEventId: 'src-1' }
|
|
1791
1791
|
}
|
|
1792
1792
|
});
|
|
1793
1793
|
});
|
|
1794
|
-
it('
|
|
1794
|
+
it('should default initialEvent to {} when config has no event', async () => {
|
|
1795
1795
|
const bareConfig = { taskId: 'task-x' };
|
|
1796
1796
|
const bppa = new base_process_publish_assortment_1.BaseProcessPublishAssortment(bareConfig, dc, mapFileUtil);
|
|
1797
|
-
const
|
|
1798
|
-
await bppa.sendPublishPayloadEvent(
|
|
1797
|
+
const outboundPublishEvent = { hello: 'world' };
|
|
1798
|
+
await bppa.sendPublishPayloadEvent(outboundPublishEvent);
|
|
1799
1799
|
expect(createCallArg).toEqual({
|
|
1800
1800
|
entityName: 'external-event',
|
|
1801
1801
|
object: {
|
|
1802
1802
|
originSystemType: 'VibeIQ',
|
|
1803
1803
|
objectClass: 'AssortmentPublishedToFlexPLM',
|
|
1804
|
-
|
|
1804
|
+
outboundPublishEvent,
|
|
1805
1805
|
initialEvent: {}
|
|
1806
1806
|
}
|
|
1807
1807
|
});
|
package/package.json
CHANGED
|
@@ -2033,7 +2033,7 @@ describe('sendToFlexPLM / handleVibeIQFile / sendPublishPayloadEvent', () => {
|
|
|
2033
2033
|
jest.restoreAllMocks();
|
|
2034
2034
|
});
|
|
2035
2035
|
|
|
2036
|
-
it('
|
|
2036
|
+
it('should merge outboundPublishEvent into result and call sendPublishPayloadEvent in parallel', async () => {
|
|
2037
2037
|
const bppa = new BaseProcessPublishAssortment(config, dc, mapFileUtil);
|
|
2038
2038
|
const flexResponse = { status: 200, data: { ok: true } };
|
|
2039
2039
|
|
|
@@ -2045,7 +2045,7 @@ describe('sendToFlexPLM / handleVibeIQFile / sendPublishPayloadEvent', () => {
|
|
|
2045
2045
|
flexResolved = true;
|
|
2046
2046
|
return flexResponse as any;
|
|
2047
2047
|
});
|
|
2048
|
-
const spyEvent = jest.spyOn(bppa, 'sendPublishPayloadEvent')
|
|
2048
|
+
const spyEvent = jest.spyOn(bppa as any, 'sendPublishPayloadEvent')
|
|
2049
2049
|
.mockImplementation(async () => {
|
|
2050
2050
|
await new Promise(r => setTimeout(r, 5));
|
|
2051
2051
|
eventResolved = true;
|
|
@@ -2067,13 +2067,13 @@ describe('sendToFlexPLM / handleVibeIQFile / sendPublishPayloadEvent', () => {
|
|
|
2067
2067
|
expect(result).toEqual({ ...flexResponse, outboundPublishEvent: passedOutboundPublishEvent });
|
|
2068
2068
|
});
|
|
2069
2069
|
|
|
2070
|
-
it('
|
|
2070
|
+
it('should merge outboundPublishEvent into FlexPLM result and call sendPublishPayloadEvent when mode is vibeiqfile', async () => {
|
|
2071
2071
|
const bppa = new BaseProcessPublishAssortment(config, dc, mapFileUtil);
|
|
2072
2072
|
const flexResponse = { status: 200, data: { ok: true } };
|
|
2073
2073
|
|
|
2074
2074
|
const spyFlex = jest.spyOn(FlexPLMConnect.prototype, 'sendToFlexPLM')
|
|
2075
2075
|
.mockResolvedValue(flexResponse as any);
|
|
2076
|
-
const spyEvent = jest.spyOn(bppa, 'sendPublishPayloadEvent')
|
|
2076
|
+
const spyEvent = jest.spyOn(bppa as any, 'sendPublishPayloadEvent')
|
|
2077
2077
|
.mockResolvedValue(undefined as any);
|
|
2078
2078
|
|
|
2079
2079
|
const result = await (bppa as any).handleVibeIQFile(events, eventType, 'vibeiqfile');
|
|
@@ -2096,12 +2096,12 @@ describe('sendToFlexPLM / handleVibeIQFile / sendPublishPayloadEvent', () => {
|
|
|
2096
2096
|
expect(result).toEqual({ ...flexResponse, outboundPublishEvent: passedOutboundPublishEvent });
|
|
2097
2097
|
});
|
|
2098
2098
|
|
|
2099
|
-
it('
|
|
2099
|
+
it('should skip FlexPLM but still call sendPublishPayloadEvent when mode is vibeiqfile-dontsendtoflexplm', async () => {
|
|
2100
2100
|
const bppa = new BaseProcessPublishAssortment(config, dc, mapFileUtil);
|
|
2101
2101
|
|
|
2102
2102
|
const spyFlex = jest.spyOn(FlexPLMConnect.prototype, 'sendToFlexPLM')
|
|
2103
2103
|
.mockResolvedValue({} as any);
|
|
2104
|
-
const spyEvent = jest.spyOn(bppa, 'sendPublishPayloadEvent')
|
|
2104
|
+
const spyEvent = jest.spyOn(bppa as any, 'sendPublishPayloadEvent')
|
|
2105
2105
|
.mockResolvedValue(undefined as any);
|
|
2106
2106
|
|
|
2107
2107
|
const result = await (bppa as any).handleVibeIQFile(events, eventType, 'vibeiqfile-dontsendtoflexplm');
|
|
@@ -2117,36 +2117,36 @@ describe('sendToFlexPLM / handleVibeIQFile / sendPublishPayloadEvent', () => {
|
|
|
2117
2117
|
});
|
|
2118
2118
|
});
|
|
2119
2119
|
|
|
2120
|
-
it('
|
|
2120
|
+
it('should create an external-event with initialEvent parsed from config', async () => {
|
|
2121
2121
|
const bppa = new BaseProcessPublishAssortment(config, dc, mapFileUtil);
|
|
2122
|
-
const
|
|
2122
|
+
const outboundPublishEvent = { foo: 'bar' };
|
|
2123
2123
|
|
|
2124
|
-
await bppa.sendPublishPayloadEvent(
|
|
2124
|
+
await (bppa as any).sendPublishPayloadEvent(outboundPublishEvent);
|
|
2125
2125
|
|
|
2126
2126
|
expect(createCallArg).toEqual({
|
|
2127
2127
|
entityName: 'external-event',
|
|
2128
2128
|
object: {
|
|
2129
2129
|
originSystemType: 'VibeIQ',
|
|
2130
2130
|
objectClass: 'AssortmentPublishedToFlexPLM',
|
|
2131
|
-
|
|
2131
|
+
outboundPublishEvent,
|
|
2132
2132
|
initialEvent: { sourceEventId: 'src-1' }
|
|
2133
2133
|
}
|
|
2134
2134
|
});
|
|
2135
2135
|
});
|
|
2136
2136
|
|
|
2137
|
-
it('
|
|
2137
|
+
it('should default initialEvent to {} when config has no event', async () => {
|
|
2138
2138
|
const bareConfig = { taskId: 'task-x' } as unknown as FCConfig;
|
|
2139
2139
|
const bppa = new BaseProcessPublishAssortment(bareConfig, dc, mapFileUtil);
|
|
2140
|
-
const
|
|
2140
|
+
const outboundPublishEvent = { hello: 'world' };
|
|
2141
2141
|
|
|
2142
|
-
await bppa.sendPublishPayloadEvent(
|
|
2142
|
+
await (bppa as any).sendPublishPayloadEvent(outboundPublishEvent);
|
|
2143
2143
|
|
|
2144
2144
|
expect(createCallArg).toEqual({
|
|
2145
2145
|
entityName: 'external-event',
|
|
2146
2146
|
object: {
|
|
2147
2147
|
originSystemType: 'VibeIQ',
|
|
2148
2148
|
objectClass: 'AssortmentPublishedToFlexPLM',
|
|
2149
|
-
|
|
2149
|
+
outboundPublishEvent,
|
|
2150
2150
|
initialEvent: {}
|
|
2151
2151
|
}
|
|
2152
2152
|
});
|
|
@@ -693,10 +693,11 @@ export class BaseProcessPublishAssortment {
|
|
|
693
693
|
};
|
|
694
694
|
|
|
695
695
|
const flexPLMConnect = new FlexPLMConnect(this.config);
|
|
696
|
-
const [
|
|
696
|
+
const [sendResult] = await Promise.allSettled([
|
|
697
697
|
flexPLMConnect.sendToFlexPLM(outboundPublishEvent),
|
|
698
698
|
this.sendPublishPayloadEvent(outboundPublishEvent)
|
|
699
699
|
]);
|
|
700
|
+
const result = sendResult.status === 'fulfilled' ? sendResult.value : { error: sendResult.reason?.message };
|
|
700
701
|
const isResultObject = typeof result === 'object' && result !== null;
|
|
701
702
|
const resultWithOutboundPublishEvent = isResultObject
|
|
702
703
|
? { ...result, outboundPublishEvent }
|
|
@@ -756,10 +757,11 @@ export class BaseProcessPublishAssortment {
|
|
|
756
757
|
|
|
757
758
|
if (sendMode === 'vibeiqfile') {
|
|
758
759
|
const flexPLMConnect = new FlexPLMConnect(this.config);
|
|
759
|
-
const [
|
|
760
|
+
const [sendResult] = await Promise.allSettled([
|
|
760
761
|
flexPLMConnect.sendToFlexPLM(outboundPublishEvent),
|
|
761
762
|
this.sendPublishPayloadEvent(outboundPublishEvent)
|
|
762
763
|
]);
|
|
764
|
+
const result = sendResult.status === 'fulfilled' ? sendResult.value : { error: sendResult.reason?.message };
|
|
763
765
|
return { ...result, outboundPublishEvent };
|
|
764
766
|
} else {
|
|
765
767
|
await this.sendPublishPayloadEvent(outboundPublishEvent);
|
|
@@ -770,10 +772,10 @@ export class BaseProcessPublishAssortment {
|
|
|
770
772
|
}
|
|
771
773
|
}
|
|
772
774
|
|
|
773
|
-
|
|
775
|
+
private async sendPublishPayloadEvent(outboundPublishEvent: AsyncEventsPayloadType){
|
|
774
776
|
console.info('sendPublishPayloadEvent()');
|
|
775
777
|
let initialEvent = {};
|
|
776
|
-
if(this.config?.event){
|
|
778
|
+
if (this.config?.event){
|
|
777
779
|
initialEvent = (typeof this.config?.event === 'string')
|
|
778
780
|
? JSON.parse(this.config?.event)
|
|
779
781
|
: this.config?.event;
|
|
@@ -781,7 +783,7 @@ export class BaseProcessPublishAssortment {
|
|
|
781
783
|
const eventBody = {
|
|
782
784
|
originSystemType: 'VibeIQ',
|
|
783
785
|
objectClass: 'AssortmentPublishedToFlexPLM',
|
|
784
|
-
|
|
786
|
+
outboundPublishEvent,
|
|
785
787
|
initialEvent
|
|
786
788
|
};
|
|
787
789
|
|