Adding
This commit is contained in:
+120
@@ -0,0 +1,120 @@
|
||||
import { shallow, ShallowWrapper } from "enzyme";
|
||||
import moment from "moment";
|
||||
import React from "react";
|
||||
import * as adalConfig from "../../adalConfig";
|
||||
import { IRepoAccount } from "../../services/service-types/RepoAccountTypes";
|
||||
import AccountPageHeader from "./AccountPageHeader";
|
||||
|
||||
describe("AccountPageHeader", () => {
|
||||
var spy: jest.SpyInstance;
|
||||
let wrapper: ShallowWrapper;
|
||||
const selectedAccount: IRepoAccount = {
|
||||
repoId: 476,
|
||||
origAccountTypeCode: "",
|
||||
accountNo: "123456",
|
||||
status: "string",
|
||||
memberNo: 1453,
|
||||
loanNo: 0,
|
||||
accountTypeCode: "acct-type-code",
|
||||
branch: 0,
|
||||
balance: 0,
|
||||
dueToPayDate: moment("1941-12-07"),
|
||||
o4RDate: moment("1945-05-07"),
|
||||
dateFirstDelinquent: moment("1918-11-11"),
|
||||
delinquentAmount: 0,
|
||||
daysDelinquent: 101,
|
||||
paidSkipAmount: 0,
|
||||
subStatus: "string",
|
||||
requiredPaymentAmount: 3.14,
|
||||
currentDelinquentAmount: 19.45,
|
||||
lstPmtAmt: 1912.00000,
|
||||
origAmount: 42,
|
||||
lastPaymentDate: moment("1865-04-15"),
|
||||
dateFirstIntellect: moment("1963-11-22"),
|
||||
primaryIndividualId: "string",
|
||||
manualRedemptionDate: moment("1812-06-12"),
|
||||
borrowers: [{
|
||||
repoId: 1,
|
||||
individualId: "1",
|
||||
ownershipType: 6,
|
||||
individualName: "John Doe",
|
||||
}],
|
||||
collaterals: [],
|
||||
repoStatusChanges: [],
|
||||
};
|
||||
let updatedBackButtonValue: boolean;
|
||||
|
||||
beforeEach(() => {
|
||||
updatedBackButtonValue = false;
|
||||
wrapper = shallow(
|
||||
<AccountPageHeader
|
||||
accountNoHeader="abcd1234"
|
||||
selectedRepoAccount={selectedAccount}
|
||||
allowedStatusChanges={[]}
|
||||
onStatusChange={() => {}}
|
||||
onBackButtonClicked={() => updatedBackButtonValue = true}
|
||||
putRepoAccount={()=>{}}
|
||||
/>
|
||||
);
|
||||
spy = jest.spyOn(adalConfig, "hasAdminRole").mockReturnValueOnce(false).mockReturnValueOnce(true);
|
||||
});
|
||||
|
||||
it ("Renders Member Name", () => {
|
||||
const memberName = wrapper.find(`[data-test='account-page-header-member-name']`);
|
||||
expect(memberName.length).toBe(1);
|
||||
expect(memberName.text()).toEqual("John Doe");
|
||||
});
|
||||
|
||||
it ("Renders Missing When There is No Selected Account", () => {
|
||||
wrapper.setProps({
|
||||
selectedRepoAccount: undefined,
|
||||
});
|
||||
const memberName = wrapper.find(`[data-test='account-page-header-member-name']`);
|
||||
expect(memberName.length).toBe(1);
|
||||
expect(memberName.text()).toEqual("Missing");
|
||||
});
|
||||
|
||||
it ("Back Button Callback Works", () => {
|
||||
const backBtn = wrapper.find(`[data-test='account-page-header-back-btn']`);
|
||||
expect(backBtn.length).toBe(1);
|
||||
expect(updatedBackButtonValue).toBe(false);
|
||||
backBtn.simulate("click");
|
||||
expect(updatedBackButtonValue).toBe(true);
|
||||
});
|
||||
|
||||
it ("Does Not Render \"(Closed)\" Next to Name When Account is Open", () => {
|
||||
const closedAccountLabel = wrapper.find(`[data-test='closed-account-label']`);
|
||||
expect(closedAccountLabel.length).toBe(0);
|
||||
});
|
||||
|
||||
it ("Renders \"(Closed)\" Next to Name When Account is Closed", () => {
|
||||
wrapper = wrapper.setProps({
|
||||
selectedRepoAccount: {
|
||||
...selectedAccount,
|
||||
dateClosed: moment("1941-12-07")
|
||||
}
|
||||
});
|
||||
|
||||
var closedAccountLabel = wrapper.find(`[data-test='closed-account-label']`);
|
||||
expect(closedAccountLabel.length).toBe(1);
|
||||
|
||||
closedAccountLabel = wrapper.find(`[data-test='reopen-button']`);
|
||||
expect(closedAccountLabel.length).toBe(0);
|
||||
});
|
||||
|
||||
it ("Renders \"Repopen\" button Next to Name When Account is Closed and user is Admin", () => {
|
||||
wrapper = wrapper.setProps({
|
||||
selectedRepoAccount: {
|
||||
...selectedAccount,
|
||||
dateClosed: moment("1941-12-07")
|
||||
}
|
||||
});
|
||||
|
||||
var closedAccountLabel = wrapper.find(`[data-test='closed-account-label']`);
|
||||
expect(closedAccountLabel.length).toBe(1);
|
||||
|
||||
closedAccountLabel = wrapper.find(`[data-test='reopen-button']`);
|
||||
expect(closedAccountLabel.length).toBe(1);
|
||||
|
||||
});
|
||||
});
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
import React from 'react';
|
||||
import { IAllowedStatusChange } from '../../reducers/SettingsReducer';
|
||||
import StatusChangeSelector from '../status-change-selector/StatusChangeSelector';
|
||||
import RepoAccountService from '../../services/RepoAccountService';
|
||||
import { IRepoAccount } from '../../services/service-types/RepoAccountTypes';
|
||||
import * as adalConfig from "../../adalConfig";
|
||||
const cloneDeep = require("lodash.clonedeep");
|
||||
interface AccountPageHeaderProps {
|
||||
accountNoHeader: string;
|
||||
selectedRepoAccount?: IRepoAccount;
|
||||
allowedStatusChanges: IAllowedStatusChange[];
|
||||
onBackButtonClicked: () => any;
|
||||
onStatusChange: (status: string) => any;
|
||||
putRepoAccount: (repoAccount: IRepoAccount) => any;
|
||||
}
|
||||
|
||||
|
||||
|
||||
const AccountPageHeader: React.FC<AccountPageHeaderProps> = (props) => {
|
||||
const isAccountClosed = RepoAccountService.IsAccountClosed(props.selectedRepoAccount);
|
||||
|
||||
const reopenAccountClicked = () => {
|
||||
const shouldReOpenAccount = window.confirm("Are you sure you want to reopen this account? This can have unexpected side effects. Use Caution with accounts that have already been refunded.");
|
||||
if(shouldReOpenAccount) {
|
||||
reopenClosedAccount();
|
||||
}
|
||||
}
|
||||
|
||||
const reopenClosedAccount = () => {
|
||||
if (!props.selectedRepoAccount) {
|
||||
console.warn("Cannot close account when the Selected Account is not loaded. Returning.");
|
||||
return;
|
||||
}
|
||||
|
||||
const copiedRepoAccount = cloneDeep(props.selectedRepoAccount) as IRepoAccount;
|
||||
copiedRepoAccount.dateClosed = undefined;
|
||||
|
||||
props.putRepoAccount(copiedRepoAccount);
|
||||
|
||||
}
|
||||
|
||||
return (
|
||||
<div className={'back-navigation-header' + (isAccountClosed ? ' header-closed' : '')}>
|
||||
<div className="row form-inline">
|
||||
<div className="col-sm">
|
||||
<h5>
|
||||
<i className="fa fa-chevron-left text-primary" aria-hidden="true" onClick={props.onBackButtonClicked} data-test="account-page-header-back-btn"></i>
|
||||
Account: { props.accountNoHeader }
|
||||
{ isAccountClosed ?
|
||||
(
|
||||
<span className="text-danger" data-test="closed-account-label"> (CLOSED)</span>
|
||||
)
|
||||
: null}
|
||||
{ isAccountClosed && adalConfig.hasAdminRole() ?
|
||||
(
|
||||
<button className="form-input btn btn-danger btn-sm ml-2" data-test="reopen-button" onClick={() => reopenAccountClicked()}>Reopen This Account</button>
|
||||
)
|
||||
: null }
|
||||
</h5>
|
||||
</div>
|
||||
<div className="col-sm">
|
||||
<p><b data-test="account-page-header-member-name">{RepoAccountService.GetMemberName(props.selectedRepoAccount)}</b></p>
|
||||
</div>
|
||||
|
||||
<div className="col-sm">
|
||||
<StatusChangeSelector
|
||||
allowedStatusChanges={props.allowedStatusChanges}
|
||||
onStatusChange={props.onStatusChange}
|
||||
selectedRepoAccount={props.selectedRepoAccount}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<hr></hr>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default AccountPageHeader;
|
||||
Reference in New Issue
Block a user