@contrail/flexplm 1.1.64 → 1.1.66

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.
@@ -280,6 +280,9 @@ class BaseEntityProcessor {
280
280
  const flexPayload = (payload) ? payload[0] : undefined;
281
281
  let outboundEntityUpdates = undefined;
282
282
  if (flexPayload && 'OK' === flexPayload.status) {
283
+ if (flexPayload.data && !flexPayload.data?.flexPLMObjectClass) {
284
+ flexPayload.data.flexPLMObjectClass = flexPayload.objectClass;
285
+ }
283
286
  const inboundData = await this.getTransformedData(flexPayload);
284
287
  outboundEntityUpdates = await this.getUpdatesForEntity(event.newData, inboundData);
285
288
  }
@@ -91,6 +91,85 @@ describe('BaseEntityProcessor', () => {
91
91
  expect(getUpdatesForEntitySpy).toBeCalledTimes(0);
92
92
  expect(updates).toBeUndefined();
93
93
  });
94
+ it('should set flexPLMObjectClass when data exists but flexPLMObjectClass is missing', async () => {
95
+ const btep = new TestBaseEntityProcessor(config, dc, mapFileUtil, 'test');
96
+ const event = { newData: { id: '123' } };
97
+ const flexResponse = {
98
+ data: {
99
+ payload: [
100
+ {
101
+ status: 'OK',
102
+ objectClass: 'Material',
103
+ data: {
104
+ name: 'Test Material'
105
+ }
106
+ }
107
+ ]
108
+ }
109
+ };
110
+ const getTransformedDataSpy = jest.spyOn(btep, 'getTransformedData').mockReturnValue(Promise.resolve({}));
111
+ const returnValue = {
112
+ name: 'Test'
113
+ };
114
+ const getUpdatesForEntitySpy = jest.spyOn(btep, 'getUpdatesForEntity').mockReturnValue(Promise.resolve(returnValue));
115
+ await btep.getOutboundEntityUpdates(event, flexResponse);
116
+ expect(flexResponse.data.payload[0].data['flexPLMObjectClass']).toBe('Material');
117
+ expect(getTransformedDataSpy).toBeCalledTimes(1);
118
+ expect(getTransformedDataSpy).toBeCalledWith(flexResponse.data.payload[0]);
119
+ expect(getUpdatesForEntitySpy).toBeCalledTimes(1);
120
+ });
121
+ it('should not override existing flexPLMObjectClass', async () => {
122
+ const btep = new TestBaseEntityProcessor(config, dc, mapFileUtil, 'test');
123
+ const event = { newData: { id: '123' } };
124
+ const flexResponse = {
125
+ data: {
126
+ payload: [
127
+ {
128
+ status: 'OK',
129
+ objectClass: 'Material',
130
+ data: {
131
+ name: 'Test Material',
132
+ flexPLMObjectClass: 'ExistingClass'
133
+ }
134
+ }
135
+ ]
136
+ }
137
+ };
138
+ const getTransformedDataSpy = jest.spyOn(btep, 'getTransformedData').mockReturnValue(Promise.resolve({}));
139
+ const returnValue = {
140
+ name: 'Test'
141
+ };
142
+ const getUpdatesForEntitySpy = jest.spyOn(btep, 'getUpdatesForEntity').mockReturnValue(Promise.resolve(returnValue));
143
+ await btep.getOutboundEntityUpdates(event, flexResponse);
144
+ expect(flexResponse.data.payload[0].data.flexPLMObjectClass).toBe('ExistingClass');
145
+ expect(getTransformedDataSpy).toBeCalledTimes(1);
146
+ expect(getTransformedDataSpy).toBeCalledWith(flexResponse.data.payload[0]);
147
+ expect(getUpdatesForEntitySpy).toBeCalledTimes(1);
148
+ });
149
+ it('should handle when data is null or undefined', async () => {
150
+ const btep = new TestBaseEntityProcessor(config, dc, mapFileUtil, 'test');
151
+ const event = { newData: { id: '123' } };
152
+ const flexResponse = {
153
+ data: {
154
+ payload: [
155
+ {
156
+ status: 'OK',
157
+ objectClass: 'Material',
158
+ data: null
159
+ }
160
+ ]
161
+ }
162
+ };
163
+ const getTransformedDataSpy = jest.spyOn(btep, 'getTransformedData').mockReturnValue(Promise.resolve({}));
164
+ const returnValue = {
165
+ name: 'Test'
166
+ };
167
+ const getUpdatesForEntitySpy = jest.spyOn(btep, 'getUpdatesForEntity').mockReturnValue(Promise.resolve(returnValue));
168
+ await btep.getOutboundEntityUpdates(event, flexResponse);
169
+ expect(getTransformedDataSpy).toBeCalledTimes(1);
170
+ expect(getTransformedDataSpy).toBeCalledWith(flexResponse.data.payload[0]);
171
+ expect(getUpdatesForEntitySpy).toBeCalledTimes(1);
172
+ });
94
173
  });
95
174
  describe('queryEntityWithSubType', () => {
96
175
  const config = {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrail/flexplm",
3
- "version": "1.1.64",
3
+ "version": "1.1.66",
4
4
  "description": "Library used for integration with flexplm.",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -14,7 +14,7 @@
14
14
  "test-coverage": "jest --coverage"
15
15
  },
16
16
  "keywords": [],
17
- "author": "",
17
+ "author": "VibeIQ",
18
18
  "license": "ISC",
19
19
  "devDependencies": {
20
20
  "@types/jest": "^29.5.2",