Skip to content

Commit

Permalink
Merge pull request #119 from edx/azan/PROD-2333
Browse files Browse the repository at this point in the history
feat: add activation link in user summary
  • Loading branch information
azanbinzahid authored May 19, 2021
2 parents ae5888a + ec7b373 commit 52dc953
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 3 deletions.
22 changes: 20 additions & 2 deletions src/users/UserSummary.jsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import React, { useState } from 'react';
import PropTypes from 'prop-types';
import { Modal, Button, Input } from '@edx/paragon';

import { postTogglePasswordStatus, postResetPassword } from './data/api';
import Table from '../Table';
import { formatDate } from '../utils';
import { getAccountActivationUrl } from './data/urls';

export default function UserSummary({
userData,
Expand Down Expand Up @@ -241,11 +241,28 @@ export default function UserSummary({
},
}));

if (!userData.isActive) {
let dataValue;
if (userData.activationKey !== null) {
dataValue = {
displayValue: <a href={getAccountActivationUrl(userData.activationKey)} rel="noopener noreferrer" target="_blank" className="word_break">{userData.activationKey}</a>,
};
} else {
dataValue = 'N/A';
}

userAccountData.splice(5, 0,
{
dataName: 'Activation Key/Link',
dataValue,
});
}

return (
<section className="mb-3">
<div className="d-flex flex-row flex-wrap">
<div className="col-sm-6">
<div className="flex-column p-4 m-3 card">
<div id="account-table" className="flex-column p-4 m-3 card">
<h4>Account</h4>
<Table
data={userAccountData}
Expand Down Expand Up @@ -394,6 +411,7 @@ UserSummary.propTypes = {
username: PropTypes.string,
id: PropTypes.number,
email: PropTypes.string,
activationKey: PropTypes.string,
isActive: PropTypes.bool,
country: PropTypes.string,
dateJoined: PropTypes.string,
Expand Down
45 changes: 45 additions & 0 deletions src/users/UserSummary.test.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,18 @@ import * as api from './data/api';
import UserSummary from './UserSummary';
import UserSummaryData from './data/test/userSummary';

const getActivationKeyRow = (data) => {
const wrapper = mount(<UserSummary {...data} />);
const dataTable = wrapper.find('#account-table table');
const rowName = dataTable.find('tbody tr').at(5).find('td').at(0);
const rowValue = dataTable.find('tbody tr').at(5).find('td').at(1);

return {
rowName,
rowValue,
};
};

describe('User Summary Component Tests', () => {
let wrapper;

Expand All @@ -26,6 +38,7 @@ describe('User Summary Component Tests', () => {
expect(ComponentUserData.lastLogin).toEqual(ExpectedUserData.lastLogin);
expect(ComponentUserData.dateJoined).toEqual(ExpectedUserData.dateJoined);
expect(ComponentUserData.passwordStatus).toEqual(ExpectedUserData.passwordStatus);
expect(ComponentUserData.activationKey).toEqual(ExpectedUserData.activationKey);
});

it('Verification Data Values', () => {
Expand All @@ -49,6 +62,38 @@ describe('User Summary Component Tests', () => {
});
});

describe('Registration Activation Field', () => {
it('Active User Data', () => {
const { rowName, rowValue } = getActivationKeyRow(UserSummaryData);
expect(rowName.text()).not.toEqual('Activation Key/Link');
expect(rowValue.text()).not.toEqual(UserSummaryData.userData.activationKey);
});

it('Inactive User Data ', () => {
const InActiveUserData = { ...UserSummaryData.userData, isActive: false };
const InActiveUserSummaryData = { ...UserSummaryData, userData: InActiveUserData };
const { rowName, rowValue } = getActivationKeyRow(InActiveUserSummaryData);
expect(rowName.text()).toEqual('Activation Key/Link');
expect(rowValue.text()).toEqual(UserSummaryData.userData.activationKey);
});

it('Active User With No Registration Data ', () => {
const InActiveUserData = { ...UserSummaryData.userData, activationKey: null };
const InActiveUserSummaryData = { ...UserSummaryData, userData: InActiveUserData };
const { rowName, rowValue } = getActivationKeyRow(InActiveUserSummaryData);
expect(rowName.text()).not.toEqual('Activation Key/Link');
expect(rowValue.text()).not.toEqual(UserSummaryData.userData.activationKey);
});

it('Inactive User With No Registration Data ', () => {
const InActiveUserData = { ...UserSummaryData.userData, activationKey: null, isActive: false };
const InActiveUserSummaryData = { ...UserSummaryData, userData: InActiveUserData };
const { rowName, rowValue } = getActivationKeyRow(InActiveUserSummaryData);
expect(rowName.text()).toEqual('Activation Key/Link');
expect(rowValue.text()).toEqual('N/A');
});
});

describe('Disable User Button', () => {
it('Disable User button for active user', () => {
const passwordActionButton = wrapper.find('#toggle-password').hostNodes();
Expand Down
1 change: 1 addition & 0 deletions src/users/data/test/userSummary.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ const UserSummaryData = {
username: 'edx',
email: '[email protected]',
id: 1,
activationKey: 'db2f834f90fd49afaa3ca2a68a1ae9e1',
isActive: true,
country: 'US',
dateJoined: null,
Expand Down
4 changes: 4 additions & 0 deletions src/users/data/urls.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,7 @@ export const getTogglePasswordStatusUrl = user => `${
export const getResetPasswordUrl = () => `${
LMS_BASE_URL
}/account/password`;

export const getAccountActivationUrl = (activationKey) => `${
LMS_BASE_URL
}/activate/${activationKey}`;
2 changes: 1 addition & 1 deletion src/users/enrollments/EnrollmentExtra.test.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import EnrollmentExtra from './EnrollmentExtra';

const props = {
enrollmentExtraData: {
lastModified: new Date(2021, 0, 1, 0, 0, 0, 0).toLocaleString(),
lastModified: new Date(2021, 0, 1, 0, 0, 0, 0).toLocaleString('en-US'),
lastModifiedBy: 'edX',
reason: 'Test',
courseName: 'Test Course',
Expand Down

0 comments on commit 52dc953

Please sign in to comment.