从无法访问的项目中派生。
issue_creation_page_test.dart 9.21 KiB
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:jihu_gitlab_app/core/local_storage.dart';
import 'package:jihu_gitlab_app/core/net/http_client.dart';
import 'package:jihu_gitlab_app/core/net/response.dart';
import 'package:jihu_gitlab_app/core/routers.dart';
import 'package:jihu_gitlab_app/core/token_provider.dart';
import 'package:jihu_gitlab_app/core/user_provider.dart';
import 'package:jihu_gitlab_app/core/widgets/markdown_input_box.dart';
import 'package:jihu_gitlab_app/core/widgets/unauthorized_view.dart';
import 'package:jihu_gitlab_app/generated/current_locale.dart';
import 'package:jihu_gitlab_app/generated/l10n.dart';
import 'package:jihu_gitlab_app/modules/issues/issue_creation_page.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../../core/net/http_request_test.mocks.dart';
import '../../mocker/tester.dart';
import '../../test_data/members.dart';
import 'issue_creation_page_test.mocks.dart';
final client = MockHttpClient();
@GenerateNiceMocks([MockSpec<NavigatorObserver>()])
void main() {
setUp(() async {
SharedPreferences.setMockInitialValues(<String, Object>{});
await LocalStorage.init();
await TokenProvider().restore();
await UserProvider().restore();
S.load(CurrentLocale().value);
});
testWidgets('Should view create issue page when there is no auth', (WidgetTester tester) async {
await tester.pumpWidget(MultiProvider(
providers: [ChangeNotifierProvider(create: (context) => TokenProvider()), ChangeNotifierProvider(create: (context) => UserProvider())],
child: const MaterialApp(
home: Scaffold(
body: IssueCreationPage(projectId: 10000, from: 'group', groupId: 0),
),
),
));
await tester.pumpAndSettle();
expect(find.byType(UnauthorizedView), findsOneWidget);
});
testWidgets('Should create an issue', (WidgetTester tester) async {
TokenProvider().reset(Tester.token());
UserProvider().reset(Tester.user());
when(client.get("/api/v4/groups/0/iterations")).thenAnswer((realInvocation) => Future(() => Response.of([])));
HttpClient.setInstance(client);
await tester.pumpWidget(MultiProvider(
providers: [ChangeNotifierProvider(create: (context) => TokenProvider()), ChangeNotifierProvider(create: (context) => UserProvider())],
child: const MaterialApp(
home: Scaffold(
body: IssueCreationPage(
projectId: 10000,
from: 'group',
groupId: 0,
),
),
),
));
await tester.pumpAndSettle();
expect(find.text('Create'), findsOneWidget);
expect(find.text('Title (required)'), findsOneWidget);
expect(find.text('Write a issue title'), findsOneWidget);
expect(find.byType(MarkdownInputBox), findsOneWidget);