From 8833d8b033d8eb5736a38e876bf2e103f594b1ed Mon Sep 17 00:00:00 2001 From: Dmitry Sviridenko Date: Fri, 14 Jul 2023 20:56:15 +0300 Subject: [PATCH] chore: Remove useless unit tests --- src/models/balances.model.test.ts | 211 ------------------------------ 1 file changed, 211 deletions(-) delete mode 100644 src/models/balances.model.test.ts diff --git a/src/models/balances.model.test.ts b/src/models/balances.model.test.ts deleted file mode 100644 index 832e77a7..00000000 --- a/src/models/balances.model.test.ts +++ /dev/null @@ -1,211 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import Balances from './Balances.model'; -import { GenericSequelizeModelAttributes } from '@common/types'; -import { serverInstance, redisClient } from '@root/app'; -import Transactions from './Transactions.model'; - -describe('Balances model', () => { - afterAll(() => { - redisClient.quit(); - serverInstance.close(); - }); - - beforeEach(() => { - jest.resetAllMocks(); - }); - - describe('handleTransactionChange', () => { - const mockTransaction: Partial = { - accountId: 1, - time: new Date(), - amount: 500, - }; - - const mockAttributes: GenericSequelizeModelAttributes = {}; - let mockUpdateBalance - - beforeEach(() => { - mockUpdateBalance = jest.spyOn(Balances as any, 'updateBalance'); - mockUpdateBalance.mockResolvedValue(true); - }) - - it('handles transaction deletion correctly', async () => { - await Balances.handleTransactionChange({ - data: mockTransaction as Transactions, - isDelete: true, - }, mockAttributes); - - expect(mockUpdateBalance).toHaveBeenCalledTimes(1); - expect(mockUpdateBalance).toBeCalledWith({ - amount: mockTransaction.amount * -1, - date: expect.anything(), - accountId: 1, - }, mockAttributes) - }); - - it('handles transaction addition correctly', async () => { - await Balances.handleTransactionChange({ - data: mockTransaction as Transactions - }, mockAttributes); - - expect(mockUpdateBalance).toHaveBeenCalledTimes(1); - expect(mockUpdateBalance).toBeCalledWith({ - amount: mockTransaction.amount, - date: expect.anything(), - accountId: 1, - }, mockAttributes) - }); - - it('handles transaction change correctly', async () => { - await Balances.handleTransactionChange({ - data: mockTransaction as Transactions, - }, mockAttributes); - - expect(mockUpdateBalance).toHaveBeenCalledTimes(1); - expect(mockUpdateBalance).toBeCalledWith({ - amount: mockTransaction.amount, - date: expect.anything(), - accountId: 1, - }, mockAttributes) - }); - - it("handles transaction's accountId change correctly", async () => { - const mockPrevTransactionData: Partial = { - accountId: 2, - time: new Date(), - amount: 600, - }; - - await Balances.handleTransactionChange({ - data: mockTransaction as any, - prevData: mockPrevTransactionData as any, - }, mockAttributes); - - expect(mockUpdateBalance).toHaveBeenCalledTimes(2); - expect(mockUpdateBalance).toHaveBeenNthCalledWith(1, { - amount: mockPrevTransactionData.amount * -1, - date: expect.anything(), - accountId: 2, - }, mockAttributes) - expect(mockUpdateBalance).toHaveBeenNthCalledWith(2, { - amount: mockTransaction.amount, - prevAmount: mockPrevTransactionData.amount, - date: expect.anything(), - accountId: 1, - }, mockAttributes) - }); - }); - - describe('updateBalance', () => { - const currentDate = new Date() - const priorDate = new Date(currentDate) - priorDate.setDate(currentDate.getDate() - 1) - - const initialCurrentBalanceAmount = 1000 - const transactionData: Partial = { - accountId: 1, - time: currentDate, - amount: 1000, - } - - const prevBalanceData = { - amount: 500, - accountId: transactionData.accountId, - date: priorDate, - }; - - const mockAttributes: GenericSequelizeModelAttributes = {}; - let currentBalanceData, findOneSpy, createSpy, updateSpy, originalSequelize - - beforeEach(() => { - originalSequelize = Balances.sequelize - - findOneSpy = jest.spyOn(Balances, 'findOne'); - - createSpy = jest.spyOn(Balances, 'create'); - createSpy.mockResolvedValueOnce({}); - - currentBalanceData = { - accountId: transactionData.accountId, - date: currentDate, - amount: initialCurrentBalanceAmount, - save: jest.fn().mockImplementation(function() { - return Promise.resolve(true); - }), - } - - updateSpy = jest.spyOn(Balances, 'update'); - updateSpy.mockResolvedValueOnce([1]); // indicate one row updated - - (Balances as any).sequelize = { literal: jest.fn((value) => value) }; - }); - - afterEach(() => { - (Balances as any).sequelize = originalSequelize; - }); - - it('updates balance correctly for transaction WITH NO record for that date', async () => { - // `null` means that we didn't find record for that date, so for the next - // call we will return - findOneSpy.mockResolvedValueOnce(null).mockResolvedValueOnce(prevBalanceData); - - await Balances.handleTransactionChange({ data: transactionData as Transactions }, mockAttributes); - - expect(findOneSpy).toHaveBeenCalledTimes(2); - expect(createSpy).toHaveBeenCalledTimes(1); - expect(createSpy).toHaveBeenCalledWith({ - amount: transactionData.amount + prevBalanceData.amount, - accountId: transactionData.accountId, - date: expect.anything() - }, mockAttributes); - expect(updateSpy).toHaveBeenCalledTimes(1); - expect(updateSpy).toHaveBeenCalledWith({ - // So we're checking that literal was called with a correct column and value - amount: `amount + ${transactionData.amount}`, - }, expect.anything()); - }); - - describe('updates balance correctly for transaction WITH record for that date', () => { - it('new transaction', async () => { - findOneSpy.mockResolvedValueOnce(currentBalanceData); - - await Balances.handleTransactionChange({ data: transactionData as Transactions }, mockAttributes); - - expect(findOneSpy).toHaveBeenCalledTimes(1); - expect(createSpy).toHaveBeenCalledTimes(0); - expect(currentBalanceData.save).toHaveBeenCalledTimes(1); - expect(currentBalanceData.amount).toBe(initialCurrentBalanceAmount + transactionData.amount) - expect(updateSpy).toHaveBeenCalledTimes(1); - expect(updateSpy).toHaveBeenCalledWith({ - // So we're checking that literal was called with a correct column and value - amount: `amount + ${transactionData.amount}`, - }, expect.anything()); - }); - - describe('already existing transaction', () => { - it('only amount changed ', async () => { - findOneSpy.mockResolvedValueOnce(currentBalanceData); - const prevTransactionData = { - ...transactionData, - amount: 100, - } - - await Balances.handleTransactionChange({ - data: transactionData as Transactions, - prevData: prevTransactionData as Transactions, - }, mockAttributes); - - expect(findOneSpy).toHaveBeenCalledTimes(1); - expect(createSpy).toHaveBeenCalledTimes(0); - expect(currentBalanceData.save).toHaveBeenCalledTimes(1); - expect(currentBalanceData.amount).toBe(initialCurrentBalanceAmount + transactionData.amount - prevTransactionData.amount) - expect(updateSpy).toHaveBeenCalledTimes(1); - expect(updateSpy).toHaveBeenCalledWith({ - // So we're checking that literal was called with a correct column and value - amount: `amount + ${transactionData.amount - prevTransactionData.amount}`, - }, expect.anything()); - }); - }) - }) - }); -});