Skip to content

Commit

Permalink
feat: bs prev-days, /date mocked endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
yxuo committed Jan 30, 2024
1 parent 6f80e42 commit 1d6360f
Show file tree
Hide file tree
Showing 26 changed files with 346 additions and 149 deletions.
53 changes: 48 additions & 5 deletions src/bank-statements/bank-statements.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,19 @@ import { ApiBearerAuth, ApiParam, ApiQuery, ApiTags } from '@nestjs/swagger';
import { User } from 'src/users/entities/user.entity';
import { CommonApiParams } from 'src/utils/api-param/common-api-params';
import { DateApiParams } from 'src/utils/api-param/date-api-param';
import {
BSMeTimeIntervalEnum,
BSTimeIntervalEnum,
} from 'src/utils/enums/time-interval.enum';
import { PaginationApiParams } from 'src/utils/api-param/pagination.api-param';
import { TimeIntervalEnum } from 'src/utils/enums/time-interval.enum';
import { IRequest } from 'src/utils/interfaces/request.interface';
import { pagination as getPaginationResult } from 'src/utils/pagination';
import { ParseNumberPipe } from 'src/utils/pipes/parse-number.pipe';
import { DateQueryParams } from 'src/utils/query-param/date.query-param';
import { PaginationQueryParams } from 'src/utils/query-param/pagination.query-param';
import { PaginationResultType as PaginationResult } from 'src/utils/types/pagination-result.type';
import { BankStatementsService } from './bank-statements.service';
import { BSMePrevDaysTimeIntervalEnum } from './enums/bs-me-prev-days-time-interval.enum';
import { BSMeTimeIntervalEnum } from './enums/bs-me-time-interval.enum';
import { IBSGetMeDayResponse } from './interfaces/bs-get-me-day-response.interface';
import { IBSGetMePreviousDaysResponse } from './interfaces/bs-get-me-previous-days-response.interface';
import { IBSGetMeResponse } from './interfaces/bs-get-me-response.interface';

@ApiTags('BankStatements')
Expand Down Expand Up @@ -58,7 +62,7 @@ export class BankStatementsController {
startDate,
endDate,
timeInterval: timeInterval
? (timeInterval as unknown as BSTimeIntervalEnum)
? (timeInterval as unknown as TimeIntervalEnum)
: undefined,
userId: isUserIdNumber ? userId : request.user.id,
});
Expand All @@ -85,4 +89,43 @@ export class BankStatementsController {
userId: isUserIdParam ? userId : (request.user as User).id,
});
}

@SerializeOptions({
groups: ['me'],
})
@ApiBearerAuth()
@UseGuards(AuthGuard('jwt'))
@Get('me/previous-days')
@ApiQuery(PaginationApiParams.page)
@ApiQuery(PaginationApiParams.limit)
@ApiQuery(DateApiParams.startDate)
@ApiQuery(DateApiParams.endDate)
@ApiQuery(
DateApiParams.getTimeInterval(
BSMePrevDaysTimeIntervalEnum,
BSMePrevDaysTimeIntervalEnum.LAST_WEEK,
),
)
@ApiQuery(CommonApiParams.userId)
@HttpCode(HttpStatus.OK)
async getMePreviousDays(
@Request() request: IRequest,
@Query(...PaginationQueryParams.page) page: number,
@Query(...PaginationQueryParams.limit) limit: number,
@Query(...DateQueryParams.getDate('endDate', true)) endDate: string,
@Query('timeInterval') timeInterval: BSMePrevDaysTimeIntervalEnum,
@Query('userId', new ParseNumberPipe({ min: 0, required: false }))
userId?: number | null,
): Promise<PaginationResult<IBSGetMePreviousDaysResponse>> {
const isUserIdParam = userId !== null && !isNaN(Number(userId));
const result = await this.bankStatementsService.getMePreviousDays({
endDate: endDate,
timeInterval: timeInterval,
userId: isUserIdParam ? userId : (request.user as User).id,
});
return getPaginationResult(result, result.data.length, result.data.length, {
limit,
page,
});
}
}
78 changes: 46 additions & 32 deletions src/bank-statements/bank-statements.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,20 @@ import { TicketRevenuesService } from 'src/ticket-revenues/ticket-revenues.servi
import { User } from 'src/users/entities/user.entity';
import { UsersService } from 'src/users/users.service';
import { getDateYMDString } from 'src/utils/date-utils';
import { BSTimeIntervalEnum } from 'src/utils/enums/time-interval.enum';
import { TimeIntervalEnum } from 'src/utils/enums/time-interval.enum';
import { BankStatementsService } from './bank-statements.service';
import { IBankStatement } from './interfaces/bank-statement.interface';

