fix new tab assignments

This commit is contained in:
Fabian Freund
2026-05-26 13:42:16 +02:00
parent 481e991e97
commit 33fd8e65f1
3 changed files with 118 additions and 6 deletions
@@ -0,0 +1,67 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:weblibre/features/geckoview/domain/entities/tab_container_selection.dart';
import 'package:weblibre/features/geckoview/domain/repositories/tab.dart';
import 'package:weblibre/features/geckoview/features/tabs/data/models/container_data.dart';
void main() {
group('resolveAssignedContainerForTabOpen', () {
final selectedContainer = _container('selected', 'selected-context');
final siteAssignedContainer = _container('assigned', 'assigned-context');
test('prefers the site-assigned container for useSelected', () {
final resolved = resolveAssignedContainerForTabOpen(
containerSelection: const TabContainerSelection.useSelected(),
requestedContainer: selectedContainer,
siteAssignedContainer: siteAssignedContainer,
);
expect(resolved, siteAssignedContainer);
});
test(
'falls back to the requested container when no site assignment exists',
() {
final resolved = resolveAssignedContainerForTabOpen(
containerSelection: const TabContainerSelection.useSelected(),
requestedContainer: selectedContainer,
siteAssignedContainer: null,
);
expect(resolved, selectedContainer);
},
);
test('preserves an explicit specific container selection', () {
final explicitContainer = _container('explicit', 'explicit-context');
final resolved = resolveAssignedContainerForTabOpen(
containerSelection: TabContainerSelection.specific(explicitContainer),
requestedContainer: explicitContainer,
siteAssignedContainer: siteAssignedContainer,
);
expect(resolved, explicitContainer);
});
test('preserves an explicit unassigned selection', () {
final resolved = resolveAssignedContainerForTabOpen(
containerSelection: const TabContainerSelection.unassigned(),
requestedContainer: null,
siteAssignedContainer: siteAssignedContainer,
);
expect(resolved, isNull);
});
});
}
ContainerData _container(String id, String contextId) {
return ContainerData(
id: id,
name: id,
color: Colors.blue,
orderKey: id,
metadata: ContainerMetadata.withDefaults(contextualIdentity: contextId),
);
}