From 58f72b7eaa969b70fbfe215b32b2d7cef198a6f9 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Tue, 28 Mar 2017 16:49:24 -0500 Subject: [PATCH] New default background (#8597) * feat(bgs): new default background * feat(bgs): backfill migration * fix(migration): extraneous imports, bad paths * fix(bgs): address comments * fix(test): assert equality (cherry picked from commit 03088f1d9f1d18e74aa6a02e27203dd36ed1c967) --- .../user/auth/POST-register_local.test.js | 17 ++++++++++++ .../backgrounds/background_violet.png | Bin 0 -> 21607 bytes website/client-old/js/controllers/userCtrl.js | 8 +++++- website/common/locales/en/backgrounds.json | 2 ++ .../common/locales/en/loginIncentives.json | 2 +- .../script/content/appearance/backgrounds.js | 5 ++++ website/server/models/user/hooks.js | 2 ++ .../views/options/profile/backgrounds.jade | 26 +++++++++--------- 8 files changed, 47 insertions(+), 15 deletions(-) create mode 100644 website/assets/sprites/spritesmith/backgrounds/background_violet.png diff --git a/test/api/v3/integration/user/auth/POST-register_local.test.js b/test/api/v3/integration/user/auth/POST-register_local.test.js index a749f19a5d..b74a4ae12a 100644 --- a/test/api/v3/integration/user/auth/POST-register_local.test.js +++ b/test/api/v3/integration/user/auth/POST-register_local.test.js @@ -71,6 +71,23 @@ describe('POST /user/auth/local/register', () => { await expect(getProperty('users', user._id, '_ABtests')).to.eventually.be.a('object'); }); + it('includes items awarded by default when creating a new user', async () => { + let username = generateRandomUserName(); + let email = `${username}@example.com`; + let password = 'password'; + + let user = await api.post('/user/auth/local/register', { + username, + email, + password, + confirmPassword: password, + }); + + expect(user.items.quests.dustbunnies).to.equal(1); + expect(user.purchased.background.violet).to.be.ok; + expect(user.preferences.background).to.equal('violet'); + }); + it('requires password and confirmPassword to match', async () => { let username = generateRandomUserName(); let email = `${username}@example.com`; diff --git a/website/assets/sprites/spritesmith/backgrounds/background_violet.png b/website/assets/sprites/spritesmith/backgrounds/background_violet.png new file mode 100644 index 0000000000000000000000000000000000000000..05b969bdef0f5008c1f1fb15909f659846e05884 GIT binary patch literal 21607 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' - button.customize-option(ng-repeat='bg in set.items', type='button', class='background_{{bg.key}}', ng-class='user.purchased.background.{{bg.key}} ? "background-unlocked" : "background-locked"', ng-click='unlock("background." + bg.key)', popover-title='{{bg.text}}', popover='{{bg.notes}}', popover-trigger='mouseenter') - i.glyphicon.glyphicon-lock(ng-if='!user.purchased.background[bg.key]') - -script(type='text/ng-template', id='partials/options.profile.backgrounds.html') - +backgrounds() +mixin backgrounds(mobile) + div(class=mobile ? 'padding' : 'container-fluid') + li.customize-menu(ng-repeat='set in backgroundShopSets') + menu(label='{{set.text}}') + div(ng-if='showPlainBackgroundBlurb(set.identifier, set.items)')=env.t('incentiveBackgroundsUnlockedWithCheckins') + span(ng-hide='ownsSet("background", set.items) || set.identifier === "incentiveBackgrounds"') + +gemCost(7) + button.btn.btn-xs(ng-click='unlock(setKeys("background", set.items))')!= env.t('unlockSet',{cost:15}) + ' ' + button.customize-option(ng-repeat='bg in set.items', type='button', class='background_{{bg.key}}', ng-class='user.purchased.background.{{bg.key}} ? "background-unlocked" : "background-locked"', ng-click='unlock("background." + bg.key)', popover-title='{{bg.text}}', popover='{{bg.notes}}', popover-trigger='mouseenter') + i.glyphicon.glyphicon-lock(ng-if='!user.purchased.background[bg.key]') + +script(type='text/ng-template', id='partials/options.profile.backgrounds.html') + +backgrounds()