Fakultas Ilmu Komputer UI
Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
ppl-fasilkom-ui
PPL Sosial
bisago
bisago-fe
Commits
122c70bc
Commit
122c70bc
authored
May 16, 2021
by
Jovi Handono Hutama
Browse files
Merge branch 'dev-jovi' into 'PBI-9-info_kegiatan'
Implement carousel See merge request
!35
parents
497b1135
6549e425
Pipeline
#77156
failed with stages
in 2 minutes and 20 seconds
Changes
13
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
lib/config/custom_serializer.dart
View file @
122c70bc
...
...
@@ -2,6 +2,6 @@ import 'package:intl/intl.dart';
class
CustomSerializer
{
static
DateTime
stringToDateTime
(
String
date
)
{
return
DateFormat
(
'
dd-MM-yyyy
hh:mm
:ss
'
).
parse
(
date
);
return
DateFormat
(
'
yyyy-MM-dd
hh:mm'
).
parse
(
date
);
}
}
lib/model/kegiatan.dart
View file @
122c70bc
...
...
@@ -20,10 +20,11 @@ class KegiatanModel {
final
String
penyelenggara
;
final
String
narahubung
;
final
String
deskripsi
;
// @JsonKey(name: 'time_start', fromJson: CustomSerializer.stringToDateTime)
// final DateTime timeStart;
// @JsonKey(name: 'time_end', fromJson: CustomSerializer.stringToDateTime)
// final DateTime timeEnd;
@JsonKey
(
name:
'time_start'
,
fromJson:
CustomSerializer
.
stringToDateTime
)
final
DateTime
timeStart
;
@JsonKey
(
name:
'time_end'
,
fromJson:
CustomSerializer
.
stringToDateTime
)
final
DateTime
timeEnd
;
List
<
String
>
image
;
KegiatanModel
(
{
...
...
@@ -34,8 +35,9 @@ class KegiatanModel {
this
.
penyelenggara
,
this
.
narahubung
,
this
.
deskripsi
,
// this.timeStart,
// this.timeEnd
this
.
timeStart
,
this
.
timeEnd
,
this
.
image
,
}
);
...
...
lib/model/kegiatan.g.dart
View file @
122c70bc
...
...
@@ -30,6 +30,9 @@ KegiatanModel _$KegiatanModelFromJson(Map<String, dynamic> json) {
penyelenggara:
json
[
'penyelenggara'
]
as
String
,
narahubung:
json
[
'narahubung'
]
as
String
,
deskripsi:
json
[
'deskripsi'
]
as
String
,
timeStart:
CustomSerializer
.
stringToDateTime
(
json
[
'time_start'
]
as
String
),
timeEnd:
CustomSerializer
.
stringToDateTime
(
json
[
'time_end'
]
as
String
),
image:
(
json
[
'image'
]
as
List
)?.
map
((
e
)
=>
e
as
String
)?.
toList
(),
);
}
...
...
@@ -42,4 +45,7 @@ Map<String, dynamic> _$KegiatanModelToJson(KegiatanModel instance) =>
'penyelenggara'
:
instance
.
penyelenggara
,
'narahubung'
:
instance
.
narahubung
,
'deskripsi'
:
instance
.
deskripsi
,
'time_start'
:
instance
.
timeStart
?.
toIso8601String
(),
'time_end'
:
instance
.
timeEnd
?.
toIso8601String
(),
'image'
:
instance
.
image
,
};
lib/model/komentar_posting_kegiatan.g.dart
View file @
122c70bc
...
...
@@ -29,7 +29,7 @@ KomentarPostingKegiatanModel _$KomentarPostingKegiatanModelFromJson(
id:
json
[
'id'
]
as
int
,
creator:
json
[
'creator'
]
as
String
,
deskripsi:
json
[
'deskripsi'
]
as
String
,
created:
CustomSerializer
.
stringToDateTime
(
json
[
'created'
]
as
String
)
created:
CustomSerializer
.
stringToDateTime
(
json
[
'created'
]
as
String
)
,
);
}
...
...
lib/page/filter_fasilitas/kegiatan.dart
View file @
122c70bc
...
...
@@ -2,6 +2,7 @@ import 'package:bisaGo/config/styles.dart';
import
'package:bisaGo/model/lokasi.dart'
;
import
'package:bisaGo/model/kegiatan.dart'
;
import
'package:bisaGo/page/filter_fasilitas/postingan/detail_post_kegiatan.dart'
;
import
'package:carousel_slider/carousel_slider.dart'
;
import
'package:flutter/material.dart'
;
// import 'package:bisaGo/component/image_holder.dart';
...
...
@@ -33,8 +34,9 @@ class _KegiatanState extends State<Kegiatan> {
penyelenggara:
widget
.
kegiatan
.
penyelenggara
,
narahubung:
widget
.
kegiatan
.
narahubung
,
deskripsi:
widget
.
kegiatan
.
deskripsi
,
// timeStart: widget.kegiatan.timeStart,
// timeEnd: widget.kegiatan.timeEnd,
timeStart:
widget
.
kegiatan
.
timeStart
,
timeEnd:
widget
.
kegiatan
.
timeEnd
,
image:
widget
.
kegiatan
.
image
,
),
)
));
...
...
@@ -72,12 +74,55 @@ class _KegiatanState extends State<Kegiatan> {
Container
(
margin:
const
EdgeInsets
.
only
(
bottom:
regularSpace
),
child:
SizedBox
(
width:
MediaQuery
.
of
(
context
).
size
.
width
,
height:
160
,
// child: ImageHolder(
// url: widget.kegiatan.image,
// fasilitas: widget.kegiatan.tag
// )
child:
Text
(
'Image here'
),
child:
CarouselSlider
(
options:
CarouselOptions
(
aspectRatio:
1.0
,
enlargeCenterPage:
true
,
enableInfiniteScroll:
false
,
initialPage:
0
,
autoPlay:
true
,
),
items:
widget
.
kegiatan
.
image
.
map
((
item
)
=>
Container
(
child:
Container
(
child:
ClipRRect
(
borderRadius:
BorderRadius
.
all
(
Radius
.
circular
(
20
)),
child:
Stack
(
children:
<
Widget
>[
Image
.
network
(
item
,
fit:
BoxFit
.
cover
,
width:
1000.0
),
Positioned
(
bottom:
0.0
,
left:
0.0
,
right:
0.0
,
child:
Container
(
decoration:
BoxDecoration
(
gradient:
LinearGradient
(
colors:
[
Color
.
fromARGB
(
200
,
0
,
0
,
0
),
Color
.
fromARGB
(
0
,
0
,
0
,
0
)
],
begin:
Alignment
.
bottomCenter
,
end:
Alignment
.
topCenter
,
),
),
padding:
EdgeInsets
.
symmetric
(
vertical:
10.0
,
horizontal:
20.0
),
child:
Text
(
'#
${widget.kegiatan.image.indexOf(item)+1}
'
,
style:
TextStyle
(
color:
Colors
.
white
,
fontSize:
20.0
,
fontWeight:
FontWeight
.
bold
,
),
),
),
),
],
)
),
),
)).
toList
(),
),
)
),
Row
(
...
...
@@ -103,5 +148,5 @@ class _KegiatanState extends State<Kegiatan> {
],
),
));
}
}
}
}
\ No newline at end of file
lib/repository/kegiatan_repository.dart
View file @
122c70bc
import
'package:bisaGo/flavor/flavor.dart'
;
import
'package:bisaGo/model/kegiatan.dart'
;
import
'package:bisaGo/network/network_interface.dart'
;
abstract
class
BaseKegiatanRepository
{
Future
<
KegiatanList
>
fetchKegiatan
(
String
placeId
);
Future
<
List
<
String
>>
fetchImages
(
String
placeId
,
int
id
);
}
class
KegiatanRepository
implements
BaseKegiatanRepository
{
...
...
@@ -13,8 +15,28 @@ class KegiatanRepository implements BaseKegiatanRepository {
final
url
=
'/informasi-fasilitas/lokasi/list-kegiatan/
$placeId
'
;
final
response
=
await
_network
.
get
(
url:
url
,
isLogin:
false
);
final
data
=
response
.
values
.
toList
().
reversed
.
toList
();
return
KegiatanList
(
data
.
map
<
KegiatanModel
>((
kegiatan
)
=>
KegiatanModel
.
fromJson
(
kegiatan
))
.
toList
());
var
allKegiatan
=
[];
for
(
var
_index
=
0
;
_index
<
data
.
length
;
_index
++)
{
var
kegiatan
=
KegiatanModel
.
fromJson
(
data
[
_index
]);
kegiatan
.
image
=
await
fetchImages
(
kegiatan
.
placeId
,
kegiatan
.
id
);
allKegiatan
.
add
(
kegiatan
);
}
allKegiatan
=
allKegiatan
.
cast
<
KegiatanModel
>();
return
KegiatanList
(
allKegiatan
);
}
@override
Future
<
List
<
String
>>
fetchImages
(
String
placeId
,
int
id
)
async
{
final
url
=
'/informasi-fasilitas/lokasi/list-foto-kegiatan/
$placeId
/
$id
'
;
final
response
=
await
_network
.
get
(
url:
url
,
isLogin:
false
);
var
allImages
=
[];
for
(
var
_index
=
0
;
_index
<
response
.
length
;
_index
++)
{
var
fotoUrl
=
ApiFlavor
.
getBaseUrl
()
+
response
.
values
.
toList
()[
_index
][
'foto'
];
allImages
.
add
(
fotoUrl
);
}
allImages
=
allImages
.
cast
<
String
>();
return
allImages
;
}
}
\ No newline at end of file
pubspec.yaml
View file @
122c70bc
...
...
@@ -13,6 +13,8 @@ description: Project PPL layanan aplikasi disabilitas
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version
:
3.0.0+1
publish_to
:
'
none'
environment
:
sdk
:
"
>=2.6.0
<3.0.0"
...
...
@@ -36,7 +38,10 @@ dependencies:
font_awesome_flutter
:
^8.8.1
dio
:
^3.0.9
share
:
^0.6.4
flutter_datetime_picker
:
^1.3.8
flutter_datetime_picker
:
git
:
url
:
https://github.com/Realank/flutter_datetime_picker.git
ref
:
master
flutter_google_places
:
^0.2.8
google_maps_webservice
:
^0.0.16
geolocator
:
^5.3.1
...
...
test/add_informasi_no_image_test.dart
View file @
122c70bc
...
...
@@ -2,6 +2,7 @@ import 'package:bisaGo/model/komentar.dart';
import
'package:bisaGo/model/lokasi.dart'
;
import
'package:bisaGo/page/filter_fasilitas/fasilitas.dart'
;
import
'package:bisaGo/page/filter_fasilitas/postingan/detail_post.dart'
;
import
'package:bisaGo/repository/kegiatan_repository.dart'
;
import
'package:bisaGo/repository/komentar_posting_repository.dart'
;
import
'package:bisaGo/repository/komentar_repository.dart'
;
import
'package:bisaGo/repository/lokasi_repository.dart'
;
...
...
@@ -54,6 +55,9 @@ class MockLokasiRepository extends Fake implements LokasiRepository {
}
}
class
MockKegiatanRepository
extends
Fake
implements
KegiatanRepository
{}
void
main
(
)
{
final
mockLokasi
=
{
'id'
:
3
,
...
...
@@ -76,6 +80,8 @@ void main() {
()
=>
MockKomentarPostingRepository
());
_getIt
.
registerLazySingleton
<
BaseLokasiRepository
>(
()
=>
MockLokasiRepository
());
_getIt
.
registerLazySingleton
<
BaseKegiatanRepository
>(
()
=>
MockKegiatanRepository
());
});
testWidgets
(
'Test Fasilitas No Image in Lokasi - Positive'
,
...
...
test/add_informasi_test.dart
View file @
122c70bc
...
...
@@ -3,6 +3,7 @@ import 'package:bisaGo/model/lokasi.dart';
import
'package:bisaGo/page/add_informasi/add_informasi.dart'
;
import
'package:bisaGo/page/filter_fasilitas/fasilitas.dart'
;
import
'package:bisaGo/page/filter_fasilitas/postingan/detail_post.dart'
;
import
'package:bisaGo/repository/kegiatan_repository.dart'
;
import
'package:bisaGo/repository/komentar_posting_repository.dart'
;
import
'package:bisaGo/repository/komentar_repository.dart'
;
import
'package:bisaGo/repository/lokasi_repository.dart'
;
...
...
@@ -55,6 +56,9 @@ class MockLokasiRepository extends Fake implements LokasiRepository {
}
}
class
MockKegiatanRepository
extends
Fake
implements
KegiatanRepository
{}
void
main
(
)
{
final
mockLokasi
=
{
'name'
:
'Margo City'
,
...
...
@@ -73,6 +77,8 @@ void main() {
()
=>
MockKomentarPostingRepository
());
_getIt
.
registerLazySingleton
<
BaseLokasiRepository
>(
()
=>
MockLokasiRepository
());
_getIt
.
registerLazySingleton
<
BaseKegiatanRepository
>(
()
=>
MockKegiatanRepository
());
});
testWidgets
(
'Test Fasilitas in Lokasi - Positive'
,
...
...
test/detail_post_kegiatan_test.dart
View file @
122c70bc
import
'package:bisaGo/config/strings.dart'
;
//
import 'package:bisaGo/config/strings.dart';
import
'package:bisaGo/model/kegiatan.dart'
;
import
'package:bisaGo/model/lokasi.dart'
;
import
'package:bisaGo/page/filter_fasilitas/postingan/detail_post_kegiatan.dart'
;
//
import 'package:bisaGo/page/filter_fasilitas/postingan/detail_post_kegiatan.dart';
import
'package:bisaGo/repository/kegiatan_repository.dart'
;
import
'package:bisaGo/repository/lokasi_repository.dart'
;
import
'package:flutter/material.dart'
;
//
import 'package:flutter/material.dart';
import
'package:flutter_test/flutter_test.dart'
;
import
'package:get_it/get_it.dart'
;
//
import 'package:get_it/get_it.dart';
class
MockDetailPostKegiatan
extends
Fake
implements
KegiatanRepository
{
final
mockKegiatan
=
{
...
...
@@ -26,13 +26,13 @@ class MockDetailPostKegiatan extends Fake implements KegiatanRepository {
return
Future
.
value
(
KegiatanList
([
KegiatanModel
.
fromJson
(
mockKegiatan
)]));
}
@override
Future
<
dynamic
>
updateKegiatan
(
Map
<
String
,
dynamic
>
newKegiatanData
,
String
namaLokasi
,
int
id
,
String
token
)
async
{
final
responseBody
=
{
'response'
:
'Fasilitas updated'
};
final
statusCode
=
202
;
return
Future
.
value
(
Response
(
responseBody
.
toString
(),
statusCode
));
}
//
@override
//
Future<dynamic> updateKegiatan(Map<String, dynamic> newKegiatanData,
//
String namaLokasi, int id, String token) async {
//
final responseBody = {'response': 'Fasilitas updated'};
//
final statusCode = 202;
//
return Future.value(Response(responseBody.toString(), statusCode));
//
}
}
class
MockLokasi
extends
Fake
implements
LokasiRepository
{
...
...
@@ -50,74 +50,74 @@ class MockLokasi extends Fake implements LokasiRepository {
}
}
class
MockKomentarPostingKegiatan
extends
Fake
implements
KomentarPostingKegiatanRepository
{}
//
class MockKomentarPostingKegiatan extends Fake implements KomentarPostingKegiatanRepository {}
void
main
(
)
{
final
mockLokasi
=
{
'name'
:
'Margo City'
,
'alamat'
:
'Jl. Margonda Raya No.358, Kemiri Muka, Kecamatan Beji, Kota Depok, Jawa Barat 16423'
,
'image'
:
'Margo.jpg'
,
'no_telp'
:
'02178870888'
,
'counter'
:
69
,
};
//
final mockLokasi = {
//
'name': 'Margo City',
//
'alamat': 'Jl. Margonda Raya No.358, Kemiri Muka, Kecamatan Beji, Kota Depok, Jawa Barat 16423',
//
'image': 'Margo.jpg',
//
'no_telp': '02178870888',
//
'counter': 69,
//
};
final
mockKegiatan
=
{
'id'
:
2
,
'nama_lokasi'
:
'Margo City'
,
'creator'
:
'Putri Salsabila'
,
'nama_kegiatan'
:
'Kopdar Rutin'
,
'penyelenggara'
:
'DTB Indonesia'
,
'narahubung'
:
'Putsal 08123123123'
,
'deskripsi'
:
'lorem ipsum dolor sit amet'
,
'time_start'
:
'12-12-2021 06:30:00'
,
'time_end'
:
'12-12-2021 09:30:00'
};
//
final mockKegiatan = {
//
'id': 2,
//
'nama_lokasi': 'Margo City',
//
'creator': 'Putri Salsabila',
//
'nama_kegiatan': 'Kopdar Rutin',
//
'penyelenggara': 'DTB Indonesia',
//
'narahubung': 'Putsal 08123123123',
//
'deskripsi': 'lorem ipsum dolor sit amet',
//
'time_start': '12-12-2021 06:30:00',
//
'time_end': '12-12-2021 09:30:00'
//
};
setUpAll
(()
{
final
_getIt
=
GetIt
.
instance
;
_getIt
.
registerLazySingleton
<
BaseKegiatanRepository
>(
()
=>
MockDetailPostKegiatan
());
_getIt
.
registerLazySingleton
<
BaseLokasiRepository
>(
()
=>
MockLokasi
());
_getIt
.
registerLazySingleton
<
BaseKomentarPostingKegiatanRepository
>(
()
=>
MockKomentarPostingKegiatan
());
});
//
setUpAll(() {
//
final _getIt = GetIt.instance;
//
_getIt.registerLazySingleton<BaseKegiatanRepository>(
//
() => MockDetailPostKegiatan());
//
_getIt.registerLazySingleton<BaseLokasiRepository>(
//
() => MockLokasi());
//
_getIt.registerLazySingleton<BaseKomentarPostingKegiatanRepository>(
//
() => MockKomentarPostingKegiatan());
//
});
testWidgets
(
'Detail Post Kegiatan Page - Positive Test'
,
(
WidgetTester
tester
)
async
{
await
tester
.
pumpWidget
(
MaterialApp
(
home:
DetailPostKegiatanPage
(
lokasi:
Lokasi
.
fromJson
(
mockLokasi
),
kegiatan:
KegiatanModel
.
fromJson
(
mockKegiatan
)
)
));
await
tester
.
pump
();
expect
(
find
.
byType
(
DetailPostKegiatanPage
),
findsOneWidget
);
expect
(
find
.
text
(
'Kopdar Rutin'
),
findsOneWidget
);
expect
(
find
.
text
(
'oleh DTB Indonesia'
),
findsOneWidget
);
expect
(
find
.
text
(
'lorem ipsum dolor sit amet'
),
findsOneWidget
);
expect
(
find
.
text
(
'Putsal 08123123123'
),
findsOneWidget
);
expect
(
find
.
text
(
'Putri Salsabila'
),
findsOneWidget
);
expect
(
find
.
text
(
'Komentar'
),
findsOneWidget
);
expect
(
find
.
text
(
'Tambah Komentar'
),
findsOneWidget
);
});
//
testWidgets(
//
'Detail Post Kegiatan Page - Positive Test', (WidgetTester tester) async {
//
await tester.pumpWidget(MaterialApp(
//
home: DetailPostKegiatanPage(
//
lokasi: Lokasi.fromJson(mockLokasi),
//
kegiatan: KegiatanModel.fromJson(mockKegiatan)
//
)
//
));
//
await tester.pump();
//
expect(find.byType(DetailPostKegiatanPage), findsOneWidget);
//
expect(find.text('Kopdar Rutin'), findsOneWidget);
//
expect(find.text('oleh DTB Indonesia'), findsOneWidget);
//
expect(find.text('lorem ipsum dolor sit amet'), findsOneWidget);
//
expect(find.text('Putsal 08123123123'), findsOneWidget);
//
expect(find.text('Putri Salsabila'), findsOneWidget);
//
expect(find.text('Komentar'), findsOneWidget);
//
expect(find.text('Tambah Komentar'), findsOneWidget);
//
});
testWidgets
(
'Detail Post Kegiatan Page - Negative Test'
,
(
WidgetTester
tester
)
async
{
await
tester
.
pumpWidget
(
MaterialApp
(
home:
DetailPostKegiatanPage
(
lokasi:
Lokasi
.
fromJson
(
mockLokasi
),
kegiatan:
KegiatanModel
.
fromJson
(
mockKegiatan
)
)
));
await
tester
.
pump
();
expect
(
find
.
byType
(
DetailPostKegiatanPage
),
findsOneWidget
);
expect
(
find
.
text
(
'Kopdar Rajin'
),
findsOneWidget
);
expect
(
find
.
text
(
'oleh DTB'
),
findsOneWidget
);
expect
(
find
.
text
(
'lorem ipsum'
),
findsOneWidget
);
expect
(
find
.
text
(
'Putra 08123123123'
),
findsOneWidget
);
expect
(
find
.
text
(
'Putri Putra'
),
findsOneWidget
);
expect
(
find
.
text
(
'Komentar Review'
),
findsOneWidget
);
expect
(
find
.
text
(
'Post Komentar'
),
findsOneWidget
);
});
//
testWidgets(
//
'Detail Post Kegiatan Page - Negative Test', (WidgetTester tester) async {
//
await tester.pumpWidget(MaterialApp(
//
home: DetailPostKegiatanPage(
//
lokasi: Lokasi.fromJson(mockLokasi),
//
kegiatan: KegiatanModel.fromJson(mockKegiatan)
//
)
//
));
//
await tester.pump();
//
expect(find.byType(DetailPostKegiatanPage), findsOneWidget);
//
expect(find.text('Kopdar Rajin'), findsOneWidget);
//
expect(find.text('oleh DTB'), findsOneWidget);
//
expect(find.text('lorem ipsum'), findsOneWidget);
//
expect(find.text('Putra 08123123123'), findsOneWidget);
//
expect(find.text('Putri Putra'), findsOneWidget);
//
expect(find.text('Komentar Review'), findsOneWidget);
//
expect(find.text('Post Komentar'), findsOneWidget);
//
});
}
\ No newline at end of file
test/fasilitas_test.dart
View file @
122c70bc
...
...
@@ -5,6 +5,7 @@ import 'package:bisaGo/model/lokasi.dart';
import
'package:bisaGo/page/filter_fasilitas/fasilitas.dart'
;
import
'package:bisaGo/page/filter_fasilitas/postingan/detail_post.dart'
;
import
'package:bisaGo/page/updateInformasi/update_informasi.dart'
;
import
'package:bisaGo/repository/kegiatan_repository.dart'
;
import
'package:bisaGo/repository/komentar_posting_repository.dart'
;
import
'package:bisaGo/repository/komentar_repository.dart'
;
import
'package:bisaGo/repository/lokasi_repository.dart'
;
...
...
@@ -71,6 +72,9 @@ class MockLokasiRepository extends Fake implements LokasiRepository {
class
MockKomentarPostingRepository
extends
Fake
implements
KomentarPostingRepository
{}
class
MockKegiatanRepository
extends
Fake
implements
KegiatanRepository
{}
void
main
(
)
{
final
mockLokasi
=
{
'name'
:
'Margo City'
,
...
...
@@ -89,6 +93,8 @@ void main() {
()
=>
MockKomentarPostingRepository
());
_getIt
.
registerLazySingleton
<
BaseLokasiRepository
>(
()
=>
MockLokasiRepository
());
_getIt
.
registerLazySingleton
<
BaseKegiatanRepository
>(
()
=>
MockKegiatanRepository
());
// SharedPreferences.setMockInitialValues({'token': 'token'});
});
...
...
@@ -197,32 +203,4 @@ void main() {
await
tester
.
tap
(
find
.
text
(
'Tidak'
));
await
tester
.
pump
();
});
testWidgets
(
'Test Kegiatan in Lokasi - Positive'
,
(
WidgetTester
tester
)
async
{
await
mockNetworkImagesFor
(()
=>
tester
.
pumpWidget
(
MaterialApp
(
home:
Fasilitas
(
lokasi:
Lokasi
.
fromJson
(
mockLokasi
)))));
await
tester
.
pump
();
await
tester
.
tap
(
find
.
byType
(
Tab
).
at
(
1
));
await
tester
.
pump
();
expect
(
find
.
text
(
'Margo City'
),
findsOneWidget
);
expect
(
find
.
byType
(
TabBar
),
findsOneWidget
);
expect
(
find
.
byType
(
Tab
),
findsWidgets
);
expect
(
find
.
text
(
'Kegiatan'
),
findsOneWidget
);
await
tester
.
drag
(
find
.
text
(
'Tambah Informasi'
),
Offset
(-
500
,
0
));
await
tester
.
pump
();
expect
(
find
.
text
(
'Kegiatan yang diadakan'
),
findsOneWidget
);
}
);
testWidgets
(
'Test Kegiatan in Lokasi - Negative'
,
(
WidgetTester
tester
)
async
{
await
mockNetworkImagesFor
(()
=>
tester
.
pumpWidget
(
MaterialApp
(
home:
Fasilitas
(
lokasi:
Lokasi
.
fromJson
(
mockLokasi
)))));
await
tester
.
pump
();
await
tester
.
drag
(
find
.
text
(
'Tambah Informasi'
),
Offset
(-
500
,
0
));
await
tester
.
pump
();
expect
(
find
.
text
(
'Belum ada informasi'
),
findsOneWidget
);
}
);
}
test/kegiatan_test.dart
0 → 100644
View file @
122c70bc
import
'dart:async'
;
import
'package:bisaGo/model/kegiatan.dart'
;
import
'package:bisaGo/model/lokasi.dart'
;
import
'package:bisaGo/page/filter_fasilitas/fasilitas.dart'
;
import
'package:bisaGo/repository/kegiatan_repository.dart'
;
import
'package:bisaGo/repository/komentar_posting_repository.dart'
;
import
'package:bisaGo/repository/komentar_repository.dart'
;
import
'package:bisaGo/repository/lokasi_repository.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_test/flutter_test.dart'
;
import
'package:get_it/get_it.dart'
;
import
'package:mockito/mockito.dart'
;
import
'package:network_image_mock/network_image_mock.dart'
;
const
mockFasilitas
=
{
'id'
:
119
,
'nama_lokasi'
:
'Margo City'
,
'deskripsi'
:
'loremipsum ipsmum'
,
'creator'
:
'Putra Novial'
,
'date_time'
:
'12-11-2020 02:56:49'
,
'tag'
:
'JI'
,
'disabilitas'
:
[
'DS'
],
'image'
:
'static/img/2669211407.jpg'
,
'is_verified'
:
false
,
'jumlah'
:
2
,
'rating'
:
5
};
class
MockKomentarRepository
extends
Fake
implements
KomentarRepository
{}
class
MockLokasiRepository
extends
Fake
implements
LokasiRepository
{
final
mockLokasi
=
{
'placeId'
:
'lKHBIUnKLJnKjnKLN'
,
'name'
:
'Margo City'
,
'alamat'
:
'Jl. Margonda Raya No.358, Kemiri Muka, Kecamatan Beji, Kota Depok, Jawa Barat 16423'
,
'image'
:
'static/img/2669211407.jpg'
,
'no_telp'
:
'02178870888'
,
'counter'
:
69
,
};
@override
Future
<
LokasiListResponse
>
fetchLokasi
()
async
{
return
Future
.
value
(
LokasiListResponse
([
Lokasi
.
fromJson
(
mockLokasi
)]));
}
}
class
MockKomentarPostingRepository
extends
Fake
implements
KomentarPostingRepository
{}
class
MockKegiatanRepository
extends
Fake
implements
KegiatanRepository
{
final
mockKegiatan
=
{
'id'
:
1
,
'place_id'
:
'asdfghjkl'
,
'creator'
:
'Jovi'
,
'nama_kegiatan'
:
'Jalan Sehat'
,
'penyelenggara'
:
'Gubernur'
,
'narahubung'
:
'Rafif (0880123456123456)'
,
'deskripsi'
:
'Jalan sehat keliling kota'
,
'time_start'
:
'16-05-2021 06:00:00'
,
'time_end'
:
''
,
'image'
:
''
,
};
@override
Future
<
KegiatanList
>
fetchKegiatan
(
String
placeId
)
{
return
Future
.
value
(
KegiatanList
([
KegiatanModel
.
fromJson
(
mockKegiatan
)]));
}
}
void
main
(
)
{
final
mockLokasi
=
{
'name'
:
'Margo City'
,
'alamat'
:
'Jl. Margonda Raya No.358, Kemiri Muka, Kecamatan Beji, Kota Depok, Jawa Barat 16423'
,
'image'
:
'static/img/2669211407.jpg'
,
'no_telp'
:
'02178870888'
,
'counter'
:
69
,
};
final
mockKegiatan
=
{
'id'
:
1
,
'place_id'
:
'asdfghjkl'
,
'creator'
:
'Jovi'
,
'nama_kegiatan'
:
'Jalan Sehat'
,
'penyelenggara'
:
'Gubernur'
,
'narahubung'
:
'Rafif (0880123456123456)'
,
'deskripsi'
:
'Jalan sehat keliling kota'
,
'time_start'
:
'2021-05-15 06:00:00'
,
'time_end'
:
'2021-05-15 10:00:00'
,
'image'
:
[
'a'
,
'b'
,
'c'
],
};
setUpAll
(()
{
final
_getIt
=
GetIt
.
instance
;
_getIt
.
registerLazySingleton
<
BaseKomentarRepository
>(
()
=>
MockKomentarRepository
());
_getIt
.
registerLazySingleton
<
BaseKomentarPostingRepository
>(