anchor.diff:    group("ProjectGroupDialog", () {
       const title = 'title';
       const buttonText = 'testText';
  +    const loadingText = 'loading...';
  +    const backgroundColor = Colors.red;
  +    const contentBorderColor = Colors.yellow;
  +    const titleTextStyle = TextStyle(
  +      color: Colors.grey,
  +    );
  +    const counterTextStyle = TextStyle(
  +      color: Colors.blue,
  +    );
  +
  +    final projectGroupDialogViewModel = ProjectGroupDialogViewModel(
  +      id: "id",
  +      name: "name",
  +      selectedProjectIds: UnmodifiableListView<String>([]),
  +    );
  +
  +    const theme = MetricsThemeData(
  +      projectGroupDialogTheme: ProjectGroupDialogThemeData(
  +        backgroundColor: backgroundColor,
  +        contentBorderColor: contentBorderColor,
  +        titleTextStyle: titleTextStyle,
  +        counterTextStyle: counterTextStyle,
  +      ),
  +    );
  +
  +    final strategy = ProjectGroupDialogStrategyMock();
  +    ProjectGroupsNotifier projectGroupsNotifier;
  +
  +    setUp(() {
  +      when(strategy.title).thenReturn(title);
  +      when(strategy.text).thenReturn(buttonText);
  +      when(strategy.loadingText).thenReturn(loadingText);
  +
  +      projectGroupsNotifier = ProjectGroupsNotifierMock();
  +
  +      when(projectGroupsNotifier.projectGroupDialogViewModel)
  +          .thenReturn(projectGroupDialogViewModel);
  +    });
  +
  +    tearDown(() {
  +      reset(strategy);
  +      reset(projectGroupsNotifier);
  +    });
  +
  +    testWidgets(
  +      "throws an AssertionError if the given strategy is null",
  +      (WidgetTester tester) async {
  +        await mockNetworkImagesFor(() {
  +          return tester.pumpWidget(const _ProjectGroupDialogTestbed(
  +            strategy: null,
  +          ));
  +        });
  +
  +        expect(tester.takeException(), isAssertionError);
  +      },
  +    );
   
       testWidgets(
         "applies a hand cursor to the project group dialog action button",
         (WidgetTester tester) async {
  -        final projectGroup = ProjectGroupDialogViewModel(
  -          id: 'id',
  -          name: 'name',
  -          selectedProjectIds: UnmodifiableListView([]),
  -        );
  -        final notifierMock = ProjectGroupsNotifierMock();
  -        final strategyMock = ProjectGroupDialogStrategyMock();
  -
  -        when(notifierMock.projectGroupDialogViewModel).thenReturn(projectGroup);
  -        when(strategyMock.title).thenReturn(title);
  -        when(strategyMock.text).thenReturn(buttonText);
  -
  -        await mockNetworkImagesFor(() {
  -          return tester.pumpWidget(_ProjectGroupDialogTestbed(
  -            projectGroupsNotifier: notifierMock,
  -            strategy: strategyMock,
  +        await mockNetworkImagesFor(() {
  +          return tester.pumpWidget(_ProjectGroupDialogTestbed(
  +            projectGroupsNotifier: projectGroupsNotifier,
  +            strategy: strategy,
             ));
           });
   
  
positive.code: import 'package:collection/collection.dart';
  import 'package:flutter/material.dart';
  import 'package:flutter_test/flutter_test.dart';
  import 'package:metrics/base/presentation/widgets/hand_cursor.dart';
  import 'package:metrics/project_groups/presentation/state/project_groups_notifier.dart';
  import 'package:metrics/project_groups/presentation/view_models/project_group_dialog_view_model.dart';
  import 'package:metrics/project_groups/presentation/widgets/project_group_dialog.dart';
  import 'package:metrics/project_groups/presentation/widgets/strategy/project_group_dialog_strategy.dart';
  import 'package:mockito/mockito.dart';
  
negative.code:   /// A [ProjectGroupsNotifier] that will be injected and used in tests.
    final ProjectGroupsNotifier projectGroupsNotifier;
  
    /// A [ProjectGroupDialogStrategy] strategy applied to the [ProjectGroupDialog].
    final ProjectGroupDialogStrategy strategy;
  
    /// A [MetricsThemeData] used in tests.
    final MetricsThemeData theme;
  
    /// Creates a new instance of the [_ProjectGroupDialogTestbed]
    /// with the given [strategy], [projectGroupsNotifier] and [theme].
    ///
    /// The [theme] defaults to an empty [MetricsThemeData].
    const _ProjectGroupDialogTestbed({
      Key key,
      this.strategy,
      this.projectGroupsNotifier,
      this.theme = const MetricsThemeData(),
    }) : super(key: key);
  
    @override
  