From d20003ea86853f906fd34d52595116779e109e73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klaudio=20Ku=C3=A7aj?= Date: Wed, 8 Jan 2025 15:00:25 +0100 Subject: [PATCH] test: Relic server test description improvements --- test/relic_server_test.dart | 65 ++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/test/relic_server_test.dart b/test/relic_server_test.dart index 8d1c2b1..3387f74 100644 --- a/test/relic_server_test.dart +++ b/test/relic_server_test.dart @@ -30,35 +30,46 @@ void main() { tearDown(() => server.close()); - test('serves HTTP requests with the mounted handler', () async { - server.mountAndStart(syncHandler); - expect(await http.read(server.url), equals('Hello from /')); - }); - - test('Handles malformed requests gracefully.', () async { - server.mountAndStart(syncHandler); - final rs = await http - .get(Uri.parse('${server.url}/%D0%C2%BD%A8%CE%C4%BC%FE%BC%D0.zip')); - expect(rs.statusCode, 400); - expect(rs.body, 'Bad Request'); - }); + group('Given a server', () { + test( + 'when a valid HTTP request is made ' + 'then it serves the request using the mounted handler', () async { + server.mountAndStart(syncHandler); + final response = await http.read(server.url); + expect(response, equals('Hello from /')); + }); - test('delays HTTP requests until a handler is mounted', () async { - expect(http.read(server.url), completion(equals('Hello from /'))); - await Future.delayed(Duration.zero); + test( + 'when a malformed HTTP request is made ' + 'then it returns a 400 Bad Request response', () async { + server.mountAndStart(syncHandler); + final rs = await http + .get(Uri.parse('${server.url}/%D0%C2%BD%A8%CE%C4%BC%FE%BC%D0.zip')); + expect(rs.statusCode, 400); + expect(rs.body, 'Bad Request'); + }); - server.mountAndStart(asyncHandler); - }); + test( + 'when no handler is mounted initially ' + 'then it delays requests until a handler is mounted', () async { + final delayedResponse = http.read(server.url); + await Future.delayed(Duration.zero); + server.mountAndStart(asyncHandler); + expect(delayedResponse, completion(equals('Hello from /'))); + }); - test('disallows more than one handler from being mounted', () async { - server.mountAndStart((_) => throw UnimplementedError()); - expect( - () => server.mountAndStart((_) => throw UnimplementedError()), - throwsStateError, - ); - expect( - () => server.mountAndStart((_) => throw UnimplementedError()), - throwsStateError, - ); + test( + 'when a handler is already mounted ' + 'then mounting another handler throws a StateError', () async { + server.mountAndStart((_) => throw UnimplementedError()); + expect( + () => server.mountAndStart((_) => throw UnimplementedError()), + throwsStateError, + ); + expect( + () => server.mountAndStart((_) => throw UnimplementedError()), + throwsStateError, + ); + }); }); }