mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-29 20:11:32 +02:00
Merge pull request #23248 from overleaf/jdt-institutional-policies-include-past-affiliates
Policy checks apply for lapsed affiliates GitOrigin-RevId: b4d42a2dc2d43b531886fb4eb8c4c6d990e324e7
This commit is contained in:
committed by
Copybot
parent
e43da5569c
commit
a249c8e643
@@ -18,6 +18,19 @@ async function getCurrentAffiliations(userId) {
|
||||
.map(emailData => emailData.affiliation)
|
||||
}
|
||||
|
||||
async function getCurrentAndPastAffiliationIds(userId) {
|
||||
let fullEmails = await UserGetter.promises.getUserFullEmails(userId)
|
||||
// current are those confirmed and not with lapsed reconfirmations
|
||||
fullEmails = fullEmails
|
||||
.filter(
|
||||
emailData =>
|
||||
emailData.confirmedAt && emailData.affiliation?.institution?.confirmed
|
||||
)
|
||||
.map(emailData => emailData.affiliation.institution.id)
|
||||
// remove dupes
|
||||
return [...new Set(fullEmails)]
|
||||
}
|
||||
|
||||
async function getCurrentInstitutionIds(userId) {
|
||||
// current are those confirmed and not with lapsed reconfirmations
|
||||
// only 1 record returned per current institutionId
|
||||
@@ -81,6 +94,7 @@ InstitutionsGetter.promises = {
|
||||
getCurrentAffiliations,
|
||||
getCurrentInstitutionIds,
|
||||
getCurrentInstitutionsWithLicence,
|
||||
getCurrentAndPastAffiliationIds,
|
||||
getManagedInstitutions: promisify(InstitutionsGetter.getManagedInstitutions),
|
||||
}
|
||||
|
||||
|
||||
@@ -124,6 +124,15 @@ describe('InstitutionsGetter', function () {
|
||||
},
|
||||
},
|
||||
]
|
||||
this.fullEmailCollection = [
|
||||
this.licencedAffiliation,
|
||||
this.licencedAffiliation,
|
||||
this.licencedAffiliationPastReconfirmation,
|
||||
this.confirmedAffiliation,
|
||||
this.confirmedAffiliationPastReconfirmation,
|
||||
this.unconfirmedDomainLicensedAffiliation,
|
||||
this.unconfirmedEmailLicensedAffiliation,
|
||||
]
|
||||
})
|
||||
|
||||
describe('getCurrentInstitutionIds', function () {
|
||||
@@ -158,16 +167,32 @@ describe('InstitutionsGetter', function () {
|
||||
})
|
||||
})
|
||||
|
||||
describe('getCurrentAndPastAffiliationIds', function () {
|
||||
it('filters unconfirmed affiliations, preserves those past reconfirmation, and returns only 1 result per institution', async function () {
|
||||
this.UserGetter.promises.getUserFullEmails.resolves(
|
||||
this.fullEmailCollection
|
||||
)
|
||||
const institutions =
|
||||
await this.InstitutionsGetter.promises.getCurrentAndPastAffiliationIds(
|
||||
this.userId
|
||||
)
|
||||
expect(institutions).to.deep.equal([777, 888, 456, 135])
|
||||
})
|
||||
it('handles empty response', async function () {
|
||||
this.UserGetter.promises.getUserFullEmails.resolves([])
|
||||
const institutions =
|
||||
await this.InstitutionsGetter.promises.getCurrentInstitutionIds(
|
||||
this.userId
|
||||
)
|
||||
expect(institutions).to.deep.equal([])
|
||||
})
|
||||
})
|
||||
|
||||
describe('getCurrentInstitutionsWithLicence', function () {
|
||||
it('returns one result per institution and filters out affiliations without license', async function () {
|
||||
this.UserGetter.promises.getUserFullEmails.resolves([
|
||||
this.licencedAffiliation,
|
||||
this.licencedAffiliation,
|
||||
this.licencedAffiliationPastReconfirmation,
|
||||
this.confirmedAffiliation,
|
||||
this.unconfirmedDomainLicensedAffiliation,
|
||||
this.unconfirmedEmailLicensedAffiliation,
|
||||
])
|
||||
this.UserGetter.promises.getUserFullEmails.resolves(
|
||||
this.fullEmailCollection
|
||||
)
|
||||
const institutions =
|
||||
await this.InstitutionsGetter.promises.getCurrentInstitutionsWithLicence(
|
||||
this.userId
|
||||
|
||||
Reference in New Issue
Block a user