From ef37902dfc36d16fe5274f0c215c11cef6294086 Mon Sep 17 00:00:00 2001 From: Tim Alby Date: Mon, 27 Aug 2018 11:37:59 +0200 Subject: [PATCH] check institution confirmation status --- .../Institutions/InstitutionsGetter.coffee | 2 +- .../acceptance/coffee/FeatureUpdaterTests.coffee | 15 ++++++++++++--- .../Institutions/InstitutionsGetterTests.coffee | 7 ++++--- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/services/web/app/coffee/Features/Institutions/InstitutionsGetter.coffee b/services/web/app/coffee/Features/Institutions/InstitutionsGetter.coffee index e5941dc777..98ffcec533 100644 --- a/services/web/app/coffee/Features/Institutions/InstitutionsGetter.coffee +++ b/services/web/app/coffee/Features/Institutions/InstitutionsGetter.coffee @@ -7,7 +7,7 @@ module.exports = InstitutionsGetter = return callback error if error? confirmedInstitutions = emailsData.filter (emailData) -> - emailData.confirmedAt? and emailData.affiliation?.institution? + emailData.confirmedAt? and emailData.affiliation?.institution?.confirmed .map (emailData) -> emailData.affiliation?.institution diff --git a/services/web/test/acceptance/coffee/FeatureUpdaterTests.coffee b/services/web/test/acceptance/coffee/FeatureUpdaterTests.coffee index d2918c1094..ceef1e0c36 100644 --- a/services/web/test/acceptance/coffee/FeatureUpdaterTests.coffee +++ b/services/web/test/acceptance/coffee/FeatureUpdaterTests.coffee @@ -89,22 +89,31 @@ describe "FeatureUpdater.refreshFeatures", -> @institutionPlan = settings.plans.find (plan) -> plan.planCode == settings.institutionPlanCode @email = @user.emails[0].email - affiliationData = + @affiliationData = email: @email - institution: { licence: 'pro_plus' } - MockV1Api.setAffiliations [affiliationData] + institution: { licence: 'pro_plus', confirmed: true } it "should not set their features if email is not confirmed", (done) -> + MockV1Api.setAffiliations [@affiliationData] syncUserAndGetFeatures @user, (error, features) => expect(features).to.deep.equal(settings.defaultFeatures) done() it "should set their features if email is confirmed", (done) -> + MockV1Api.setAffiliations [@affiliationData] @user.confirmEmail @email, (error) => syncUserAndGetFeatures @user, (error, features) => expect(features).to.deep.equal(@institutionPlan.features) done() + it "should not set their features if institution is not confirmed", (done) -> + @affiliationData.institution.confirmed = false + MockV1Api.setAffiliations [@affiliationData] + @user.confirmEmail @email, (error) => + syncUserAndGetFeatures @user, (error, features) => + expect(features).to.deep.equal(settings.defaultFeatures) + done() + describe "when the user is due bonus features and has extra features that no longer apply", -> beforeEach -> User.update { diff --git a/services/web/test/unit/coffee/Institutions/InstitutionsGetterTests.coffee b/services/web/test/unit/coffee/Institutions/InstitutionsGetterTests.coffee index 62c57cdaa9..d194cd8575 100644 --- a/services/web/test/unit/coffee/Institutions/InstitutionsGetterTests.coffee +++ b/services/web/test/unit/coffee/Institutions/InstitutionsGetterTests.coffee @@ -16,12 +16,13 @@ describe 'InstitutionsGetter', -> @userId = '12345abcde' describe "getConfirmedInstitutions", -> - it 'filters unconfirmed emails', (done) -> + it 'filters unconfirmed affiliations', (done) -> @userEmails = [ - { confirmedAt: null, affiliation: institution: { id: 123 } } - { confirmedAt: new Date(), affiliation: institution: { id: 456 } } + { confirmedAt: null, affiliation: institution: { id: 123, confirmed: true } } + { confirmedAt: new Date(), affiliation: institution: { id: 456, confirmed: true } } { confirmedAt: new Date(), affiliation: null } { confirmedAt: new Date(), affiliation: institution: null } + { confirmedAt: new Date(), affiliation: institution: { id: 789, confirmed: false } } ] @UserGetter.getUserFullEmails.yields(null, @userEmails) @InstitutionsGetter.getConfirmedInstitutions @userId, (error, institutions) ->