Skip to content

Commit

Permalink
test(FilterChip): Add widget tests
Browse files Browse the repository at this point in the history
  • Loading branch information
tmaegel committed Mar 20, 2024
1 parent 164672d commit cc41e99
Show file tree
Hide file tree
Showing 4 changed files with 573 additions and 42 deletions.
56 changes: 32 additions & 24 deletions lib/common_widgets/app_bar.dart
@@ -1,8 +1,11 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:ntodotxt/constants/app.dart';
import 'package:ntodotxt/misc.dart' show CustomScrollBehavior;
import 'package:ntodotxt/presentation/drawer/widgets/drawer.dart';
import 'package:ntodotxt/presentation/filter/widgets/filter_chip.dart';
import 'package:ntodotxt/presentation/todo/states/todo_list_bloc.dart';
import 'package:ntodotxt/presentation/todo/states/todo_list_state.dart';

class MainAppBar extends StatelessWidget implements PreferredSizeWidget {
final String title;
Expand Down Expand Up @@ -71,31 +74,36 @@ class AppBarFilterList extends StatelessWidget {
@override
Widget build(BuildContext context) {
final ScrollController controller = ScrollController();
return ScrollConfiguration(
behavior: CustomScrollBehavior(),
child: SingleChildScrollView(
controller: controller,
scrollDirection: Axis.horizontal,
child: const Padding(
padding: EdgeInsets.symmetric(horizontal: 16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
FilterOrderChip(),
SizedBox(width: 4),
FilterFilterChip(),
SizedBox(width: 4),
FilterGroupChip(),
SizedBox(width: 4),
FilterPrioritiesChip(),
SizedBox(width: 4),
FilterProjectsChip(),
SizedBox(width: 4),
FilterContextsChip(),
],

return BlocBuilder<TodoListBloc, TodoListState>(
builder: (BuildContext context, TodoListState todoListState) {
return ScrollConfiguration(
behavior: CustomScrollBehavior(),
child: SingleChildScrollView(
controller: controller,
scrollDirection: Axis.horizontal,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const FilterOrderChip(),
const SizedBox(width: 4),
const FilterFilterChip(),
const SizedBox(width: 4),
const FilterGroupChip(),
const SizedBox(width: 4),
const FilterPrioritiesChip(),
const SizedBox(width: 4),
FilterProjectsChip(availableTags: todoListState.projects),
const SizedBox(width: 4),
FilterContextsChip(availableTags: todoListState.contexts),
],
),
),
),
),
),
);
},
);
}
}
26 changes: 13 additions & 13 deletions lib/common_widgets/tag_dialog.dart
Expand Up @@ -147,8 +147,20 @@ class TagDialogState<T extends TagDialog> extends State<T> {
),
),
if (widget.addTags) const Divider(),
tags.isNotEmpty
tags.isEmpty
? Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16.0,
vertical: 8.0,
),
child: ListTile(
contentPadding: const EdgeInsets.symmetric(
horizontal: 8.0,
),
title: Text('No ${widget.tagName} tags available.'),
),
)
: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16.0, vertical: 8.0),
child: ListTile(
Expand All @@ -169,18 +181,6 @@ class TagDialogState<T extends TagDialog> extends State<T> {
],
),
),
)
: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16.0,
vertical: 8.0,
),
child: ListTile(
contentPadding: const EdgeInsets.symmetric(
horizontal: 8.0,
),
title: Text('No ${widget.tagName} tags available.'),
),
),
],
),
Expand Down
19 changes: 14 additions & 5 deletions lib/presentation/filter/widgets/filter_chip.dart
Expand Up @@ -12,7 +12,6 @@ import 'package:ntodotxt/domain/filter/filter_model.dart'
import 'package:ntodotxt/domain/todo/todo_model.dart' show Priority;
import 'package:ntodotxt/presentation/filter/states/filter_cubit.dart';
import 'package:ntodotxt/presentation/filter/states/filter_state.dart';
import 'package:ntodotxt/presentation/todo/states/todo_list_bloc.dart';

class FilterOrderChip extends StatelessWidget {
const FilterOrderChip({super.key});
Expand Down Expand Up @@ -140,7 +139,12 @@ class FilterPrioritiesChip extends StatelessWidget {
}

class FilterProjectsChip extends StatelessWidget {
const FilterProjectsChip({super.key});
final Set<String> availableTags;

const FilterProjectsChip({
this.availableTags = const {},
super.key,
});

@override
Widget build(BuildContext context) {
Expand All @@ -156,7 +160,7 @@ class FilterProjectsChip extends StatelessWidget {
await FilterProjectTagDialog.dialog(
context: context,
cubit: BlocProvider.of<FilterCubit>(context),
availableTags: context.read<TodoListBloc>().state.projects,
availableTags: {...availableTags, ...state.filter.projects},
);
},
);
Expand All @@ -166,7 +170,12 @@ class FilterProjectsChip extends StatelessWidget {
}

class FilterContextsChip extends StatelessWidget {
const FilterContextsChip({super.key});
final Set<String> availableTags;

const FilterContextsChip({
this.availableTags = const {},
super.key,
});

@override
Widget build(BuildContext context) {
Expand All @@ -181,7 +190,7 @@ class FilterContextsChip extends StatelessWidget {
await FilterContextTagDialog.dialog(
context: context,
cubit: BlocProvider.of<FilterCubit>(context),
availableTags: context.read<TodoListBloc>().state.contexts,
availableTags: {...availableTags, ...state.filter.contexts},
);
},
);
Expand Down

0 comments on commit cc41e99

Please sign in to comment.