@@ -2,6 +2,7 @@ import 'package:faker/faker.dart';
22import 'package:mockito/mockito.dart' ;
33import 'package:test/test.dart' ;
44
5+ import 'package:ForDev/domain/entities/entities.dart' ;
56import 'package:ForDev/domain/helpers/helpers.dart' ;
67import 'package:ForDev/data/http/http.dart' ;
78import 'package:ForDev/data/usecases/usecases.dart' ;
@@ -13,20 +14,45 @@ void main() {
1314HttpClientSpy httpClient;
1415String url;
1516String answer;
17+ Map surveyResult;
18+
19+ Map mockValidData ()=> {
20+ 'surveyId' : faker.guid.guid (),
21+ 'question' : faker.randomGenerator.string (50 ),
22+ 'answers' : [{
23+ 'image' : faker.internet.httpUrl (),
24+ 'answer' : faker.randomGenerator.string (20 ),
25+ 'percent' : faker.randomGenerator.integer (100 ),
26+ 'count' : faker.randomGenerator.integer (1000 ),
27+ 'isCurrentAccountAnswer' : faker.randomGenerator.boolean ()
28+ }, {
29+ 'answer' : faker.randomGenerator.string (20 ),
30+ 'percent' : faker.randomGenerator.integer (100 ),
31+ 'count' : faker.randomGenerator.integer (1000 ),
32+ 'isCurrentAccountAnswer' : faker.randomGenerator.boolean ()
33+ }],
34+ 'date' : faker.date.dateTime ().toIso8601String (),
35+ };
1636
1737PostExpectation mockRequest ()=> when (httpClient.request (
1838 url: anyNamed ('url' ),
1939 method: anyNamed ('method' ),
2040 body: anyNamed ('body' )
2141 ));
2242
43+ void mockHttpData (Map data) {
44+ surveyResult= data;
45+ mockRequest ().thenAnswer ((_)async => data);
46+ }
47+
2348void mockHttpError (HttpError error)=> mockRequest ().thenThrow (error);
2449
2550setUp (() {
2651 answer= faker.lorem.sentence ();
2752 url= faker.internet.httpUrl ();
2853 httpClient= HttpClientSpy ();
2954 sut= RemoteSaveSurveyResult (url: url, httpClient: httpClient);
55+ mockHttpData (mockValidData ());
3056 });
3157
3258test ('Should call HttpClient with correct values' , ()async {
@@ -35,6 +61,28 @@ void main() {
3561verify (httpClient.request (url: url, method: 'put' , body: {'answer' : answer}));
3662 });
3763
64+ test ('Should return surveyResult on 200' , ()async {
65+ final result= await sut.save (answer: answer);
66+
67+ expect (result,SurveyResultEntity (
68+ surveyId: surveyResult['surveyId' ],
69+ question: surveyResult['question' ],
70+ answers: [
71+ SurveyAnswerEntity (
72+ image: surveyResult['answers' ][0 ]['image' ],
73+ answer: surveyResult['answers' ][0 ]['answer' ],
74+ isCurrentAnswer: surveyResult['answers' ][0 ]['isCurrentAccountAnswer' ],
75+ percent: surveyResult['answers' ][0 ]['percent' ],
76+ ),
77+ SurveyAnswerEntity (
78+ answer: surveyResult['answers' ][1 ]['answer' ],
79+ isCurrentAnswer: surveyResult['answers' ][1 ]['isCurrentAccountAnswer' ],
80+ percent: surveyResult['answers' ][1 ]['percent' ],
81+ )
82+ ]
83+ ));
84+ });
85+
3886test ('Should throw UnexpectedError if HttpClient returns 404' , ()async {
3987mockHttpError (HttpError .notFound);
4088