Skip to content

Commit eebbae4

Browse files
authored
Merge pull request #6300 from specify/issue-6299
Only change CO -> catNum for new COs when COT changes
2 parents 6575317 + f80ed0e commit eebbae4

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed

specifyweb/frontend/js_src/lib/components/DataModel/__tests__/businessRules.test.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,14 +191,15 @@ describe('Collection Object business rules', () => {
191191
await collectionObject.businessRuleManager?.pendingPromise;
192192
});
193193

194-
test('CollectionObject -> catalogNumber is reset whenever existing CollectionObject -> collectionObjectType changes', async () => {
194+
test('CollectionObject -> catalogNumber is not reset whenever existing CollectionObject -> collectionObjectType changes', async () => {
195195
const collectionObject = getBaseCollectionObject();
196-
expect(collectionObject.get('catalogNumber')).toBe('123');
196+
const expectedCatNumber = '123';
197+
expect(collectionObject.get('catalogNumber')).toBe(expectedCatNumber);
197198
collectionObject.set(
198199
'collectionObjectType',
199200
getResourceApiUrl('CollectionObjectType', 2)
200201
);
201-
expect(collectionObject.get('catalogNumber')).toBe('2022-######');
202+
expect(collectionObject.get('catalogNumber')).toBe(expectedCatNumber);
202203
// Wait for any pending promise to complete before test finishes
203204
await collectionObject.businessRuleManager?.pendingPromise;
204205
});

specifyweb/frontend/js_src/lib/components/DataModel/businessRuleDefs.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -182,15 +182,17 @@ export const businessRuleDefs: MappedBusinessRuleDefs = {
182182
},
183183
fieldChecks: {
184184
collectionObjectType: async (resource): Promise<undefined> => {
185-
const parser = resolveParser(
186-
resource.specifyTable.strictGetLiteralField('catalogNumber'),
187-
undefined,
188-
resource
189-
);
190-
// REFACTOR: non-silent set causes infinite loop and silent set still triggers save blocker when parser value is empty string
191-
resource.set('catalogNumber', parser.value as never, {
192-
silent: (parser.value ?? '') === '',
193-
});
185+
if (resource.isNew()) {
186+
const parser = resolveParser(
187+
resource.specifyTable.strictGetLiteralField('catalogNumber'),
188+
undefined,
189+
resource
190+
);
191+
// REFACTOR: non-silent set causes infinite loop and silent set still triggers save blocker when parser value is empty string
192+
resource.set('catalogNumber', parser.value as never, {
193+
silent: (parser.value ?? '') === '',
194+
});
195+
}
194196

195197
const determinations = resource.getDependentResource('determinations');
196198
if (determinations === undefined || determinations.models.length === 0)

0 commit comments

Comments
 (0)