diff --git a/app/integration_test/drugs_test.dart b/app/integration_test/drugs_test.dart index a097bb7b..83700bc6 100644 --- a/app/integration_test/drugs_test.dart +++ b/app/integration_test/drugs_test.dart @@ -12,7 +12,7 @@ import 'fixtures/drugs/with_any_not_handled_guideline.dart'; import 'fixtures/drugs/with_multiple_any_not_handled_fallback_guidelines.dart'; import 'fixtures/drugs/with_proper_guideline.dart'; import 'fixtures/drugs/without_guidelines.dart'; -import 'fixtures/set_user_data.dart'; +import 'fixtures/set_app_data.dart'; import 'mocks/drug_cubit.dart'; void main() { @@ -25,7 +25,10 @@ void main() { UserData.instance.activeDrugNames = []; UserData.instance.labData = null; UserData.instance.genotypeResults = null; - setUserDataForGuideline(drugWithProperGuideline.guidelines.first); + setAppData( + drug: drugWithProperGuideline, + guideline: drugWithProperGuideline.guidelines.first, + ); mockDrugsCubit = MockDrugsCubit(); }); @@ -93,7 +96,6 @@ void main() { testWidgets( '$description (${index + 1}/${drug.guidelines.length})', (tester) async { - setUserDataForGuideline(guideline); await _expectDrugContent( tester, mockDrugsCubit, @@ -116,6 +118,11 @@ Future _expectDrugContent( bool expectDrugToBeActive = false, Guideline? guideline, }) async { + Guideline? relevantGuideline; + if (!expectNoGuidelines) { + relevantGuideline = guideline ?? drug.guidelines.first; + setAppData(drug: drug, guideline: relevantGuideline); + } when(() => mockDrugsCubit.state) .thenReturn(isLoading ? DrugState.loading() : DrugState.loaded()); await tester.pumpWidget( @@ -139,6 +146,7 @@ Future _expectDrugContent( ), ), ); + // Title final drugName = isInhibitor(drug.name) ? '${drug.name}*' : drug.name; expect( @@ -182,8 +190,7 @@ Future _expectDrugContent( findsOneWidget, ); } else { - final relevantGuideline = guideline ?? drug.guidelines.first; - expect(card.color, relevantGuideline.annotations.warningLevel.color); + expect(card.color, relevantGuideline!.annotations.warningLevel.color); expect( find.byTooltip(context.l10n.drugs_page_tooltip_guideline_present( relevantGuideline.externalData.first.source, diff --git a/app/integration_test/fixtures/set_user_data.dart b/app/integration_test/fixtures/set_app_data.dart similarity index 78% rename from app/integration_test/fixtures/set_user_data.dart rename to app/integration_test/fixtures/set_app_data.dart index a201ee4d..23eca97b 100644 --- a/app/integration_test/fixtures/set_user_data.dart +++ b/app/integration_test/fixtures/set_app_data.dart @@ -12,7 +12,7 @@ class _UserDataConfig { final String allelesTested = 'allelesTested does not matter for test'; } -void setGenotypeResult(GenotypeResult genotypeResult ) { +void setGenotypeResult(GenotypeResult genotypeResult) { UserData.instance.genotypeResults = UserData.instance.genotypeResults ?? {}; UserData.instance.genotypeResults![genotypeResult.key.value] = genotypeResult; } @@ -59,3 +59,18 @@ void setUserDataForGuideline(Guideline guideline) { )); } } + +void addDrugToCachedDrugs(Drug drug) { + CachedDrugs.instance.drugs = CachedDrugs.instance.drugs ?? []; + final drugIsPresent = CachedDrugs.instance.drugs!.any( + (presentDrug) => presentDrug.name == drug.name, + ); + if (drugIsPresent) return; + CachedDrugs.instance.drugs!.add(drug); +} + +void setAppData({required Drug drug, required Guideline guideline}) { + addDrugToCachedDrugs(drug); + initializeGenotypeResultKeys().values.forEach(setGenotypeResult); + setUserDataForGuideline(guideline); +} diff --git a/app/integration_test/report_test.dart b/app/integration_test/report_test.dart index a1da179d..2d34c41a 100644 --- a/app/integration_test/report_test.dart +++ b/app/integration_test/report_test.dart @@ -7,7 +7,7 @@ import 'package:provider/provider.dart'; import 'fixtures/guidelines/aripiprazole_cyp2d6_poor.dart'; import 'fixtures/guidelines/pazopanib_hlab5701_positive_ugt1a1_poor_guideline.dart'; -import 'fixtures/set_user_data.dart'; +import 'fixtures/set_app_data.dart'; void main() { final binding = IntegrationTestWidgetsFlutterBinding.ensureInitialized(); diff --git a/app/lib/common/utilities/genome_data.dart b/app/lib/common/utilities/genome_data.dart index f245a145..241a55a3 100644 --- a/app/lib/common/utilities/genome_data.dart +++ b/app/lib/common/utilities/genome_data.dart @@ -41,7 +41,8 @@ String formatLookupMapKey(String gene, String variant) { return '${gene}__$variant'; } -Map _initializeGenotypeResultKeys() { +@visibleForTesting +Map initializeGenotypeResultKeys() { final emptyGenotypeResults = {}; for (final drug in CachedDrugs.instance.drugs ?? []) { for (final guideline in drug.guidelines) { @@ -68,7 +69,7 @@ Future updateGenotypeResults() async { final skipUpdate = !shouldUpdateGenotypeResults(); if (skipUpdate) return; - final genotypeResults = _initializeGenotypeResultKeys(); + final genotypeResults = initializeGenotypeResultKeys(); // fetch lookups final response = await get(Uri.parse(cpicLookupUrl));