Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .github/workflows/backend-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
on: [push, pull_request]

jobs:
backend-tests:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:15
env:
POSTGRES_DB: securing-safe-food-test
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
env:
DATABASE_HOST: 127.0.0.1
DATABASE_PORT: 5432
DATABASE_NAME_TEST: securing-safe-food-test
DATABASE_USERNAME: postgres
DATABASE_PASSWORD: postgres
NX_DAEMON: 'false'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: yarn install
- run: npx jest


113 changes: 0 additions & 113 deletions .github/workflows/ci-cd.yml

This file was deleted.

10 changes: 9 additions & 1 deletion apps/backend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,12 @@ You can check that your database connection details are correct by running `nx s
"LOG 🚀 Application is running on: http://localhost:3000/api"
```

Finally, run `yarn run typeorm:migrate` to load all the tables into your database. If everything is set up correctly, you should see "Migration ... has been executed successfully." in the terminal.
Finally, run `yarn run typeorm:migrate` to load all the tables into your database. If everything is set up correctly, you should see "Migration ... has been executed successfully." in the terminal.

### Running backend integration tests

1. Create a **separate** Postgres database (for example `securing-safe-food-test`).
2. Add a `DATABASE_NAME_TEST` entry (and optionally `DATABASE_HOST/PORT/USERNAME/PASSWORD`) to your `.env` so the test data source can connect to that database.
3. Run the backend test suite with `npx jest`.

Each spec truncates all data tables and runs the `CreateDummyData1759636753110` migration so every test receives the same dataset while keeping the schema created by the regular migrations.
2 changes: 2 additions & 0 deletions apps/backend/src/config/typeorm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import { RemoveOrderIdFromRequests1744133526650 } from '../migrations/1744133526
import { AddOrders1739496585940 } from '../migrations/1739496585940-addOrders';
import { UpdatePantriesTable1742739750279 } from '../migrations/1742739750279-updatePantriesTable';
import { RemoveOrdersDonationId1761500262238 } from '../migrations/1761500262238-RemoveOrdersDonationId';
import { CreateDummyData1759636753110 } from '../migrations/1759636753110-createDummyData';

const config = {
type: 'postgres',
Expand Down Expand Up @@ -49,6 +50,7 @@ const config = {
RemoveOrderIdFromRequests1744133526650,
UpdatePantriesTable1742739750279,
RemoveOrdersDonationId1761500262238,
CreateDummyData1759636753110,
],
};

Expand Down
73 changes: 73 additions & 0 deletions apps/backend/src/config/typeormTestDataSource.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import 'dotenv/config';
import { DataSource, DataSourceOptions } from 'typeorm';
import { PluralNamingStrategy } from '../strategies/plural-naming.strategy';
import { Order } from '../orders/order.entity';
import { Pantry } from '../pantries/pantries.entity';
import { User } from '../users/user.entity';
import { Donation } from '../donations/donations.entity';
import { FoodManufacturer } from '../foodManufacturers/manufacturer.entity';
import { FoodRequest } from '../foodRequests/request.entity';
import { DonationItem } from '../donationItems/donationItems.entity';
import { Allocation } from '../allocations/allocations.entity';
import { Assignments } from '../volunteerAssignments/volunteerAssignments.entity';

import { User1725726359198 } from '../migrations/1725726359198-User';
import { AddTables1726524792261 } from '../migrations/1726524792261-addTables';
import { ReviseTables1737522923066 } from '../migrations/1737522923066-reviseTables';
import { UpdateUserRole1737816745912 } from '../migrations/1737816745912-UpdateUserRole';
import { UpdatePantriesTable1737906317154 } from '../migrations/1737906317154-updatePantriesTable';
import { UpdatePantriesTable1738172265266 } from '../migrations/1738172265266-updatePantriesTable';
import { UpdateDonations1738697216020 } from '../migrations/1738697216020-updateDonations';
import { UpdatePantriesTable1739056029076 } from '../migrations/1739056029076-updatePantriesTable';
import { AddOrders1739496585940 } from '../migrations/1739496585940-addOrders';
import { UpdateOrdersTable1740367964915 } from '../migrations/1740367964915-updateOrdersTable';
import { UpdateRequestTable1741571847063 } from '../migrations/1741571847063-updateRequestTable';
import { UpdateDonationColTypes1741708808976 } from '../migrations/1741708808976-UpdateDonationColTypes';
import { UpdatePantriesTable1742739750279 } from '../migrations/1742739750279-updatePantriesTable';
import { UpdateFoodRequests1744051370129 } from '../migrations/1744051370129-updateFoodRequests';
import { RemoveOrderIdFromRequests1744133526650 } from '../migrations/1744133526650-removeOrderIdFromRequests';
import { AssignmentsPantryIdNotUnique1758384669652 } from '../migrations/1758384669652-AssignmentsPantryIdNotUnique';
import { RemoveOrdersDonationId1761500262238 } from '../migrations/1761500262238-RemoveOrdersDonationId';

const testConfig: DataSourceOptions = {
type: 'postgres',
host: process.env.DATABASE_HOST ?? '127.0.0.1',
port: parseInt(process.env.DATABASE_PORT ?? '5432', 10),
database: process.env.DATABASE_NAME_TEST ?? 'securing-safe-food-test',
username: process.env.DATABASE_USERNAME ?? 'postgres',
password: process.env.DATABASE_PASSWORD ?? 'postgres',
synchronize: false,
namingStrategy: new PluralNamingStrategy(),
entities: [
Order,
Pantry,
User,
Donation,
FoodManufacturer,
FoodRequest,
DonationItem,
Allocation,
Assignments,
],
migrations: [
User1725726359198,
AddTables1726524792261,
ReviseTables1737522923066,
UpdateUserRole1737816745912,
UpdatePantriesTable1737906317154,
UpdatePantriesTable1738172265266,
UpdateDonations1738697216020,
UpdatePantriesTable1739056029076,
AddOrders1739496585940,
UpdateOrdersTable1740367964915,
UpdateRequestTable1741571847063,
UpdateDonationColTypes1741708808976,
UpdatePantriesTable1742739750279,
UpdateFoodRequests1744051370129,
RemoveOrderIdFromRequests1744133526650,
AssignmentsPantryIdNotUnique1758384669652,
RemoveOrdersDonationId1761500262238,
],
};

export const testDataSource = new DataSource(testConfig);
Loading