This commit is contained in:
@@ -15,34 +15,39 @@ import 'package:tm_app/view_models/ai_recommendations_view_model.dart';
|
||||
|
||||
void main() {
|
||||
group('AiRecommendationsViewModel', () {
|
||||
test('loads recommended tenders from GET /api/v1/tenders/recommend', () async {
|
||||
final prefs = await _prefs();
|
||||
final homeRepository = _FakeHomeRepository(
|
||||
prefs,
|
||||
result: Result.ok(
|
||||
RecommendedTendersResponse(
|
||||
succes: true,
|
||||
message: 'ok',
|
||||
error: null,
|
||||
data: RecommendedTendersData(
|
||||
tenders: [_sampleTender(id: 'tender-1', title: 'Bridge repair')],
|
||||
metadata: null,
|
||||
test(
|
||||
'loads recommended tenders from GET /api/v1/tenders/recommend',
|
||||
() async {
|
||||
final prefs = await _prefs();
|
||||
final homeRepository = _FakeHomeRepository(
|
||||
prefs,
|
||||
result: Result.ok(
|
||||
RecommendedTendersResponse(
|
||||
success: true,
|
||||
message: 'ok',
|
||||
error: null,
|
||||
data: RecommendedTendersData(
|
||||
tenders: [
|
||||
_sampleTender(id: 'tender-1', title: 'Bridge repair'),
|
||||
],
|
||||
metadata: null,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
final viewModel = AiRecommendationsViewModel(
|
||||
companyAiRepository: _FakeCompanyAiRepository(prefs),
|
||||
homeRepository: homeRepository,
|
||||
);
|
||||
);
|
||||
final viewModel = AiRecommendationsViewModel(
|
||||
companyAiRepository: _FakeCompanyAiRepository(prefs),
|
||||
homeRepository: homeRepository,
|
||||
);
|
||||
|
||||
await viewModel.loadRecommendations();
|
||||
await viewModel.loadRecommendations();
|
||||
|
||||
expect(viewModel.hasLoaded, isTrue);
|
||||
expect(viewModel.errorMessage, isNull);
|
||||
expect(homeRepository.recommendedTendersCalls, 1);
|
||||
expect(viewModel.recommendedTenders.single.id, 'tender-1');
|
||||
});
|
||||
expect(viewModel.hasLoaded, isTrue);
|
||||
expect(viewModel.errorMessage, isNull);
|
||||
expect(homeRepository.recommendedTendersCalls, 1);
|
||||
expect(viewModel.recommendedTenders.single.id, 'tender-1');
|
||||
},
|
||||
);
|
||||
|
||||
test('keeps failed transient loads retryable for loadIfNeeded', () async {
|
||||
final prefs = await _prefs();
|
||||
@@ -52,11 +57,13 @@ void main() {
|
||||
Result.error(Exception('network failed')),
|
||||
Result.ok(
|
||||
RecommendedTendersResponse(
|
||||
succes: true,
|
||||
success: true,
|
||||
message: 'ok',
|
||||
error: null,
|
||||
data: RecommendedTendersData(
|
||||
tenders: [_sampleTender(id: 'tender-1', title: 'Bridge repair')],
|
||||
tenders: [
|
||||
_sampleTender(id: 'tender-1', title: 'Bridge repair'),
|
||||
],
|
||||
metadata: null,
|
||||
),
|
||||
),
|
||||
@@ -128,7 +135,7 @@ class _FakeHomeRepository extends HomeRepository {
|
||||
result ??
|
||||
const Result.ok(
|
||||
RecommendedTendersResponse(
|
||||
succes: true,
|
||||
success: true,
|
||||
message: 'ok',
|
||||
error: null,
|
||||
data: RecommendedTendersData(tenders: [], metadata: null),
|
||||
|
||||
Reference in New Issue
Block a user