iclop_v1/public/download/flutter/TestCode/FullTest.dart
2022-08-17 19:44:54 +07:00

369 lines
11 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:provider/provider.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:list_followers/models/followers.dart';
import 'package:list_followers/home/home.dart';
import 'package:list_followers/home/followers.dart';
Widget MyApp(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
),
),
);
}
Followers followersList;
Widget createFollowersScreen() => ChangeNotifierProvider<Followers>(
create: (context) {
followersList = Followers();
return followersList;
},
child: MaterialApp(
home: FollowersPage(),
),
);
Widget createHomeScreen() => ChangeNotifierProvider<Followers>(
create: (context) => Followers(),
child: MaterialApp(
home: HomePages(),
),
);
void addItems() {
for (var i = 0; i < 5; i++) {
followersList.add(i);
}
}
void main() {
group('TESTING RESULT', () {
testWidgets('test_01_Find Title Aplication', (WidgetTester tester) async {
await tester.pumpWidget(MaterialApp(
title: 'List Followers',
theme: ThemeData(
primarySwatch: Colors.red,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
));
final Finder title = find.text('List Followers');
});
testWidgets('test_02_Find Title AppBar', (WidgetTester tester) async {
await tester.pumpWidget(MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Home'),
),
)));
final Finder title = find.text('Home');
});
testWidgets('test_03_find text', (tester) async{
await tester.pumpWidget(Center());
expect(find.text('Flutter Project'), findsNothing);
});
// 2 //
testWidgets('test_04_Output Text ', (WidgetTester tester) async {
// // memanggil pumpwidget pada MyApp//
// await tester.pumpWidget(firstscreen());
// // Mencari parameter textspan //
// var textSpan = find.byType(TextSpan);
// // nothing yang berarti dinamik/
// expect(textSpan, findsNothing);
});
testWidgets('test_05_Text Content ', (WidgetTester tester) async {
await tester.pumpWidget(
const DefaultTextStyle(
style: TextStyle(
fontSize: 15,
),
child: Text.rich(
TextSpan(
text: 'Flutter',style: TextStyle(fontSize: 25,color: Colors.blue),
children: <TextSpan>[
TextSpan(
text: 'Isi text 1',
style: TextStyle(fontSize: 15,color: Colors.red ),
),
TextSpan(
text: 'Isi text 2',
style: TextStyle(fontSize: 15,color: Colors.blue ),
),
],
),
textDirection: TextDirection.ltr,
),
),
);
final RichText text = tester.firstWidget(find.byType(RichText));
expect(text, isNotNull);
expect(text.text.style.fontSize, 15);
});
// 3 //
testWidgets('test_06_Output TextRich ', (WidgetTester tester) async {
// memanggil pumpwidget pada MyApp//
// await tester.pumpWidget(firstscreen());
// // Mencari parameter textRich //
// var textRich = find.byType(TextSpan);
// // nothing yang berarti dinamik/
// expect(textRich, findsNothing);
});
testWidgets('test_07_Text Content ', (WidgetTester tester) async {
await tester.pumpWidget(
const DefaultTextStyle(
style: TextStyle(
fontSize: 15,
),
child: Text.rich(
TextSpan(
text: 'Flutter',style: TextStyle(fontSize: 25,color: Colors.blue),
children: <TextSpan>[
TextSpan(
text: 'Daftar Materi Dasar Flutter',style: TextStyle(color: Colors.blue,fontWeight: FontWeight.bold,fontSize: 18)
),
TextSpan(
children: const <TextSpan>[
TextSpan(text: 'Meliputi',
style: TextStyle(color: Colors.blue,fontWeight: FontWeight.bold,fontSize: 15)
),
],
),
],
),
textDirection: TextDirection.ltr,
),
),
);
final RichText text = tester.firstWidget(find.byType(RichText));
expect(text, isNotNull);
expect(text.text.style.fontSize, 15);
});
// 4 //
testWidgets('test_08_Find Title TextStyle', (WidgetTester tester) async {
await tester.pumpWidget(MaterialApp(
title: 'List Followers',
theme: ThemeData(
primarySwatch: Colors.red,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
));
final Finder title = find.text('List Followers');
});
testWidgets('test_09_Find Title AppBar', (WidgetTester tester) async {
await tester.pumpWidget(MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Home'),
),
)));
final Finder title = find.text('Home');
});
testWidgets('test_10_TextButton Clicked', (tester) async {
await tester.pumpWidget(new MaterialApp(
title: 'Home',
theme: ThemeData(
primarySwatch: Colors.red,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: Scaffold(
appBar: AppBar(
title: const Text('Kinds of text'),
),
//Text//
body: Column(
children: <Widget> [
const SizedBox(height:80,width: 5000,),
const SizedBox(height:20),
Container(
padding: EdgeInsets.all(15),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.blueAccent),
child: FlatButton(
onPressed: () {},
child: const Text('Flutter'),
),
),
const SizedBox(height:20),
Container(
padding: EdgeInsets.all(15),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.black),
child:FlatButton(
onPressed: () {},
child: const Text('List Followers'),
),
),
],
)
),
));
await tester.pump();
});
// B1 //
testWidgets('test_11_test daftar kosong',
(tester) async {
await tester.pumpWidget(createFollowersScreen());
// verifikasi text pechloader muncul
expect(find.text('Tambahkan Dulu'), findsOneWidget);
});
testWidgets('test_12_test Uji ListView', (tester) async {
await tester.pumpWidget(createHomeScreen());
//menguji listview tampil
expect(find.byType(ListView), findsOneWidget);
});
// B2 //
testWidgets('test_13_test tampilan button',(tester) async {
await tester.pumpWidget(createFollowersScreen());
addItems();
await tester.pumpAndSettle();
expect(find.byType(ListView), findsOneWidget);
});
// B3 //
testWidgets('test_14_test IconButton', (tester) async {
await tester.pumpWidget(createHomeScreen());
// cek favorit.
expect(find.byIcon(Icons.verified), findsNothing);
// cek menambahkan icon ke favorit.
await tester.tap(find.byIcon(Icons.verified_outlined).first);
await tester.pumpAndSettle(Duration(seconds: 1));
// cek tampilan pesan.
expect(find.text('Tambah ke Followers.'), findsOneWidget);
});
// B4 //
var followers = Followers();
test('test_15_Menambah item baru', () {
var number = 10;
// menambah nomor di list
followers.add(number);
// verisikasi telah ditambahkan
expect(followers.items.contains(number), true);
});
test('test_16_Menghapus item', () {
var number = 15;
// menambah nomor di list
followers.add(number);
// ferivikasi nomor ditambahkan
expect(followers.items.contains(number), true);
// hapus nomor dari list
followers.remove(number);
// ferivikasi nomor telah di hapus
expect(followers.items.contains(number), false);
});
// - //
testWidgets('test_17_Uji ListView', (tester) async {
await tester.pumpWidget(createHomeScreen());
//menguji listview tampil
expect(find.byType(ListView), findsOneWidget);
});
testWidgets('test_18_Scrolling', (tester) async {
await tester.pumpWidget(createHomeScreen());
// cek item "0" tampil.
expect(find.text('List Item 0'), findsOneWidget);
// scrolling down.
await tester.fling(find.byType(ListView), Offset(0, -200), 3000);
await tester.pumpAndSettle();
// cek item "0" hilang.
expect(find.text('List Item 0'), findsNothing);
});
testWidgets('test_19_IconButton', (tester) async {
await tester.pumpWidget(createHomeScreen());
// cek favorit.
expect(find.byIcon(Icons.verified), findsNothing);
// cek menambahkan icon ke favorit.
await tester.tap(find.byIcon(Icons.verified_outlined).first);
await tester.pumpAndSettle(Duration(seconds: 1));
// cek tampilan pesan.
expect(find.text('Tambah ke Followers.'), findsOneWidget);
});
// - /
testWidgets('test_20_uji pechloader muncul jika daftar kosong',
(tester) async {
await tester.pumpWidget(createFollowersScreen());
// verifikasi text pechloader muncul
expect(find.text('Tambahkan Dulu'), findsOneWidget);
});
testWidgets('test_21_jika ListView muncul', (tester) async {
await tester.pumpWidget(createFollowersScreen());
addItems();
await tester.pumpAndSettle();
// Verifikasi ListView tampil.
expect(find.byType(ListView), findsOneWidget);
});
testWidgets('test_22_tampilan button',(tester) async {
await tester.pumpWidget(createFollowersScreen());
addItems();
await tester.pumpAndSettle();
expect(find.byType(ListView), findsOneWidget);
});
testWidgets('test_23_Remove Button', (tester) async {
await tester.pumpWidget(createFollowersScreen());
addItems();
await tester.pumpAndSettle();
// get jumlah total item
var totalItems = tester.widgetList(find.byIcon(Icons.close)).length;
// hapus satu item.
await tester.tap(find.byIcon(Icons.close).first);
await tester.pumpAndSettle();
// cek item dihapus
expect(tester.widgetList(find.byIcon(Icons.close)).length,
lessThan(totalItems));
// Verify if the appropriate message is shown.
expect(find.text('Hapus Followers.'), findsOneWidget);
});
});
}