From 167fdb6f8d0452ac62e8e2c2016ae2a60bc7a157 Mon Sep 17 00:00:00 2001 From: Andreu Date: Wed, 4 Jun 2025 08:41:47 +0200 Subject: [PATCH] fix(problems): handle no data --- .../lib/src/cima_repository.dart | 33 ++++++++++--------- .../test/src/cima_repository_test.dart | 9 +++++ 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/packages/cima_repository/lib/src/cima_repository.dart b/packages/cima_repository/lib/src/cima_repository.dart index 3e58715..a13e25c 100644 --- a/packages/cima_repository/lib/src/cima_repository.dart +++ b/packages/cima_repository/lib/src/cima_repository.dart @@ -131,22 +131,25 @@ class CimaRepository { params: params, ); log('statusCode: ${response.statusCode}'); - if (response.statusCode != 200) { - return Left(ServerFailure()); - } - - try { - final cimaPaginado = CimaPaginado.fromJson(jsonDecode(response.body)); - if (cimaPaginado.resultados?.isEmpty ?? true) { - return Right([]); + if (response.statusCode == 200) { + try { + final cimaPaginado = + CimaPaginado.fromJson(jsonDecode(response.body)); + if (cimaPaginado.resultados?.isEmpty ?? true) { + return Right([]); + } + final problemasSuministro = cimaPaginado.resultados! + .map((e) => SupplyProblems.fromJson(e)) + .toList(); + return Right(problemasSuministro); + } catch (e) { + log('error: $e'); + return Left(FormatFailure()); } - final problemasSuministro = cimaPaginado.resultados! - .map((e) => SupplyProblems.fromJson(e)) - .toList(); - return Right(problemasSuministro); - } catch (e) { - log('error: $e'); - return Left(FormatFailure()); + } else if (response.statusCode == 204) { + return Left(NoDataFailure()); + } else { + return Left(ServerFailure()); } } catch (e) { return Left(ServerFailure()); diff --git a/packages/cima_repository/test/src/cima_repository_test.dart b/packages/cima_repository/test/src/cima_repository_test.dart index 6f58505..5d50606 100644 --- a/packages/cima_repository/test/src/cima_repository_test.dart +++ b/packages/cima_repository/test/src/cima_repository_test.dart @@ -150,6 +150,15 @@ void main() { expect(result.fold((_) => null, (r) => r), problemasSuministro); }); + test('find problemas suministro without data', () async { + when(() => apiClient.getProblemasSuministro(params: {})) + .thenAnswer((_) async => Response('', 204)); + + final repository = CimaRepository(remoteDataSource: apiClient); + final result = await repository.findProblemasSuministro(params: {}); + expect(result, Left(NoDataFailure())); + }); + test('find with params', () async { final params = {'nombre': 'aspirina'}; final problemasSuministroRaw =