const allBankStatements = [
{ id: 1, cpfCnpj: 'cc_1', permitCode: 'pc_1', date: '2023-01-27', amount: 1 },
{ id: 2, cpfCnpj: 'cc_1', permitCode: 'pc_1', date: '2023-01-20', amount: 2 },
{ id: 3, cpfCnpj: 'cc_1', permitCode: 'pc_1', date: '2023-01-13', amount: 3 },
{ id: 4, cpfCnpj: 'cc_1', permitCode: 'pc_1', date: '2023-01-06', amount: 4 },
] as Partial<IBankStatement>[] as IBankStatement[];
{ id: 1, date: '2023-01-27', amount: 1 },
{ id: 2, date: '2023-01-20', amount: 2 },
{ id: 3, date: '2023-01-13', amount: 3 },
{ id: 4, date: '2023-01-06', amount: 4 },
].map((i) => ({
...i,
cpfCnpj: 'cc_1',
permitCode: 'pc_1',
})) as Partial<IBankStatement>[] as IBankStatement[];

describe('BankStatementsService', () => {
let bankStatementsService: BankStatementsService;
Expand Down Expand Up @@ -173,7 +177,7 @@ describe('BankStatementsService', () => {

// Act
const result = await bankStatementsService.getMe({
timeInterval: BSTimeIntervalEnum.LAST_2_WEEKS,
timeInterval: TimeIntervalEnum.LAST_2_WEEKS,
userId: 1,
});

Expand All @@ -186,23 +190,27 @@ describe('BankStatementsService', () => {
data: [
{
id: 2,
cpfCnpj: 'cc_1',
permitCode: 'pc_1',
date: '2023-01-27',
amount: 40,
status: '',
statusCode: '',
},
{
id: 1,
cpfCnpj: 'cc_1',
permitCode: 'pc_1',
date: '2023-01-20',
amount: 70,
status: '',
statusCode: '',
},
],
].map((i) => ({
...i,
cpfCnpj: 'cc_1',
paymentOrderDate: i.date,
permitCode: 'pc_1',
status: '',
statusCode: '',
error: null,
errorCode: null,
bankStatus: null,
bankStatusCode: null,
effectivePaymentDate: null,
})),
});
});

Expand Down Expand Up @@ -317,7 +325,7 @@ describe('BankStatementsService', () => {

// Act
const result = await bankStatementsService.getMe({
timeInterval: BSTimeIntervalEnum.LAST_WEEK,
timeInterval: TimeIntervalEnum.LAST_WEEK,
userId: 1,
});

Expand All @@ -333,9 +341,15 @@ describe('BankStatementsService', () => {
cpfCnpj: 'cc_1',
permitCode: 'pc_1',
date: '2023-01-27',
paymentOrderDate: '2023-01-27',
amount: 70,
status: '',
statusCode: '',
error: null,
errorCode: null,
bankStatus: null,
bankStatusCode: null,
effectivePaymentDate: null,
},
],
});
Expand Down Expand Up @@ -458,7 +472,7 @@ describe('BankStatementsService', () => {

// Act
const result = await bankStatementsService.getMe({
timeInterval: BSTimeIntervalEnum.LAST_MONTH,
timeInterval: TimeIntervalEnum.LAST_MONTH,
userId: 1,
});

Expand All @@ -471,32 +485,32 @@ describe('BankStatementsService', () => {
data: [
{
id: 3,
cpfCnpj: 'cc_1',
permitCode: 'pc_1',
date: '2023-01-20',
amount: 60,
status: '',
statusCode: '',
},
{
id: 2,
cpfCnpj: 'cc_1',
permitCode: 'pc_1',
date: '2023-01-13',
amount: 70,
status: '',
statusCode: '',
},
{
id: 1,
cpfCnpj: 'cc_1',
permitCode: 'pc_1',
date: '2023-01-06',
amount: 70,
status: '',
statusCode: '',
},
],
].map((i) => ({
...i,
cpfCnpj: 'cc_1',
permitCode: 'pc_1',
paymentOrderDate: i.date,
error: null,
errorCode: null,
bankStatus: null,
bankStatusCode: null,
status: '',
statusCode: '',
effectivePaymentDate: null,
})),
});
});

Expand Down Expand Up @@ -539,7 +553,7 @@ describe('BankStatementsService', () => {
await expect(
bankStatementsService.getMe({
userId: 0,
timeInterval: BSTimeIntervalEnum.LAST_WEEK,
timeInterval: TimeIntervalEnum.LAST_WEEK,
}),
).rejects.toThrowError();
});
Expand Down
Loading

0 comments on commit 1d6360f

Please sign in to comment.