Skip to content

Commit 99eac56

Browse files
committed
api testing
1 parent 56aee00 commit 99eac56

10 files changed

+98
-282
lines changed

lib/http/http_client.dart

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import 'package:dio/dio.dart';
2+
3+
class ClientHttp {
4+
static final client = Dio();
5+
6+
static Future<Response> get(String path) async {
7+
return client.get(path);
8+
}
9+
}

lib/promo/data/data_sources/api_service.dart

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:flutter/foundation.dart';
2+
import 'package:test_driven_development/http/http_client.dart';
23

34
import '../../domain/entities/promo.dart';
45
import '../models/promo_model.dart';
@@ -32,14 +33,13 @@ class ApiService {
3233
}
3334

3435
Future<PromoModel?> getFavPromo() async {
35-
await Future.delayed(const Duration(seconds: 10));
36-
if (kDebugMode) {
37-
print("get Fav Promo pass");
36+
final response = await ClientHttp.get("http://example.com");
37+
if (response.statusCode == 200) {
38+
if (kDebugMode) {
39+
print("get Fav Promo pass");
40+
}
41+
return PromoModel.fromJson(response.data);
3842
}
39-
return PromoModel(
40-
eventName: "expiryEventName",
41-
poster: "expiryPromo",
42-
duration: 2,
43-
);
43+
return null;
4444
}
4545
}

pubspec.lock

+20-4
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,14 @@ packages:
177177
url: "https://pub.dev"
178178
source: hosted
179179
version: "2.3.2"
180+
dio:
181+
dependency: "direct main"
182+
description:
183+
name: dio
184+
sha256: ce75a1b40947fea0a0e16ce73337122a86762e38b982e1ccb909daa3b9bc4197
185+
url: "https://pub.dev"
186+
source: hosted
187+
version: "5.3.2"
180188
equatable:
181189
dependency: "direct main"
182190
description:
@@ -259,14 +267,14 @@ packages:
259267
url: "https://pub.dev"
260268
source: hosted
261269
version: "2.3.1"
262-
http:
270+
http_mock_adapter:
263271
dependency: "direct main"
264272
description:
265-
name: http
266-
sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
273+
name: http_mock_adapter
274+
sha256: "07e78a5b64410ff8404aee2f8889ebff08def0c752b85a3945dec2029a6e1110"
267275
url: "https://pub.dev"
268276
source: hosted
269-
version: "1.1.0"
277+
version: "0.6.0"
270278
http_multi_server:
271279
dependency: transitive
272280
description:
@@ -315,6 +323,14 @@ packages:
315323
url: "https://pub.dev"
316324
source: hosted
317325
version: "2.1.1"
326+
logger:
327+
dependency: transitive
328+
description:
329+
name: logger
330+
sha256: "66cb048220ca51cf9011da69fa581e4ee2bed4be6e82870d9e9baae75739da49"
331+
url: "https://pub.dev"
332+
source: hosted
333+
version: "2.0.1"
318334
logging:
319335
dependency: transitive
320336
description:

pubspec.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ dependencies:
3939
get: ^4.6.5
4040
mockito: ^5.4.2
4141
json_annotation: ^4.8.1
42-
http: ^1.1.0
42+
dio: ^5.3.2
43+
http_mock_adapter: ^0.6.0
4344

4445
dev_dependencies:
4546
flutter_test:

test/helpers/json_reader.dart

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
import 'dart:convert';
12
import 'dart:io';
23

3-
String readJson(String name) {
4+
Map<String, dynamic> readJson(String name) {
45
var dir = Directory.current.path;
56
if (dir.endsWith('/test')) {
67
dir = dir.replaceAll('/test', '');
78
}
8-
return File('$dir/test/helpers/dummy_data/$name').readAsStringSync();
9+
return json
10+
.decode(File('$dir/test/helpers/dummy_data/$name').readAsStringSync());
911
}

test/helpers/mock_helper.dart

-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
import 'package:http/http.dart' as http;
21
import 'package:mockito/annotations.dart';
32
import 'package:test_driven_development/promo/domain/repositories/promo_repository.dart';
43

54
@GenerateMocks(
65
[PromoRepository],
7-
customMocks: [MockSpec<http.Client>(as: #MockHttpClient)],
86
)
97
void main() {}

0 commit comments

Comments
 (0)