-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8fd31b3
commit 3cce0a0
Showing
7 changed files
with
223 additions
and
118 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
72 changes: 72 additions & 0 deletions
72
src/client/modules/Contacts/ContactDetails/__test__/transformers.test.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
import 'core-js/proposals/array-grouping-v2' | ||
import { transformContactConsents } from '../transformers' | ||
|
||
describe('transformContactConsents', () => { | ||
context('When a falsey contact is passed', () => { | ||
it('Should return undefined', () => { | ||
expect(transformContactConsents(undefined)).to.be.undefined | ||
}) | ||
}) | ||
context('When a contact has no consent data', () => { | ||
it('Should return undefined', () => { | ||
expect(transformContactConsents({})).to.be.undefined | ||
}) | ||
}) | ||
context('When a contact with a single unique value for domain', () => { | ||
it('Should return a single domain with a single topic', () => { | ||
expect( | ||
transformContactConsents({ | ||
consentData: [ | ||
{ | ||
topic: 'Topic 1', | ||
sourceSystem: 'System A', | ||
consentDomain: 'International', | ||
emailContactConsent: false, | ||
telephoneContactConsent: false, | ||
}, | ||
], | ||
}) | ||
).to.deep.equal([ | ||
{ | ||
domain: 'International', | ||
topics: [{ consent: false, name: 'Topic 1' }], | ||
}, | ||
]) | ||
}) | ||
}) | ||
context('When a contact has multiple values for domain', () => { | ||
it('Should return a single domain with multiple topics', () => { | ||
expect( | ||
transformContactConsents({ | ||
consentData: [ | ||
{ | ||
topic: 'Topic 1', | ||
sourceSystem: 'System A', | ||
consentDomain: 'International', | ||
emailContactConsent: false, | ||
telephoneContactConsent: false, | ||
}, | ||
{ | ||
topic: 'Topic 2', | ||
sourceSystem: 'System A', | ||
consentDomain: 'International', | ||
emailContactConsent: false, | ||
telephoneContactConsent: true, | ||
}, | ||
], | ||
}) | ||
).to.deep.equal([ | ||
{ | ||
domain: 'International', | ||
topics: [ | ||
{ consent: false, name: 'Topic 1' }, | ||
{ | ||
consent: true, | ||
name: 'Topic 2', | ||
}, | ||
], | ||
}, | ||
]) | ||
}) | ||
}) | ||
}) |
18 changes: 18 additions & 0 deletions
18
src/client/modules/Contacts/ContactDetails/transformers.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
export const transformContactConsents = (contact) => { | ||
if (!contact || !contact.consentData) { | ||
return undefined | ||
} | ||
|
||
const domainGroupedConsent = Object.groupBy( | ||
contact.consentData, | ||
({ consentDomain }) => consentDomain | ||
) | ||
|
||
return Object.entries(domainGroupedConsent).map((domain) => ({ | ||
domain: domain[0], | ||
topics: domain[1].map((topic) => ({ | ||
consent: topic.emailContactConsent || topic.telephoneContactConsent, | ||
name: topic.topic, | ||
})), | ||
})) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,43 +1,50 @@ | ||
{ | ||
"id":"f3d19ea7-d4cf-43e0-8e97-755c57cae313", | ||
"title":null, | ||
"first_name":"Joseph", | ||
"last_name":"Woof", | ||
"name":"Joseph Woof", | ||
"job_title":"Dog master", | ||
"company":{ | ||
"name":"Zboncak Group|271eb29e-425b-4cd8-b386-3208c3a5f978", | ||
"id":"4cd4128b-1bad-4f1e-9146-5d4678c6a018" | ||
"id": "f3d19ea7-d4cf-43e0-8e97-755c57cae313", | ||
"title": null, | ||
"first_name": "Joseph", | ||
"last_name": "Woof", | ||
"name": "Joseph Woof", | ||
"job_title": "Dog master", | ||
"company": { | ||
"name": "Zboncak Group|271eb29e-425b-4cd8-b386-3208c3a5f978", | ||
"id": "4cd4128b-1bad-4f1e-9146-5d4678c6a018" | ||
}, | ||
"adviser":{ | ||
"name":"DBT Staff", | ||
"first_name":"DBT", | ||
"last_name":"Staff", | ||
"id":"7d19d407-9aec-4d06-b190-d3f404627f21" | ||
"adviser": { | ||
"name": "DBT Staff", | ||
"first_name": "DBT", | ||
"last_name": "Staff", | ||
"id": "7d19d407-9aec-4d06-b190-d3f404627f21" | ||
}, | ||
"primary":true, | ||
"telephone_countrycode":"", | ||
"telephone_number":"", | ||
"full_telephone_number":"222 3453454", | ||
"email":"[email protected]", | ||
"address_same_as_company":false, | ||
"primary": true, | ||
"telephone_countrycode": "", | ||
"telephone_number": "", | ||
"full_telephone_number": "222 3453454", | ||
"email": "[email protected]", | ||
"address_same_as_company": false, | ||
"address_1": null, | ||
"address_2":null, | ||
"address_town":null, | ||
"address_county":null, | ||
"address_2": null, | ||
"address_town": null, | ||
"address_county": null, | ||
"address_country": { | ||
"id": "80756b9a-5d95-e211-a939-e4115bead28a" | ||
}, | ||
"address_postcode":"E14 8RJ", | ||
"telephone_alternative":null, | ||
"email_alternative":null, | ||
"notes":null, | ||
"accepts_dit_email_marketing":false, | ||
"archived":false, | ||
"archived_documents_url_path":"/document/123", | ||
"archived_on":null, | ||
"archived_reason":null, | ||
"archived_by":null, | ||
"created_on":"2019-02-04T15:59:14.267412Z", | ||
"modified_on":"2019-02-05T13:17:23.112153Z" | ||
"address_postcode": "E14 8RJ", | ||
"telephone_alternative": null, | ||
"email_alternative": null, | ||
"notes": null, | ||
"accepts_dit_email_marketing": false, | ||
"archived": false, | ||
"archived_documents_url_path": "/document/123", | ||
"archived_on": null, | ||
"archived_reason": null, | ||
"archived_by": null, | ||
"created_on": "2019-02-04T15:59:14.267412Z", | ||
"modified_on": "2019-02-05T13:17:23.112153Z", | ||
"consent_data": [ | ||
{ | ||
"source_system": "System A", | ||
"consent_domain": "Domestic", | ||
"consent": false | ||
} | ||
] | ||
} |
93 changes: 50 additions & 43 deletions
93
test/sandbox/fixtures/v3/contact/contact-complete-details-uk.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,44 +1,51 @@ | ||
{ | ||
"id":"2676ea91-9dd7-4cf3-a4a3-67b06f841b54", | ||
"title":null, | ||
"first_name":"Joseph", | ||
"last_name":"Woof", | ||
"name":"Joseph Woof", | ||
"job_title":"Dog master", | ||
"company":{ | ||
"name":"Zboncak Group|271eb29e-425b-4cd8-b386-3208c3a5f978", | ||
"id":"4cd4128b-1bad-4f1e-9146-5d4678c6a018" | ||
}, | ||
"adviser":{ | ||
"name":"DBT Staff", | ||
"first_name":"DBT", | ||
"last_name":"Staff", | ||
"id":"7d19d407-9aec-4d06-b190-d3f404627f21" | ||
}, | ||
"primary":true, | ||
"telephone_countrycode":"", | ||
"telephone_number":"", | ||
"full_telephone_number":"222 3453454", | ||
"email":"[email protected]", | ||
"address_same_as_company":false, | ||
"address_1":"123 Test Street", | ||
"address_2":"Address Line 2", | ||
"address_town":"Sandbox Town", | ||
"address_county":"Test County", | ||
"address_country": { | ||
"id": "80756b9a-5d95-e211-a939-e4115bead28a", | ||
"name": "United Kingdom" | ||
}, | ||
"address_postcode":"AB1 2CD", | ||
"telephone_alternative":null, | ||
"email_alternative":null, | ||
"notes":"An example of a contact for testing purposes", | ||
"accepts_dit_email_marketing":true, | ||
"archived":false, | ||
"archived_documents_url_path":"/document/123", | ||
"archived_on":null, | ||
"archived_reason":null, | ||
"archived_by":null, | ||
"created_on":"2019-02-04T15:59:14.267412Z", | ||
"modified_on":"2019-02-05T13:17:23.112153Z" | ||
} | ||
"id": "2676ea91-9dd7-4cf3-a4a3-67b06f841b54", | ||
"title": null, | ||
"first_name": "Joseph", | ||
"last_name": "Woof", | ||
"name": "Joseph Woof", | ||
"job_title": "Dog master", | ||
"company": { | ||
"name": "Zboncak Group|271eb29e-425b-4cd8-b386-3208c3a5f978", | ||
"id": "4cd4128b-1bad-4f1e-9146-5d4678c6a018" | ||
}, | ||
"adviser": { | ||
"name": "DBT Staff", | ||
"first_name": "DBT", | ||
"last_name": "Staff", | ||
"id": "7d19d407-9aec-4d06-b190-d3f404627f21" | ||
}, | ||
"primary": true, | ||
"telephone_countrycode": "", | ||
"telephone_number": "", | ||
"full_telephone_number": "222 3453454", | ||
"email": "[email protected]", | ||
"address_same_as_company": false, | ||
"address_1": "123 Test Street", | ||
"address_2": "Address Line 2", | ||
"address_town": "Sandbox Town", | ||
"address_county": "Test County", | ||
"address_country": { | ||
"id": "80756b9a-5d95-e211-a939-e4115bead28a", | ||
"name": "United Kingdom" | ||
}, | ||
"address_postcode": "AB1 2CD", | ||
"telephone_alternative": null, | ||
"email_alternative": null, | ||
"notes": "An example of a contact for testing purposes", | ||
"accepts_dit_email_marketing": true, | ||
"archived": false, | ||
"archived_documents_url_path": "/document/123", | ||
"archived_on": null, | ||
"archived_reason": null, | ||
"archived_by": null, | ||
"created_on": "2019-02-04T15:59:14.267412Z", | ||
"modified_on": "2019-02-05T13:17:23.112153Z", | ||
"consent_data": [ | ||
{ | ||
"source_system": "System B", | ||
"consent_domain": "International", | ||
"consent": true | ||
} | ||
] | ||
} |