Files
ReelShort/test/discover/discover_logic_test.dart
T

81 lines
2.2 KiB
Dart

// Author: fruit.com.cn
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:fruitshorts/pages/discover/discover_logic.dart';
import 'package:fruitshorts/pages/discover/discover_types.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
test('should_report_query_only_for_non_whitespace_text', () {
final logic = DiscoverLogic();
expect(logic.hasSearchQuery, isFalse);
logic.search.text = ' ';
expect(logic.hasSearchQuery, isFalse);
logic.search.text = 'remote';
expect(logic.hasSearchQuery, isTrue);
logic.dispose();
});
testWidgets('should_forward_action_when_embedded_or_pop_when_standalone', (
tester,
) async {
final logic = DiscoverLogic();
final forwarded = <DiscoverPageAction>[];
final popped = Completer<DiscoverPageAction?>();
late BuildContext pageContext;
await tester.pumpWidget(
MaterialApp(
home: Builder(
builder: (context) => TextButton(
onPressed: () => Navigator.of(context)
.push<DiscoverPageAction>(
MaterialPageRoute<DiscoverPageAction>(
builder: (inner) {
pageContext = inner;
return const SizedBox.shrink();
},
),
)
.then(popped.complete),
child: const Text('open'),
),
),
),
);
await tester.tap(find.text('open'));
await tester.pumpAndSettle();
logic.act(
pageContext,
DiscoverPageAction.home,
embedded: true,
onAction: forwarded.add,
);
expect(forwarded, [DiscoverPageAction.home]);
logic.act(pageContext, DiscoverPageAction.mine, embedded: false);
await tester.pumpAndSettle();
await expectLater(popped.future, completion(DiscoverPageAction.mine));
logic.dispose();
});
test('should_do_nothing_when_notifying_after_dispose', () {
final logic = DiscoverLogic();
var notifications = 0;
logic.addListener(() => notifications++);
logic.dispose();
logic.notify();
expect(notifications, 0);
});
}