Skip to content
2 changes: 2 additions & 0 deletions apps/backend/src/config/migrations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import { RenameDonationMatchingStatus1771260403657 } from '../migrations/1771260
import { DropDonationTotalColumns1772241115031 } from '../migrations/1772241115031-DropDonationTotalColumns';
import { FixTrackingLinks1773041840374 } from '../migrations/1773041840374-FixTrackingLinks';
import { CleanupRequestsAndAllocations1771821377918 } from '../migrations/1771821377918-CleanupRequestsAndAllocations';
import { MakeFoodRescueRequired1773889925002 } from '../migrations/1773889925002-MakeFoodRescueRequired.ts';
import { AddDonationItemConfirmation1774140453305 } from '../migrations/1774140453305-AddDonationItemConfirmation';

const schemaMigrations = [
Expand Down Expand Up @@ -77,6 +78,7 @@ const schemaMigrations = [
DropDonationTotalColumns1772241115031,
FixTrackingLinks1773041840374,
CleanupRequestsAndAllocations1771821377918,
MakeFoodRescueRequired1773889925002,
AddDonationItemConfirmation1774140453305,
];

Expand Down
45 changes: 0 additions & 45 deletions apps/backend/src/donationItems/donationItems.controller.spec.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
import { Test, TestingModule } from '@nestjs/testing';
import { DonationItemsController } from './donationItems.controller';
import { DonationItemsService } from './donationItems.service';
import { DonationItem } from './donationItems.entity';
import { mock } from 'jest-mock-extended';
import { FoodType } from './types';
import { CreateMultipleDonationItemsDto } from './dtos/create-donation-items.dto';

const mockDonationItemsService = mock<DonationItemsService>();

Expand All @@ -25,46 +22,4 @@ describe('DonationItemsController', () => {
it('should be defined', () => {
expect(controller).toBeDefined();
});

describe('createMultipleDonationItems', () => {
it('should call donationItemsService.createMultipleDonationItems with donationId and items, and return the created donation items', async () => {
const mockBody: CreateMultipleDonationItemsDto = {
donationId: 1,
items: [
{
itemName: 'Rice Noodles',
quantity: 100,
reservedQuantity: 0,
ozPerItem: 5,
estimatedValue: 100,
foodType: FoodType.DAIRY_FREE_ALTERNATIVES,
},
{
itemName: 'Beans',
quantity: 50,
reservedQuantity: 0,
ozPerItem: 10,
estimatedValue: 80,
foodType: FoodType.GLUTEN_FREE_BAKING_PANCAKE_MIXES,
},
],
};

const mockCreatedItems: Partial<DonationItem>[] = [
{ itemId: 1, donationId: 1, ...mockBody.items[0] },
{ itemId: 2, donationId: 1, ...mockBody.items[1] },
];

mockDonationItemsService.createMultipleDonationItems.mockResolvedValue(
mockCreatedItems as DonationItem[],
);

const result = await controller.createMultipleDonationItems(mockBody);

expect(
mockDonationItemsService.createMultipleDonationItems,
).toHaveBeenCalledWith(mockBody.donationId, mockBody.items);
expect(result).toEqual(mockCreatedItems);
});
});
});
53 changes: 0 additions & 53 deletions apps/backend/src/donationItems/donationItems.controller.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
import {
Controller,
Post,
Body,
Param,
Get,
Patch,
UseGuards,
ParseIntPipe,
} from '@nestjs/common';
import { ApiBody } from '@nestjs/swagger';
import { DonationItemsService } from './donationItems.service';
import { DonationItem } from './donationItems.entity';
import { AuthGuard } from '@nestjs/passport';
import { FoodType } from './types';
import { CreateMultipleDonationItemsDto } from './dtos/create-donation-items.dto';

@Controller('donation-items')
@UseGuards(AuthGuard('jwt'))
Expand All @@ -26,51 +20,4 @@ export class DonationItemsController {
): Promise<DonationItem[]> {
return this.donationItemsService.getAllDonationItems(donationId);
}

@Post('/create-multiple')
@ApiBody({
description: 'Bulk create donation items for a single donation',
schema: {
type: 'object',
properties: {
donationId: {
type: 'integer',
example: 1,
},
items: {
type: 'array',
items: {
type: 'object',
properties: {
itemName: { type: 'string', example: 'Rice Noodles' },
quantity: { type: 'integer', example: 100 },
reservedQuantity: { type: 'integer', example: 0 },
ozPerItem: { type: 'integer', example: 5 },
estimatedValue: { type: 'integer', example: 100 },
foodType: {
type: 'string',
enum: Object.values(FoodType),
example: FoodType.DAIRY_FREE_ALTERNATIVES,
},
},
},
},
},
},
})
async createMultipleDonationItems(
@Body() body: CreateMultipleDonationItemsDto,
): Promise<DonationItem[]> {
return this.donationItemsService.createMultipleDonationItems(
body.donationId,
body.items,
);
}

@Patch('/update-quantity/:itemId')
async updateDonationItemQuantity(
@Param('itemId', ParseIntPipe) itemId: number,
): Promise<DonationItem> {
return this.donationItemsService.updateDonationItemQuantity(itemId);
}
}
1 change: 1 addition & 0 deletions apps/backend/src/donationItems/donationItems.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@ import { Donation } from '../donations/donations.entity';
imports: [TypeOrmModule.forFeature([DonationItem, Donation]), AuthModule],
controllers: [DonationItemsController],
providers: [DonationItemsService],
exports: [DonationItemsService],
})
export class DonationItemsModule {}
Loading
Loading