diff --git a/app/filters/filters.spec.js b/app/filters/filters.spec.js index 8c9747c61..349f86adf 100644 --- a/app/filters/filters.spec.js +++ b/app/filters/filters.spec.js @@ -3,7 +3,7 @@ describe('filters', function() { beforeEach(function() { bard.appModule('topcoder'); - bard.inject(this, 'CONSTANTS', 'roleFilter', 'percentageFilter', 'ordinalFilter', 'displayLocationFilter', 'listRolesFilter', 'trackFilter', 'challengeLinksFilter'); + bard.inject(this, 'CONSTANTS', 'roleFilter', 'percentageFilter', 'ordinalFilter', 'displayLocationFilter', 'listRolesFilter', 'trackFilter', 'challengeLinksFilter', 'externalLinkColorFilter', 'emptyFilter', 'ternaryFilter'); domain = CONSTANTS.domain; }); @@ -98,4 +98,41 @@ describe('filters', function() { expect(challengeLinksFilter(_ch, 'registrants')).to.be.equal('https://community.'+domain+'/longcontest/?module=ViewStandings&rd=3'); }); }); + + describe('externalLinkColorFilter', function() { + + it('should handle twitter and linkedin correctly', function() { + expect(externalLinkColorFilter('el-twitter')).to.be.equal('#62AADC'); + expect(externalLinkColorFilter('el-linkedin')).to.be.equal('#127CB5'); + }); + }); + + describe('emptyFilter', function() { + it('should handle empty stuff correctly', function() { + var a = emptyFilter(0); + var b = emptyFilter(12); + var c = emptyFilter(false); + var d = emptyFilter(NaN); + var e = emptyFilter('NaN'); + var f = emptyFilter(''); + var g = emptyFilter('%'); + expect(a).to.be.equal(0); + expect(b).to.be.equal(12); + expect(c).to.be.equal('-'); + expect(d).to.be.equal('-'); + expect(e).to.be.equal('-'); + expect(f).to.be.equal('-'); + expect(g).to.be.equal('-'); + }); + }); + + describe('ternaryFilter', function() { + it('should function logically', function() { + expect(ternaryFilter(true, 1, 2)).to.be.equal(1); + expect(ternaryFilter(false, 1, 2)).to.be.equal(2); + expect(ternaryFilter(0, 1, 2)).to.be.equal(2); + console.log(jstz.determine().name()); + expect(ternaryFilter(true, 'm', 'n')).to.be.equal('m'); + }); + }); }); diff --git a/app/filters/iif.filter.js b/app/filters/ternary.filter.js similarity index 61% rename from app/filters/iif.filter.js rename to app/filters/ternary.filter.js index b0ce72437..83a009eec 100644 --- a/app/filters/iif.filter.js +++ b/app/filters/ternary.filter.js @@ -2,16 +2,16 @@ (function() { 'use strict'; - angular.module('topcoder').filter('iif', iif); + angular.module('topcoder').filter('ternary', ternary); /** * This filter enable conditional statment for angular expression. - * usage: {{ expression | iif : value1 : value2}} + * usage: {{ expression | ternary : value1 : value2}} */ - function iif() { + function ternary() { return function (input, trueValue, falseValue) { return input ? trueValue : falseValue; }; }; -})(); \ No newline at end of file +})(); diff --git a/app/index.jade b/app/index.jade index 5dbb2f4a1..30d2b4c69 100644 --- a/app/index.jade +++ b/app/index.jade @@ -216,7 +216,6 @@ html script(src="filters/deadline-msg.filter.js") script(src="filters/empty.filter.js") script(src="filters/external-link-color.filter.js") - script(src="filters/iif.filter.js") script(src="filters/listRoles.filter.js") script(src="filters/local-time.filter.js") script(src="filters/location.filter.js") @@ -225,6 +224,7 @@ html script(src="filters/percentage.filter.js") script(src="filters/rating-color.filter.js") script(src="filters/role.filter.js") + script(src="filters/ternary.filter.js") script(src="filters/time-diff.filter.js") script(src="filters/track.filter.js") script(src="filters/truncate.filter.js") diff --git a/app/profile/badges/badges.jade b/app/profile/badges/badges.jade index d9c5ca52b..7c5c2975c 100644 --- a/app/profile/badges/badges.jade +++ b/app/profile/badges/badges.jade @@ -15,6 +15,6 @@ aside.badges .badgeGroups .groupBadge(ng-repeat='ag in vm.achievementGroups', ng-class='ag.groupClass', ng-show='ag.specificAchievements[0].active') span.subBadge.hpLogo(ng-if="ag.groupClass.substring(0 , 9) === 'HP-Badges'") - span.subBadge(ng-repeat='achievement in ag.specificAchievements', ng-class="(achievement.isStudio ? 'Studio-' : '') + achievement.specificClass + ' ' + ( achievement.active | iif : 'selected' : '' )", badge-tooltip, badge='achievement') + span.subBadge(ng-repeat='achievement in ag.specificAchievements', ng-class="(achievement.isStudio ? 'Studio-' : '') + achievement.specificClass + ' ' + ( achievement.active | ternary : 'selected' : '' )", badge-tooltip, badge='achievement') .footer-badges - .singleBadge(ng-class=" achievement.groupClass + ' ' + (achievement.active | iif : 'selected' : '' ) ", ng-repeat='achievement in vm.singleAchievements', ng-show='achievement.active', badge-tooltip, badge='achievement') + .singleBadge(ng-class=" achievement.groupClass + ' ' + (achievement.active | ternary : 'selected' : '' ) ", ng-repeat='achievement in vm.singleAchievements', ng-show='achievement.active', badge-tooltip, badge='achievement') diff --git a/app/services/profile.service.js b/app/services/profile.service.js index 850032a78..7ecbdf104 100644 --- a/app/services/profile.service.js +++ b/app/services/profile.service.js @@ -30,7 +30,7 @@ getSubTracks: getSubTracks, getDivisions: getDivisions, - getUserHandleColor: getUserHandleColor, + getUserHandleColor: getUserHandleColor }; return service; diff --git a/app/services/profile.service.spec.js b/app/services/profile.service.spec.js index 45c4f6c2e..58b63a792 100644 --- a/app/services/profile.service.spec.js +++ b/app/services/profile.service.spec.js @@ -65,6 +65,20 @@ describe('Profile Service', function() { var subtracks = service.getSubTracks(mockStats, 'develop'); expect(subtracks.length).to.be.equal(11); }); + + it('should return divisions', function() { + var divisions = service.getDivisions(mockStats); + var totalProblemsSuccessful = divisions.division1.total.problemsSuccessful; + var totalProblemsFailed = divisions.division1.total.problemsFailed; + expect(totalProblemsSuccessful).to.be.equal(2); + expect(totalProblemsFailed).to.be.equal(1); + }); + + it('should return user handle color', function() { + expect(service.getUserHandleColor(mockProfile.maxRating.rating)).to.be.equal('black'); + }); + + }); }); diff --git a/app/settings/account-info/account-info.controller.js b/app/settings/account-info/account-info.controller.js index 8effdeaaf..50516cf1f 100644 --- a/app/settings/account-info/account-info.controller.js +++ b/app/settings/account-info/account-info.controller.js @@ -11,6 +11,7 @@ vm.saveAccountInfo = saveAccountInfo; vm.updateCountry = updateCountry; vm.submitNewPassword = submitNewPassword; + vm.getAddr = getAddr; activate(); diff --git a/app/settings/account-info/account-info.spec.js b/app/settings/account-info/account-info.spec.js index 9af14279e..beb669574 100644 --- a/app/settings/account-info/account-info.spec.js +++ b/app/settings/account-info/account-info.spec.js @@ -94,4 +94,13 @@ describe('Account Info Controller', function() { expect(fakeStateGo).to.have.been.calledWith('settings.profile'); }); }); + + describe('get address', function() { + it('should return a correct address', function() { + vm.homeAddress = {}; + expect(vm.getAddr().length).to.be.equal(0); + vm.homeAddress = {streetAddr1: 'a', city: 'b', zip: 21}; + expect(vm.getAddr().length).to.be.equal(1); + }); + }); }); diff --git a/tests/test-helpers/mock-data.js b/tests/test-helpers/mock-data.js index c7f435066..a9807a3b9 100644 --- a/tests/test-helpers/mock-data.js +++ b/tests/test-helpers/mock-data.js @@ -1167,37 +1167,39 @@ var mockData = (function() { function getMockProfile() { return { "updatedAt": null, - "createdAt": '2010-04-25T01:32:21.196+0600', + "createdAt": null, "createdBy": null, "updatedBy": null, "userId": 10336829, "firstName": "Albert", + "maxRating": { + "rating": 1616, + "track": "DEVELOP", + "subTrack": "DESIGN" + }, "lastName": "Wang", "quote": "Competing since 2004, albertwang has achieved ratings in multiple data science, architecture, and devleopment challenge tracks. He is most skilled in component design and architecture", - "description": "Test description", + "description": null, "otherLangName": "NIAL", "handle": "albertwang", "email": "email@domain.com.z", - "addresses": [{ - "updatedAt": null, - "createdAt": null, - "createdBy": null, - "updatedBy": null, - "addressId": 90263, - "streetAddr1": "123 Main Street", - "streetAddr2": "address_2", - "city": "Santa Clause", - "zip": "47579", - "stateCode": "IN", - "type": "HOME" - }], + "addresses": [ + { + "streetAddr1": "123 Main Street", + "streetAddr2": "address_2", + "city": "Santa Clause", + "zip": "47579", + "stateCode": "IN", + "addressId": 90263, + "type": "Home" + } + ], "homeCountryCode": "USA", - "competitionCountryCode": "SXM", - "photo": { - "imageId": 20744540, - "photoUrl": "https://www.topcoder.com/i/m/albertwang.jpeg" - }, + "competitionCountryCode": "CHN", + "photoURL": "https://topcoder-dev-media.s3.amazonaws.com/member/profile/albertwang-1440793843057.jpg", "tracks": [ + "DESIGN", + "DEVELOP", "DATA_SCIENCE" ] };