Skip to content

Instantly share code, notes, and snippets.

@ReginaP65
Created June 8, 2025 10:25
Show Gist options
  • Save ReginaP65/035afb3ba615edc2322172ed81f591a3 to your computer and use it in GitHub Desktop.
Save ReginaP65/035afb3ba615edc2322172ed81f591a3 to your computer and use it in GitHub Desktop.
HW #7
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);
});
//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;
}
}
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;
}
}
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;
}
}
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