Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Commit 5a62e35

Browse files
author
Parth Shah
committed
more fixes
1 parent c84af59 commit 5a62e35

File tree

8 files changed

+121
-49
lines changed

8 files changed

+121
-49
lines changed

app/directives/challenge-tile/challenge-tile.directive.jade

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
// Only show if not data science track
3232
p.roles
3333
span(ng-hide="challenge.track === 'DATA_SCIENCE'")
34-
#[span Role:  ] #[span {{challenge.userDetails.roles | listRoles}}]
34+
span Role:  
35+
span {{challenge.userDetails.roles | listRoles}}
3536

3637
.completed-challenge(
3738
ng-show="challenge.status === 'COMPLETED' || challenge.status === 'PAST'",
@@ -65,8 +66,9 @@
6566
// Only show if not data science track
6667
p.roles
6768
span(ng-hide="challenge.track === 'DATA_SCIENCE'")
68-
#[span Role:  ] #[span {{challenge.userDetails.roles | listRoles}}]
69-
69+
span Role:  
70+
span {{challenge.userDetails.roles | listRoles}}
71+
7072
.challenge.list-view(ng-show="view=='list'", ng-class="challenge.track")
7173
.active-challenge(ng-show="challenge.status === 'ACTIVE'")
7274
.challenge-track

app/directives/external-account/external-web-links.directive.js

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,24 @@
77
*/
88
angular
99
.module('tcUIComponents')
10-
.directive('externalWebLink', externalWebLink);
10+
.directive('externalWebLink', ExternalWebLink);
11+
ExternalWebLink.$inject = ['$log', 'ExternalWebLinksService'];
1112

12-
function externalWebLink() {
13+
function ExternalWebLink($log, ExternalWebLinksService) {
1314
var directive = {
1415
estrict: 'E',
1516
templateUrl: 'directives/external-account/external-web-link.directive.html',
1617
scope: {
1718
linkedAccounts: '=',
1819
userHandle: '@'
1920
},
20-
controller: ['$log', '$scope', 'ExternalWebLinksService', ExternalWebLinkCtrl],
21-
controllerAs: 'vm',
22-
bindToController: true
21+
bindToController: true,
22+
controller: ['$log', ExternalWebLinkCtrl],
23+
controllerAs: 'vm'
2324
};
24-
return directive;
2525

26-
function ExternalWebLinkCtrl($log, $scope, ExternalWebLinksService) {
26+
27+
function ExternalWebLinkCtrl($log) {
2728
$log = $log.getInstance('ExternalWebLinkCtrl');
2829
var vm = this;
2930
vm.addingWebLink = false;
@@ -34,36 +35,20 @@
3435
vm.addingWebLink = true;
3536
vm.errorMessage = null;
3637
ExternalWebLinksService.addLink(vm.userHandle, vm.url)
37-
.then(function(resp) {
38+
.then(function(data) {
3839
vm.addingWebLink = false;
39-
$log.debug("Web link added: " + JSON.stringify(resp));
40-
vm.linkedAccounts.push(resp.profile);
41-
toaster.pop('success', "Success",
42-
String.supplant(
43-
"Your link has been added. Data from your link will be visible on your profile shortly.",
44-
{provider: extAccountProvider}
45-
)
46-
);
40+
$log.debug("Web link added: " + JSON.stringify(data));
41+
vm.linkedAccounts.push(data);
42+
toaster.pop('success', "Success", "Your link has been added. Data from your link will be visible on your profile shortly.");
4743
})
4844
.catch(function(resp) {
4945
vm.addingWebLink = false;
50-
$log.debug(JSON.stringify(resp));
51-
if (resp.status === 'SOCIAL_PROFILE_ALREADY_EXISTS') {
52-
$log.info("Social profile already linked to another account");
53-
toaster.pop('error', "Whoops!",
54-
String.supplant(
55-
"This {provider} account is linked to another account. \
56-
If you think this is an error please contact <a href=\"mailTo:[email protected]\">[email protected]</a>.", {
57-
provider: extAccountProvider
58-
}
59-
)
60-
);
61-
} else {
62-
$log.info("Server error:" + resp.content);
63-
vm.errorMessage = "Sorry, we are unable add web link. If problem persist please contact [email protected]";
64-
}
46+
$log.error("Server error:" + resp.content);
47+
toaster.pop('error', "Sorry, we are unable add web link. If problem persist please contact [email protected]");
6548
});
6649
};
6750
}
51+
52+
return directive;
6853
}
6954
})();
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/* jshint -W117, -W030 */
2+
describe('ExternalWebLinks Directive', function() {
3+
var scope = {};
4+
var element;
5+
var extWebLinkSvc;
6+
var toasterSvc;
7+
8+
beforeEach(function() {
9+
bard.appModule('topcoder');
10+
bard.inject(this, '$compile', '$rootScope', 'ExternalWebLinksService', '$q', 'toaster');
11+
12+
extWebLinkSvc = ExternalWebLinksService;
13+
bard.mockService(extWebLinkSvc, {
14+
addLink: $q.when({title: 'blah'}),
15+
default: $q.when({})
16+
});
17+
18+
toasterSvc = toaster;
19+
bard.mockService(toaster, {
20+
pop: $q.when(true),
21+
default: $q.when(true)
22+
});
23+
24+
scope = $rootScope.$new();
25+
});
26+
27+
bard.verifyNoOutstandingHttpRequests();
28+
29+
describe('Linked external accounts', function() {
30+
var linkedAccounts = [
31+
{
32+
provider: 'github',
33+
data: {
34+
handle: "github-handle",
35+
followers: 1,
36+
publicRepos: 1
37+
}
38+
}
39+
];
40+
var template, element, controller;
41+
42+
beforeEach(function() {
43+
scope.linkedAccounts = linkedAccounts;
44+
element = angular.element('<external-web-link linked-accounts="linkedAccounts" user-handle="test1"></external-web-link>)');
45+
template = $compile(element)(scope);
46+
scope.$digest();
47+
48+
controller = element.controller('externalWebLink');
49+
});
50+
51+
it('should have added linkedAccounts to scope', function() {
52+
expect(scope.linkedAccounts).to.exist;
53+
expect(scope.linkedAccounts).to.have.length(1);
54+
});
55+
56+
it('should have added new weblink to linkedAccounts', function() {
57+
scope.userHandle = 'test';
58+
scope.url = 'https://www.topcoder.com';
59+
controller.addWebLink();
60+
scope.$digest();
61+
expect(extWebLinkSvc.addLink).to.have.been.calledOnce;
62+
expect(controller.linkedAccounts).to.have.length(2);
63+
expect(toasterSvc.pop).to.have.been.calledOnce;
64+
})
65+
66+
});
67+
});

app/services/externalAccounts.service.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@
136136
connection: provider,
137137
scope: "openid profile offline_access",
138138
state: callbackUrl,
139-
// callbackURL: CONSTANTS.auth0Callback
140139
},
141140
function(profile, idToken, accessToken, state, refreshToken) {
142141
$log.debug("onSocialLoginSuccess");
@@ -160,10 +159,16 @@
160159
userApi.one('users', user.userId).customPOST(postData, "profiles", {}, {})
161160
.then(function(resp) {
162161
$log.debug("Succesfully linked account: " + JSON.stringify(resp));
163-
resolve({
162+
// construct "card" object and resolve it
163+
var _data = {
164164
status: "SUCCESS",
165-
profile: postData
166-
});
165+
linkedAccount: {
166+
provider: provider,
167+
data: postData
168+
}
169+
};
170+
_data.linkedAccount.data.status = 'PENDING';
171+
return _data;
167172
})
168173
.catch(function(resp) {
169174
$log.error("Error linking account: " + resp.data.result.content);

app/services/externalLinks.service.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,28 @@
2727
links = links.plain();
2828
if (!includePending) {
2929
_.remove(links, function(l) {
30-
return l.status && l.status.toLowerCase() === 'pending';
30+
return _.get(l, 'synchronizedAt') === 0;
3131
});
3232
}
33+
// add provider type as weblink
3334
links = _(links).forEach(function(l) {
3435
l.provider = 'weblink';
3536
}).value();
36-
// add provider type as link
3737
return links;
3838
});
3939
}
4040

4141
function addLink(userHandle, url) {
42-
return memberApi.one('members', userHandle).customPOST({'url': url}, 'externalLinks');
42+
return memberApi.one('members', userHandle).customPOST({'url': url}, 'externalLinks')
43+
.then(function(resp) {
44+
debugger;
45+
var _newLink = {
46+
provider: 'weblink',
47+
data: resp
48+
};
49+
_newLink.data.status = 'pending';
50+
return _newLink;
51+
});
4352
}
4453

4554
function removeLink(userHandle, key) {

app/specs.html

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -244,32 +244,33 @@ <h1><a href="specs.html">Spec Runner</a></h1>
244244
<script src="/app/services/userStats.service.spec.js"></script>
245245
<script src="/app/settings/settings.spec.js"></script>
246246
<script src="/app/skill-picker/skill-picker.spec.js"></script>
247+
<script src="/app/account/login/login.spec.js"></script>
247248
<script src="/app/account/register/register.spec.js"></script>
248249
<script src="/app/account/reset-password/reset-password.spec.js"></script>
249-
<script src="/app/account/login/login.spec.js"></script>
250250
<script src="/app/blocks/exception/exception-handler.provider.spec.js"></script>
251251
<script src="/app/directives/badges/badge-tooltip.spec.js"></script>
252252
<script src="/app/directives/busy-button/busy-button.directive.spec.js"></script>
253253
<script src="/app/directives/challenge-tile/challenge-tile.spec.js"></script>
254254
<script src="/app/directives/external-account/external-account.directive.spec.js"></script>
255255
<script src="/app/directives/external-account/external-links-data.directive.spec.js"></script>
256+
<script src="/app/directives/external-account/external-web-links.directive.spec.js"></script>
256257
<script src="/app/directives/tc-endless-paginator/tc-endless-paginator.spec.js"></script>
257258
<script src="/app/directives/tc-paginator/tc-paginator.spec.js"></script>
258259
<script src="/app/directives/tc-tabs/tc-tabs.directive.spec.js"></script>
259260
<script src="/app/my-dashboard/header-dashboard/header-dashboard.spec.js"></script>
260-
<script src="/app/my-dashboard/community-updates/community-updates.spec.js"></script>
261261
<script src="/app/my-dashboard/my-challenges/my-challenges.spec.js"></script>
262+
<script src="/app/my-dashboard/community-updates/community-updates.spec.js"></script>
262263
<script src="/app/my-dashboard/srms/srms.spec.js"></script>
263264
<script src="/app/my-dashboard/programs/programs.spec.js"></script>
264265
<script src="/app/peer-review/completed-review/completed-review.spec.js"></script>
265266
<script src="/app/peer-review/edit-review/edit-review.spec.js"></script>
266-
<script src="/app/peer-review/readOnlyScorecard/readOnlyScorecard.spec.js"></script>
267267
<script src="/app/peer-review/review-status/review-status.spec.js"></script>
268+
<script src="/app/peer-review/readOnlyScorecard/readOnlyScorecard.spec.js"></script>
268269
<script src="/app/profile/about/about.controller.spec.js"></script>
269270
<script src="/app/profile/badges/badges.spec.js"></script>
270271
<script src="/app/profile/subtrack/subtrack.spec.js"></script>
271-
<script src="/app/settings/edit-profile/edit-profile.spec.js"></script>
272272
<script src="/app/settings/account-info/account-info.spec.js"></script>
273+
<script src="/app/settings/edit-profile/edit-profile.spec.js"></script>
273274
<script src="/app/settings/preferences/preferences.spec.js"></script>
274275
<script src="/app/directives/account/toggle-password/toggle-password.spec.js"></script>
275276
<script src="/app/directives/account/toggle-password-with-tips/toggle-password-with-tips.spec.js"></script>

assets/css/directives/external-web-link.scss

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
@import 'topcoder-includes';
12
@import '../partials/combined';
23

4+
35
external-web-link {
46
.web-link {
57
margin: 6px 0 31px 0;
@@ -13,7 +15,6 @@ external-web-link {
1315
display: flex;
1416
flex-flow: row wrap;
1517

16-
1718
.form-label {
1819
@include sofia-pro-regular;
1920
font-size: 12px;

tests/test-helpers/mock-data.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2032,7 +2032,8 @@ var mockData = (function() {
20322032
"keywords": "topcoder-app,merged,oct,dashboard,15appirio-tech,20appirio-tech,polish,21appirio-tech,sup-1889,19appirio-tech",
20332033
"title": "Test's profile",
20342034
"images": "https://avatars3.githubusercontent.com/u/2417632?v=3&s=400,https://avatars1.githubusercontent.com/u/2417632?v=3&s=460,https://assets-cdn.github.com/images/spinners/octocat-spinner-128.gif",
2035-
"source": "embed.ly"
2035+
"source": "embed.ly",
2036+
"synchronizedAt": 123112
20362037
}, {
20372038
"userId": 111,
20382039
"key": "c69a1246c135b16069395010e91f5c65",
@@ -2042,12 +2043,13 @@ var mockData = (function() {
20422043
"keywords": "topcoder-app,merged,oct,dashboard,15appirio-tech,20appirio-tech,polish,21appirio-tech,sup-1889,19appirio-tech",
20432044
"title": "Test's profile",
20442045
"images": "https://avatars3.githubusercontent.com/u/2417632?v=3&s=400,https://avatars1.githubusercontent.com/u/2417632?v=3&s=460,https://assets-cdn.github.com/images/spinners/octocat-spinner-128.gif",
2045-
"source": "embed.ly"
2046+
"source": "embed.ly",
2047+
"synchronizedAt": 123123
20462048
}, {
20472049
"userId": 111,
20482050
"key": "c69a1246c135b16069395010e91f5c66",
20492051
"handle": "test1",
2050-
"status": 'PENDING'
2052+
"synchronizedAt": 0
20512053
}
20522054
]
20532055
}

0 commit comments

Comments
 (0)