fix: never claim 'not in store' while the store state is unknown
A failed/unloaded store snapshot used to be indistinguishable from a known-empty store, so every missing capability was labelled 'not in store' the moment the hub or store endpoint was unreachable — a wrong claim. storeCapabilities is now nullable (null = unknown): missing caps then get the plain missing chip with an honest tooltip, no install offer and no not-in-store claim; the analyzer message says the store cannot be checked right now (EN+DE). Split and badge covered by new unit + widget tests. Signed-off-by: flemming-it <sf@flemming.it>
This commit is contained in:
parent
c4a39a3779
commit
2535c28fce
6 changed files with 131 additions and 34 deletions
|
|
@ -25,6 +25,14 @@ void main() {
|
|||
final split = splitMissingCaps(['text.extract'], {});
|
||||
expect(split.installable, isEmpty);
|
||||
expect(split.notInStore, ['text.extract']);
|
||||
expect(split.unclassified, isEmpty);
|
||||
});
|
||||
|
||||
test('null store set (state unknown) classifies nothing', () {
|
||||
final split = splitMissingCaps(['text.extract'], null);
|
||||
expect(split.installable, isEmpty);
|
||||
expect(split.notInStore, isEmpty);
|
||||
expect(split.unclassified, ['text.extract']);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -86,6 +94,29 @@ void main() {
|
|||
},
|
||||
);
|
||||
|
||||
testWidgets('unknown store state offers neither install nor claims', (
|
||||
tester,
|
||||
) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: MissingModulesBadge(
|
||||
installable: const [],
|
||||
notInStore: const [],
|
||||
unclassified: const ['text.extract'],
|
||||
strings: const FlowEditorStrings(FlowEditorLocale.en),
|
||||
onInstall: () => fail('no install offer while store unknown'),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
expect(find.text('1 module missing'), findsOneWidget);
|
||||
expect(find.text('Install'), findsNothing);
|
||||
expect(find.textContaining('not in store'), findsNothing);
|
||||
final tooltip = tester.widget<Tooltip>(find.byType(Tooltip));
|
||||
expect(tooltip.message, contains('store is not reachable'));
|
||||
});
|
||||
|
||||
testWidgets('mixed state renders both chips, install covers store caps', (
|
||||
tester,
|
||||
) async {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue