Unverified Commit 842af22b authored by deveshMantra's avatar deveshMantra Committed by GitHub
Browse files

Issue #SH-489 fix:teacher form not updating as expected (#4405)

parent 2bc321b9
master Dark_theme SB-25589 SB-28090 aws_fileRead contributions dependabot/npm_and_yarn/src/app/client/decode-uri-component-0.2.2 dependabot/npm_and_yarn/src/app/decode-uri-component-0.2.2 dependabot/npm_and_yarn/src/app/express-4.17.3 dependabot/npm_and_yarn/src/app/jsonwebtoken-9.0.0 dependabot/npm_and_yarn/src/desktop/OpenRAP/decode-uri-component-0.2.2 dependabot/npm_and_yarn/src/desktop/OpenRAP/express-4.17.3 dependabot/npm_and_yarn/src/desktop/OpenRAP/jsonwebtoken-9.0.0 dependabot/npm_and_yarn/src/desktop/OpenRAP/qs-6.5.3 dependabot/npm_and_yarn/src/desktop/decode-uri-component-0.2.2 dependabot/npm_and_yarn/src/desktop/express-4.17.3 dependabot/npm_and_yarn/src/desktop/jsonwebtoken-9.0.0 dependabot/npm_and_yarn/src/desktop/qs-6.10.3 filters_5.1.1 gcp gcp_test keshavprasadms-patch-1 keshavprasadms-patch-2 release-3.0.1 release-3.0.2 release-3.0.3 release-3.0.4 release-3.0.4-sso release-3.1.0 release-3.1.1 release-3.1.2 release-3.2.0 release-3.2.1 release-3.2.10 release-3.2.11 release-3.2.12 release-3.2.13 release-3.2.14 release-3.2.2 release-3.2.3 release-3.2.4 release-3.3.0 release-3.3.0-telemetry-fix release-3.3.1 release-3.3.2 release-3.4.0 release-3.4.1 release-3.4.2 release-3.4.3 release-3.4.4 release-3.4.5 release-3.4.6 release-3.4.7 release-3.5.0 release-3.5.1 release-3.5.2 release-3.5.3 release-3.6.0 release-3.6.1 release-3.6.5 release-3.6.6 release-3.7.0 release-3.7.1 release-3.7.2 release-3.8.0 release-3.8.1 release-3.8.2 release-3.8.3 release-3.9.0 release-3.9.1 release-3.9.2 release-3.9.3 release-4.0.0 release-4.0.1 release-4.0.2 release-4.1 release-4.1.0 release-4.1.1 release-4.10.0 release-4.10.0.1 release-4.10.1 release-4.10.2 release-4.10.2.1 release-4.10.2.2 release-4.10.3 release-4.2.0 release-4.2.1 release-4.3.0 release-4.3.1 release-4.4.0 release-4.4.1 release-4.5.0 release-4.5.1 release-4.5.2 release-4.6.0 release-4.7.0 release-4.7.1 release-4.8.0 release-4.8.5 release-4.9.0 release-4.9.1 release-5.0.0 release-5.0.0.1 release-5.0.0.2 release-5.0.0.3 release-5.0.1 release-5.0.2 release-5.1.0 release-5.1.1 revert-4427-player-cache-issue revert-4537-SB-19763 revert-5244-sh-809 revert-5260-SB-table-3.3.0 revert-8284-release-5.0.0 sharathkashyap-patch-1 Tags unavailable
No related merge requests found
Showing with 77 additions and 20 deletions
+77 -20
......@@ -558,5 +558,23 @@ export const mockRes = {
'tncAcceptedVersion': 'v1'
}
}
},
externalId: [
{
"idType": "declared-ext-id",
"provider": "tp",
"id": "p"
},
{
"idType": "declared-school-name",
"provider": "tp",
"id": "2222"
}
],
stateDetails: {
'code': '50',
'name': 'mock state',
'id': '969dd3c1-4e9',
'type': 'state'
}
};
......@@ -227,5 +227,33 @@ describe('SubmitTeacherDetailsComponent', () => {
const data = component.isStateChanged();
expect(data).toBe(false);
});
it('should return add operation as form action is submit', () => {
component.formAction = 'submit';
const data = component.getOperation('declared-school-name', 'tp', '2222');
expect(data).toBe('add');
});
it('should return add operation as form action is update and state changed', () => {
const userData = mockRes.userData.result.response;
const state = component.userDetailsForm.controls['state'];
state.setValue(mockRes.stateDetails);
component.formAction = 'update';
userData.externalIds = mockRes.externalId;
component.userProfile = userData;
const data = component.getOperation('declared-school-name', 'tp', '2222');
expect(data).toBe('add');
});
it('should return edit operation as form action is update and value present in userprofile', () => {
const userData = mockRes.userData.result.response;
const state = component.userDetailsForm.controls['state'];
state.setValue(userData.userLocations[1]);
component.formAction = 'update';
userData.externalIds = mockRes.externalId;
component.userProfile = userData;
const data = component.getOperation('declared-school-name', 'tp', '2222');
expect(data).toBe('edit');
});
});
......@@ -236,6 +236,25 @@ export class SubmitTeacherDetailsComponent implements OnInit, OnDestroy {
return isStateChanged;
}
getOperation(fieldType, provider, inputFieldValue) {
let operation;
if (this.formAction === 'submit' || this.formAction === 'update' && this.isStateChanged()) {
operation = 'add'
} else {
const externalIdObj = this.findExternalIdObj(fieldType, provider);
operation = externalIdObj ? inputFieldValue ? 'edit' : 'remove' : 'add';
}
return operation;
}
findExternalIdObj(fieldType, provider) {
const externalIds = _.get(this.userProfile, 'externalIds');
const externalIdObj = _.find(externalIds, function (externalId) {
return (externalId.idType === fieldType && externalId.provider === provider)
});
return externalIdObj && externalIdObj.id
}
onSubmitForm() {
this.searchService.getOrganisationDetails({ locationIds: [_.get(this.userDetailsForm, 'value.state.id')] }).pipe(
takeUntil(this.unsubscribe))
......@@ -246,34 +265,26 @@ export class SubmitTeacherDetailsComponent implements OnInit, OnDestroy {
if (_.get(this.userDetailsForm, 'value.state.code')) { locationCodes.push(_.get(this.userDetailsForm, 'value.state.code')); }
if (_.get(this.userDetailsForm, 'value.district')) { locationCodes.push(_.get(this.userDetailsForm, 'value.district')); }
const provider = _.get(orgData, 'result.response.content[0].channel');
let operation = this.formAction === 'submit' ? 'add' : 'edit';
let externalIds = [];
if (this.formAction === 'update' && this.isStateChanged() || provider !== _.get(this.userProfile, 'externalIds[0].provider')) {
operation = 'add';
const extIds = this.userProfile.externalIds || [];
_.forEach(extIds, (externalId, index) => {
extIds[index]['operation'] = 'remove';
});
externalIds = extIds.concat(externalIds);
}
if (_.get(this.userDetailsForm, 'value.school')) {
externalIds.push({
id: _.get(this.userDetailsForm, 'value.school'),
operation, idType: 'declared-school-name', provider
});
}
if (_.get(this.userDetailsForm, 'value.udiseId')) {
externalIds.push({
id: _.get(this.userDetailsForm, 'value.udiseId'),
operation, idType: 'declared-school-udise-code', provider
});
}
if (_.get(this.userDetailsForm, 'value.teacherId')) {
externalIds.push({
id: _.get(this.userDetailsForm, 'value.teacherId'),
operation, idType: 'declared-ext-id', provider
});
}
const fields = new Map([['value.school', 'declared-school-name'], ['value.udiseId', 'declared-school-udise-code'], ['value.teacherId', 'declared-ext-id']]);
fields.forEach((fieldKey, formKey) => {
const id = _.get(this.userDetailsForm, formKey) || this.findExternalIdObj(fieldKey, provider);
if (id) {
externalIds.push({
id,
operation: this.getOperation(fieldKey, provider, _.get(this.userDetailsForm, formKey)),
idType: fieldKey,
provider
});
}
});
const data = {
userId: this.userService.userid,
locationCodes,
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment