Skip to content

Commit 629afbf

Browse files
feat: added restricted country functionality
1 parent adb12b4 commit 629afbf

File tree

13 files changed

+68
-47
lines changed

13 files changed

+68
-47
lines changed

src/profile-v2/__snapshots__/ProfilePage.test.jsx.snap

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,9 @@ exports[`<ProfilePage /> Renders correctly in various states viewing other profi
4848
<div
4949
class="profile-avatar rounded-circle bg-light"
5050
>
51-
<div
51+
<iconmock
5252
aria-hidden="true"
5353
class="text-muted"
54-
data-testid="IconMock"
5554
focusable="false"
5655
role="img"
5756
viewbox="0 0 24 24"

src/profile/__mocks__/invalidUser.mockStore.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ module.exports = {
2929
drafts: {},
3030
isLoadingProfile: false,
3131
isAuthenticatedUserProfile: true,
32+
countriesCodesList: [],
3233
},
3334
router: {
3435
location: {

src/profile/__mocks__/savingEditedBio.mockStore.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ module.exports = {
126126
],
127127
drafts: {},
128128
isLoadingProfile: false,
129-
disabledCountries: [],
129+
countriesCodesList: [],
130130
},
131131
router: {
132132
location: {

src/profile/__mocks__/viewOtherProfile.mockStore.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ module.exports = {
8686
drafts: {},
8787
isLoadingProfile: false,
8888
learningGoal: 'advance_career',
89+
countriesCodesList: [],
8990
},
9091
router: {
9192
location: {

src/profile/__mocks__/viewOwnProfile.mockStore.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ module.exports = {
124124
createdDate: '2019-03-04T19:31:39.896806Z'
125125
}
126126
],
127+
countriesCodesList:[{code:"AX"},{code:"AL"}],
127128
drafts: {},
128129
isLoadingProfile: false
129130
},

src/profile/data/actions.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@ export const fetchProfileSuccess = (
2525
preferences,
2626
courseCertificates,
2727
isAuthenticatedUserProfile,
28+
countriesCodesList,
2829
) => ({
2930
type: FETCH_PROFILE.SUCCESS,
3031
account,
3132
preferences,
3233
courseCertificates,
3334
isAuthenticatedUserProfile,
35+
countriesCodesList,
3436
});
3537

3638
export const fetchProfileReset = () => ({

src/profile/data/constants.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,12 @@ const SOCIAL = {
2222
},
2323
};
2424

25+
const FIELD_LABELS = {
26+
COUNTRY: 'country',
27+
};
28+
2529
export {
2630
EDUCATION_LEVELS,
2731
SOCIAL,
32+
FIELD_LABELS,
2833
};

src/profile/data/reducers.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export const initialState = {
2222
drafts: {},
2323
isLoadingProfile: true,
2424
isAuthenticatedUserProfile: false,
25-
disabledCountries: ['RU'],
25+
countriesCodesList: [],
2626
};
2727

2828
const profilePage = (state = initialState, action = {}) => {
@@ -43,6 +43,7 @@ const profilePage = (state = initialState, action = {}) => {
4343
courseCertificates: action.courseCertificates,
4444
isLoadingProfile: false,
4545
isAuthenticatedUserProfile: action.isAuthenticatedUserProfile,
46+
countriesCodesList: action.countriesCodesList,
4647
};
4748
case SAVE_PROFILE.BEGIN:
4849
return {

src/profile/data/sagas.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export function* handleFetchProfile(action) {
4141
let preferences = {};
4242
let account = userAccount;
4343
let courseCertificates = null;
44+
let countriesCodesList = [];
4445

4546
try {
4647
yield put(fetchProfileBegin());
@@ -49,6 +50,7 @@ export function* handleFetchProfile(action) {
4950
const calls = [
5051
call(ProfileApiService.getAccount, username),
5152
call(ProfileApiService.getCourseCertificates, username),
53+
call(ProfileApiService.getCountryList),
5254
];
5355

5456
if (isAuthenticatedUserProfile) {
@@ -61,9 +63,9 @@ export function* handleFetchProfile(action) {
6163
const result = yield all(calls);
6264

6365
if (isAuthenticatedUserProfile) {
64-
[account, courseCertificates, preferences] = result;
66+
[account, courseCertificates, countriesCodesList, preferences] = result;
6567
} else {
66-
[account, courseCertificates] = result;
68+
[account, courseCertificates, countriesCodesList] = result;
6769
}
6870

6971
// Set initial visibility values for account
@@ -89,6 +91,7 @@ export function* handleFetchProfile(action) {
8991
preferences,
9092
courseCertificates,
9193
isAuthenticatedUserProfile,
94+
countriesCodesList,
9295
));
9396

9497
yield put(fetchProfileReset());

src/profile/data/sagas.test.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ jest.mock('./services', () => ({
1919
getPreferences: jest.fn(),
2020
getAccount: jest.fn(),
2121
getCourseCertificates: jest.fn(),
22+
getCountryList: jest.fn(),
2223
}));
2324

2425
jest.mock('@edx/frontend-platform/auth', () => ({
@@ -68,17 +69,19 @@ describe('RootSaga', () => {
6869
const action = profileActions.fetchProfile('gonzo');
6970
const gen = handleFetchProfile(action);
7071

71-
const result = [userAccount, [1, 2, 3], { preferences: 'stuff' }];
72+
const result = [userAccount, [1, 2, 3], [], { preferences: 'stuff' }];
7273

7374
expect(gen.next().value).toEqual(select(userAccountSelector));
7475
expect(gen.next(selectorData).value).toEqual(put(profileActions.fetchProfileBegin()));
7576
expect(gen.next().value).toEqual(all([
7677
call(ProfileApiService.getAccount, 'gonzo'),
7778
call(ProfileApiService.getCourseCertificates, 'gonzo'),
79+
call(ProfileApiService.getCountryList),
7880
call(ProfileApiService.getPreferences, 'gonzo'),
81+
7982
]));
8083
expect(gen.next(result).value)
81-
.toEqual(put(profileActions.fetchProfileSuccess(userAccount, result[2], result[1], true)));
84+
.toEqual(put(profileActions.fetchProfileSuccess(userAccount, result[3], result[1], true, [])));
8285
expect(gen.next().value).toEqual(put(profileActions.fetchProfileReset()));
8386
expect(gen.next().value).toBeUndefined();
8487
});
@@ -88,6 +91,7 @@ describe('RootSaga', () => {
8891
username: 'gonzo',
8992
other: 'data',
9093
};
94+
const countriesCodesList = [{ code: 'AX' }, { code: 'AL' }];
9195
getAuthenticatedUser.mockReturnValue(userAccount);
9296
const selectorData = {
9397
userAccount,
@@ -96,16 +100,17 @@ describe('RootSaga', () => {
96100
const action = profileActions.fetchProfile('booyah');
97101
const gen = handleFetchProfile(action);
98102

99-
const result = [{}, [1, 2, 3]];
103+
const result = [{}, [1, 2, 3], countriesCodesList];
100104

101105
expect(gen.next().value).toEqual(select(userAccountSelector));
102106
expect(gen.next(selectorData).value).toEqual(put(profileActions.fetchProfileBegin()));
103107
expect(gen.next().value).toEqual(all([
104108
call(ProfileApiService.getAccount, 'booyah'),
105109
call(ProfileApiService.getCourseCertificates, 'booyah'),
110+
call(ProfileApiService.getCountryList),
106111
]));
107112
expect(gen.next(result).value)
108-
.toEqual(put(profileActions.fetchProfileSuccess(result[0], {}, result[1], false)));
113+
.toEqual(put(profileActions.fetchProfileSuccess(result[0], {}, result[1], false, countriesCodesList)));
109114
expect(gen.next().value).toEqual(put(profileActions.fetchProfileReset()));
110115
expect(gen.next().value).toBeUndefined();
111116
});

0 commit comments

Comments
 (0)