Skip to content

Commit

Permalink
Merge pull request #9 from bruno-valero/dev
Browse files Browse the repository at this point in the history
infra: all routes settled, must test to verify
  • Loading branch information
bruno-valero authored Jun 22, 2024
2 parents 56aea13 + 8ad4db9 commit 740ab27
Show file tree
Hide file tree
Showing 9 changed files with 34 additions and 8 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,5 @@ pids
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

videos
*.pem
data
3 changes: 2 additions & 1 deletion client.http
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,8 @@ Authorization: Bearer {{authToken}}
###

# @name fetchNearbyOrders
GET {{baseUrl}}/orders/:{{firstCourierId}}/nearby?latitude={{currentLatitude}}&longitude={{currentLongitude}}

GET {{baseUrl}}/orders/{{firstCourierId}}/nearby?latitude={{currentLatitude}}&longitude={{currentLongitude}}
Content-Type: application/json
Authorization: Bearer {{authToken}}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { UseCaseError } from '@/core/errors/use-case-errors'

export class OrderAlreadyCollectedError extends Error implements UseCaseError {
constructor() {
super(`this order was already collected`)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import { makeCreateOrderUseCase } from 'test/factories/use-cases/order/make-crea
import { makeAddress } from 'test/factories/entities/value-objects/makeAddress'
import UniqueEntityId from '@/core/entities/unique-entity-id'
import { makeCollectOrderUseCase } from 'test/factories/use-cases/order/make-collect-order-use-case'
import { OrderIsClosedError } from '@/core/errors/errors/order-errors/order-is-closed-error'
import { OrderNotAwaitingPickupError } from '@/core/errors/errors/order-errors/order-not-awaiting-for-pickup-error'
import { OrderAlreadyCollectedError } from '@/core/errors/errors/order-errors/order-already-collected-error'

describe('collect order use case', () => {
let createOrder = makeCreateOrderUseCase()
Expand Down Expand Up @@ -129,7 +129,7 @@ describe('collect order use case', () => {
const orders = await sut.dependencies.ordersRepository.findMany()

expect(sutResp.isLeft()).toBeTruthy()
expect(sutResp.value).toBeInstanceOf(OrderIsClosedError)
expect(sutResp.value).toBeInstanceOf(OrderAlreadyCollectedError)
expect(orders).toHaveLength(1)
expect(orders[0]).toEqual(
expect.objectContaining({
Expand Down Expand Up @@ -176,7 +176,7 @@ describe('collect order use case', () => {
const orders = await sut.dependencies.ordersRepository.findMany()

expect(sutResp.isLeft()).toBeTruthy()
expect(sutResp.value).toBeInstanceOf(OrderIsClosedError)
expect(sutResp.value).toBeInstanceOf(OrderAlreadyCollectedError)
expect(orders).toHaveLength(1)
expect(orders[0]).toEqual(
expect.objectContaining({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { OrderAwaitingPickupError } from '@/core/errors/errors/order-errors/orde
import { OrderIsClosedError } from '@/core/errors/errors/order-errors/order-is-closed-error'
import { InternalServerError } from '@/core/errors/errors/internal-server-error'
import { Injectable } from '@nestjs/common'
import { OrderAlreadyCollectedError } from '@/core/errors/errors/order-errors/order-already-collected-error'

export interface CollectOrderUseCaseRequest {
orderId: string
Expand All @@ -21,6 +22,7 @@ export type CollectOrderUseCaseResponse = Either<
| UnauthorizedError
| OrderAwaitingPickupError
| OrderIsClosedError
| OrderAlreadyCollectedError
| InternalServerError,
null
>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ import { OrderNotAwaitingPickupError } from '@/core/errors/errors/order-errors/o
import { OrderWasNotCollectedError } from '@/core/errors/errors/order-errors/order-was-not-collected-error'
import { OrderCourierCollectedEvent } from '../events/order-courier-collected-event'
import z from 'zod'
import { OrderAlreadyCollectedError } from '@/core/errors/errors/order-errors/order-already-collected-error'


export const orderPropsSchema = z.object({
recipientId: uniqueEntityIdInstanceSchema,
Expand Down Expand Up @@ -208,10 +210,16 @@ export class Order extends AggregateRoot<OrderProps> {

private admCollected(
updatedBy: UniqueEntityId,
): UpdateOrderReturn<OrderNotAwaitingPickupError | OrderIsClosedError> {
): UpdateOrderReturn<
| OrderNotAwaitingPickupError
| OrderIsClosedError
| OrderAlreadyCollectedError
> {
const collected = !!this.props.collected
const awaitingPickup = !!this.props.awaitingPickup
const isOrderClosed = this.isOrderClosed

if (collected) return { error: new OrderAlreadyCollectedError() }
if (isOrderClosed) return { error: new OrderIsClosedError() }
if (!awaitingPickup) return { error: new OrderNotAwaitingPickupError() }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ export class PrismaUpdateOrderMapper {
}

static domainToPrisma(update: UpdateOrder): PrismaUpdates {
console.log('before changes')

const changes = JSON.stringify({
before: update.changes.before.toJson(),
after: update.changes.after.toJson(),
})
console.log('afetr changes', changes)


const prismaUpdate: PrismaUpdates = {
changes,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ export class PrismaOrdersRepository implements OrdersRepository {
courierId: string,
): Promise<Order[]> {
const data = await this.prisma.$queryRaw<PrismaOrder[]>`
SELECT * IN orders
SELECT * from orders
WHERE ( 6371 * acos( cos( radians(${latitude}) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(${longitude}) ) + sin( radians(${latitude}) ) * sin( radians( latitude ) ) ) ) <= 10
AND courier_id = ${courierId}
`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ import { CollectOrderUseCase } from '@/domain/core/deliveries-and-orders/applica
import { OrderAwaitingPickupError } from '@/core/errors/errors/order-errors/order-awaiting-for-pickup-error'
import { OrderIsClosedError } from '@/core/errors/errors/order-errors/order-is-closed-error'
import { InternalServerError } from '@/core/errors/errors/internal-server-error'
import { OrderAlreadyCollectedError } from '@/core/errors/errors/order-errors/order-already-collected-error'


const paramsSchema = z.object({
id: z.string().uuid(),
Expand Down Expand Up @@ -62,6 +64,10 @@ export class CollectOrderController {
throw new UnauthorizedException({ message: value.message })
}

if (value instanceof OrderAlreadyCollectedError) {
throw new BadRequestException({ message: value.message })
}

const isAwaitingError = value instanceof OrderAwaitingPickupError
const isClosedError = value instanceof OrderIsClosedError

Expand Down

0 comments on commit 740ab27

Please sign in to comment.