import { shallow, ShallowWrapper } from "enzyme"; import moment from "moment"; import React from "react"; import { IAuctionAssignment } from "../../../../reducers/AuctionAssignmentReducer"; import { IRepoAccount } from "../../../../services/service-types/RepoAccountTypes"; import AuctionInfoSidebar from "./AuctionInfoSidebar"; describe("AuctionInfoSidebar component", () => { let wrapper: ShallowWrapper; let updatedRepoAccount: IRepoAccount; let updatedAuctionAssignment: IAuctionAssignment; beforeEach(() => { wrapper = shallow( {}} />); }); const testUpdateRepoAccount = (repoAccount: IRepoAccount) => { updatedRepoAccount = repoAccount; }; const testUpdateAuctionAssignment = (auctionAssignment: IAuctionAssignment) => { updatedAuctionAssignment = auctionAssignment; }; const getCardView = () => { return wrapper.find("CardView").dive(); }; it ("Redeems repo account without updating source", () => { const redeemButton = getCardView().find(`[data-test='redeem-button']`); redeemButton.simulate("click"); expect(updatedRepoAccount).toEqual({ ...dummyRepoAccount, status: "REDEEMED", }); expect(updatedRepoAccount).not.toBe(dummyRepoAccount); expect(updatedAuctionAssignment).toEqual({ ...dummyAuctionAssignment, redeemedDate: expect.any(moment) }); expect(updatedAuctionAssignment).not.toBe(dummyAuctionAssignment); }); it ("Disables redeem button when account has redeemed status", () => { const redeemedAccount = { ...dummyRepoAccount, status: "REDEEMED" }; wrapper = shallow( {}} /> ); const redeemButton = getCardView().find(`[data-test='redeem-button']`); expect(redeemButton.props().disabled).toBeTruthy(); }); it ("Updates title sent date without updating source", () => { const titleSentButton = getCardView().find(`[data-test='notify-title-sent-button']`); titleSentButton.simulate("click"); expect(updatedAuctionAssignment).toEqual({ ...dummyAuctionAssignment, sentTitleDocsDate: expect.any(moment) }); expect(updatedRepoAccount).not.toBe(dummyRepoAccount); }); it ("Notify Title Sent & Redeemed Button Disabled When Auction is Locked", () => { wrapper = wrapper.setProps({ isAuctionLocked: true }); const titleSentButton = getCardView().find(`[data-test='notify-title-sent-button']`); const redeemButton = getCardView().find(`[data-test='redeem-button']`); expect(titleSentButton.props().disabled).toBe(true); expect(redeemButton.props().disabled).toBe(true); }); const dummyAuctionAssignment: IAuctionAssignment = { id: 1, repoId: 1, isActive: true, auctionAssignmentToCollaterals: [], auctionId: "", auctionCustomerNo: "", cleaningLevel: 1, collateralVIN: "", floorPrice: 1, floorPriceResponseCode: 1, floorPriceResponseDescription: "Vehicle updated", holdStatus: 1, autoIMS: { repoId: 1, vin: "", auctionAssignmentId: 1, auctionCustomerNo: "", announcedConditions: "condition 1; condition 2; condition 3;", arbitrationReason: "", asIs100KMiles: true, auctionAge: 1, auctionGuideBookPrice: 1, buyerId: "", buyerName: "", chargeAmount: 1, checkAmount: 1, clientAge: 1, collisionDamage: "", daysRun: 1, daysRunHighestBidRecordedbyAuction: "", daystoDelivery: 1, description: "", isDrivable: true, floorPriceAccepted: 1, grossPercentFloor: 1, highestBid: 1, statedMileage: 1, netPercentFloor: 1, otherAdvanceFees: 1, otherTotal: "", otherAdvancedOther: "", otherAdvancedStorage: "", otherAdvancedTow: "", otherMiscellaneous: "", salePrice: 1, titleNumber: "", titleState: "", titleStatus: "", titleStatusfromAuction: "", totalCharges: 1, approvedVehicleGrade: 1, isOperable: true, status: "", storageCost: 1, storageRatePerDay: 1, towCost: 1, vehicleDecimalGradeCode: 1, vehicleGrade: 1, mmrNationalAdjustedPrice: 1, mmrRegionalAdjustedPrice: 1, mmr: "", conditionReportLink: "", collateralImagePath: "", } }; const dummyRepoAccount: IRepoAccount = { repoId: 1, accountNo: "", status: "", memberNo: 1, loanNo: 1, accountTypeCode: "", branch: 1, balance: 1, dueToPayDate: moment(), o4RDate: moment(), dateFirstDelinquent: moment(), delinquentAmount: 1, daysDelinquent: 1, paidSkipAmount: 1, subStatus: "", requiredPaymentAmount: 1, currentDelinquentAmount: 1, lstPmtAmt: 1, origAmount: 1, lastPaymentDate: moment(), dateFirstIntellect: moment(), primaryIndividualId: "", bankruptcy: "", manualRedemptionDate: moment(), borrowers: [], collaterals: [{ collateralId: 1, repoId: 1, vin: "", make: "", model: "", year: 1, repoCompanySelections: [], retitledInLandmarkName: moment(), auctionAssignmentId: 1, auctionAssignmentDate: moment(), }, { collateralId: 1, repoId: 1, vin: "", make: "", model: "", year: 1, repoCompanySelections: [], retitledInLandmarkName: moment(), auctionAssignmentId: 2, auctionAssignmentDate: moment(), }, { collateralId: 1, repoId: 1, vin: "", make: "", model: "", year: 1, repoCompanySelections: [] }], repoStatusChanges: [], }; });