Created
June 8, 2025 10:25
-
-
Save ReginaP65/035afb3ba615edc2322172ed81f591a3 to your computer and use it in GitHub Desktop.
HW #7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import {BaseContract} from "../src/BaseContract"; | |
test('checking all fields in BaseContract are stored correctly', () => { | |
const contract = new BaseContract("WE345", "Sam", true); | |
expect(contract.contractId).toBe("WE345"); | |
expect(contract.clientName).toBe("Sam"); | |
expect(contract.isActive).toBe(true); | |
}); | |
import {DepositContract} from "../src/DepositContract" | |
test(' checking all fields in DepositContract are stored correctly', () => { | |
const deposit = new DepositContract("SD003", "Mikk", true, 400, 2); | |
expect(deposit.contractId).toBe("SD003"); | |
expect(deposit.clientName).toBe("Mikk"); | |
expect(deposit.isActive).toBe(true); | |
expect(deposit.amount).toBe(400); | |
expect(deposit.interestRate).toBe(2); | |
}); | |
test(' calculation of payment for deposit contract should return correct value', () => { | |
const deposit = new DepositContract("SD003", "Mikk", true, 400, 2); | |
expect(deposit.calculateInterest()).toBe(800); | |
}); | |
import {LoanContract} from "../src/LoanContract" | |
test ('checking all fields in LoanContract are stored correctly',() => { | |
const loan = new LoanContract("WR543", "Max", true, 10000, 500, 24); | |
expect(loan.contractId).toBe("WR543"); | |
expect(loan.clientName).toBe("Max"); | |
expect(loan.isActive).toBe(true); | |
expect(loan.loanAmount).toBe(10000); | |
expect(loan.monthlyPayment).toBe(500); | |
expect(loan.loanTermMonths).toBe(24); | |
}); | |
test ('calculation of payment for loan contract should return correct value',() => { | |
const loan = new LoanContract("WR543", "Max", true, 10000, 500, 24); | |
expect(loan.calculateTotalPayment()).toBe(12000); | |
}); | |
import {InsuranceContract} from "../src/InsuranceContract" | |
test ('checking all fields in InsuranceContract are stored correctly',() => { | |
const insurance = new InsuranceContract("TY246", "Ivo", true, "property", 1000, 12); | |
expect(insurance.contractId).toBe("TY246"); | |
expect(insurance.clientName).toBe("Ivo"); | |
expect(insurance.isActive).toBe(true); | |
expect(insurance.insuranceType).toBe("property"); | |
expect(insurance.premium).toBe(1000); | |
expect(insurance.termYears).toBe(12); | |
}); | |
test ('calculation of payment for premium insurance contract should return correct value',() => { | |
const insurance = new InsuranceContract("TY246", "Ivo", true, "property", 1000, 12); | |
expect(insurance.calculateTotalPremium()).toBe(12000); | |
}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Base class with common fields and logic | |
export class BaseContract{ | |
contractId:string; | |
clientName:string; | |
isActive:boolean; | |
constructor(contractId:string, clientName:string,isActive:boolean){ | |
this.contractId = contractId; | |
this.clientName= clientName; | |
this.isActive=isActive; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import {BaseContract} from "./BaseContract"; | |
export class DepositContract extends BaseContract{ | |
amount: number; | |
interestRate: number; | |
constructor(contractId: string, clientName: string,isActive:boolean, amount:number, interestRate:number ) { | |
super(contractId,clientName,isActive); | |
this.amount=amount; | |
this.interestRate=interestRate; | |
} | |
//add method | |
calculateInterest(): number { | |
return this.amount * this.interestRate; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import {BaseContract} from "./BaseContract"; | |
export class InsuranceContract extends BaseContract{ | |
insuranceType:string; | |
premium:number; | |
termYears:number; | |
constructor(contractId:string, clientName:string, isActive:boolean, insuranceType:string, premium:number, termYears:number){ | |
super(contractId,clientName,isActive); | |
this.insuranceType = insuranceType; | |
this.premium = premium; | |
this.termYears = termYears; | |
} | |
//add method | |
calculateTotalPremium():number{ | |
return this.premium*this.termYears; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import {BaseContract} from "./BaseContract"; | |
export class LoanContract extends BaseContract{ | |
loanAmount:number; | |
monthlyPayment:number; | |
loanTermMonths:number; | |
constructor( contractId:string, clientName:string,isActive:boolean,loanAmount:number, monthlyPayment:number, loanTermMonths:number){ | |
super(contractId,clientName,isActive); | |
this.loanAmount = loanAmount; | |
this.monthlyPayment = monthlyPayment; | |
this.loanTermMonths = loanTermMonths; | |
} | |
// add method | |
calculateTotalPayment():number{ | |
return this.monthlyPayment* this.loanTermMonths | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment