Skip to content

Commit

Permalink
update driver api (#232)
Browse files Browse the repository at this point in the history
* update driver api

* fix test run

* wip

* wip

* wip

* wip

---------

Co-authored-by: Felix Gündling <[email protected]>
  • Loading branch information
steffenheger and felixguendling authored Feb 27, 2025
1 parent f5e2aae commit f68447c
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 24 deletions.
41 changes: 29 additions & 12 deletions e2e/driver.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,20 @@ import { test, expect } from '@playwright/test';
import { TAXI_OWNER, execSQL, login } from './utils';
import { sql } from 'kysely';

const fromTime = new Date('2026-09-30T00:00:00.000Z').getTime();
const toTime = new Date('2026-09-30T23:59:59.000Z').getTime();

test('Get tours', async ({ page }) => {
await login(page, TAXI_OWNER);

const response = await page
.context()
.request.get('/api/driver/tour?fromTime=1790726400000&toTime=1790812799000');
.request.get(`/api/driver/tour?fromTime=${fromTime}&toTime=${toTime}`);
expect(response.status()).toBe(200);

const responseBody = await response.json();
expect(responseBody).toHaveLength(1);
expect(responseBody[0]).toHaveProperty('tourId');
expect(responseBody[0]).toHaveProperty('licensePlate', 'GR-TU-11');
expect(responseBody[0]).toHaveProperty('events');

const events = responseBody[0]['events'];
Expand All @@ -31,16 +33,15 @@ test('Get vehicles', async ({ page }) => {
expect(response.status()).toBe(200);

const responseBody = await response.json();
expect(responseBody).toHaveLength(1);
expect(responseBody[0]).toHaveProperty('licensePlate', 'GR-TU-11');
expect(responseBody).not.toHaveLength(0);
});

test('Set ticket checked', async ({ page }) => {
await login(page, TAXI_OWNER);

const toursResponse = await page
.context()
.request.get('/api/driver/tour?fromTime=1790726400000&toTime=1790812799000');
.request.get(`/api/driver/tour?fromTime=${fromTime}&toTime=${toTime}`);
expect(toursResponse.status()).toBe(200);

const tours = await toursResponse.json();
Expand All @@ -57,18 +58,28 @@ test('Set ticket checked', async ({ page }) => {
const ticketCode = 'a7d421840cf89e052d7c1aa74caf66d8';
await execSQL(sql`UPDATE "request" SET ticket_code = ${ticketCode} WHERE id = ${requestId}`);

const response = await page
const response1 = await page
.context()
.request.post(`/api/driver/ticket?requestId=${requestId}&ticketCode=${ticketCode}`);
expect(response.status()).toBe(200);
.request.put(`/api/driver/ticket?requestId=${requestId}&ticketCode=${ticketCode}`);
expect(response1.status()).toBe(204);

const response2 = await page
.context()
.request.put(`/api/driver/ticket?requestId="NaN"&ticketCode=${ticketCode}`);
expect(response2.status()).toBe(400);

const response3 = await page
.context()
.request.put(`/api/driver/ticket?requestId=${requestId}&ticketCode=invalidCode`);
expect(response3.status()).toBe(404);
});

test('Set tour fare', async ({ page }) => {
await login(page, TAXI_OWNER);

const toursResponse = await page
.context()
.request.get('/api/driver/tour?fromTime=1790726400000&toTime=1790812799000');
.request.get(`/api/driver/tour?fromTime=${fromTime}&toTime=${toTime}`);
expect(toursResponse.status()).toBe(200);

const tours = await toursResponse.json();
Expand All @@ -80,8 +91,14 @@ test('Set tour fare', async ({ page }) => {

const fare = 1234;

const response = await page
const response1 = await page
.context()
.request.post(`/api/driver/fare?tourId=${tourId}&fare=${fare}`);
expect(response.status()).toBe(200);
.request.put(`/api/driver/fare?tourId=${tourId}&fare=${fare}`);
expect(response1.status()).toBe(204);

const response2 = await page.context().request.put(`/api/driver/fare?tourId=NaN&fare=${fare}`);
expect(response2.status()).toBe(400);

const response3 = await page.context().request.put(`/api/driver/fare?tourId=${tourId}&fare=NaN`);
expect(response3.status()).toBe(400);
});
18 changes: 13 additions & 5 deletions src/routes/api/driver/fare/+server.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
import { db } from '$lib/server/db';
import { readInt } from '$lib/server/util/readForm.js';
import { json } from '@sveltejs/kit';
import { error } from '@sveltejs/kit';

export const POST = async ({ url }) => {
export const PUT = async ({ url }) => {
const tourId = readInt(url.searchParams.get('tourId'));
const fare = readInt(url.searchParams.get('fare'));

if (isNaN(fare) || isNaN(tourId)) {
throw 'bad params';
error(400, { message: 'Invalid fare or tourId parameter' });
}

await db.updateTable('tour').set({ fare: fare }).where('id', '=', tourId).execute();
const result = await db
.updateTable('tour')
.set({ fare: fare })
.where('id', '=', tourId)
.executeTakeFirst();

return json({ success: true });
if (result.numUpdatedRows === BigInt(0)) {
error(404, { message: 'Tour not found' });
}

return new Response(null, { status: 204 });
};
16 changes: 10 additions & 6 deletions src/routes/api/driver/ticket/+server.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,25 @@
import { db } from '$lib/server/db';
import { readInt } from '$lib/server/util/readForm.js';
import { json } from '@sveltejs/kit';
import { error } from '@sveltejs/kit';

export const POST = async ({ url }) => {
export const PUT = async ({ url }) => {
const requestId = readInt(url.searchParams.get('requestId'));
const ticketCode = url.searchParams.get('ticketCode');

if (typeof ticketCode !== 'string' || isNaN(requestId)) {
throw 'bad params';
error(400, { message: 'Invalid ticketCode parameter' });
}

await db
const result = await db
.updateTable('request')
.set({ ticketChecked: true })
.where('id', '=', requestId)
.where('ticketCode', '=', ticketCode)
.execute();
.executeTakeFirst();

return json({ success: true });
if (result.numUpdatedRows === BigInt(0)) {
error(404, { message: 'Request not found or invalid ticket code' });
}

return new Response(null, { status: 204 });
};
7 changes: 6 additions & 1 deletion src/routes/api/driver/tour/+server.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
import { getTours } from '$lib/server/db/getTours';
import { readInt } from '$lib/server/util/readForm.js';
import { json } from '@sveltejs/kit';
import { error, json } from '@sveltejs/kit';

export const GET = async ({ locals, url }) => {
const companyId = locals.session!.companyId!;
const fromTime = readInt(url.searchParams.get('fromTime'));
const toTime = readInt(url.searchParams.get('toTime'));

if (isNaN(fromTime) || isNaN(toTime)) {
error(400, { message: 'Invalid time range' });
}

return json(await getTours(false, companyId, [fromTime, toTime]));
};

0 comments on commit f68447c

Please sign in to comment.