Skip to content

Commit 6ac8de0

Browse files
committed
feat: github workflow action and testing
Signed-off-by: phanatagama <phanatagama@gmail.com>
1 parent 9129910 commit 6ac8de0

74 files changed

Lines changed: 5053 additions & 1037 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/flutter-ci.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: Flutter CI
2+
3+
# This workflow is triggered on pushes to the repository.
4+
5+
on:
6+
push:
7+
branches:
8+
- main
9+
10+
# on: push # Default will running for every branch.
11+
12+
jobs:
13+
build:
14+
# This job will run on ubuntu virtual machine
15+
runs-on: ubuntu-latest
16+
steps:
17+
18+
# Setup Java environment in order to build the Android app.
19+
- uses: actions/checkout@v2
20+
- uses: actions/setup-java@v2
21+
with:
22+
distribution: 'zulu'
23+
java-version: '8.0.302'
24+
25+
# Setup the flutter environment.
26+
- uses: subosito/flutter-action@v1.5.3
27+
with:
28+
channel: 'stable' # 'dev', 'alpha', default to: 'stable'
29+
flutter-version: '2.2.3' # you can also specify exact version of flutter
30+
31+
# Get flutter dependencies.
32+
- run: flutter pub get
33+
- run: flutter packages get
34+
35+
# Check for any formatting issues in the code.
36+
- run: flutter format . --set-exit-if-changed .
37+
38+
# Statically analyze the Dart code for any errors.
39+
- run: flutter analyze .
40+
41+
# Run widget tests for our flutter project.
42+
- run: flutter test core movies tv
43+
44+
# Build apk.
45+
- run: flutter build apk
46+
47+
# Upload generated apk to the artifacts.
48+
- uses: actions/upload-artifact@v2
49+
with:
50+
name: release-apk
51+
path: build/app/outputs/apk/release/app-release.apk

README.md

Lines changed: 98 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,98 @@
1-
# a199-flutter-expert-project
1+
![example workflow](https://github.com/phanatagama/Ditonton/actions/workflows/flutter-ci.yml/badge.svg)
2+
![Ditonton](https://socialify.git.ci/phanatagama/Ditonton/image?description=1&descriptionEditable=Build%20with%20Dart%20Programming%20Language%20%26%20Flutter%20Framework&font=Raleway&forks=1&issues=1&language=1&name=1&pattern=Circuit%20Board&pulls=1&stargazers=1&theme=Dark)
3+
<p align="center">
4+
<img src="https://img.shields.io/badge/dart-%230175C2.svg?style=for-the-badge&logo=dart&logoColor=white" />
5+
<img src="https://img.shields.io/badge/Flutter-%2302569B.svg?style=for-the-badge&logo=Flutter&logoColor=white" />
6+
<img src="https://img.shields.io/badge/firebase-%23039BE5.svg?style=for-the-badge&logo=firebase" />
7+
<img src="https://img.shields.io/badge/git-%23F05033.svg?style=for-the-badge&logo=git&logoColor=white" />
8+
<img src="https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white" />
9+
<img src="https://img.shields.io/badge/Android%20Studio-3DDC84.svg?style=for-the-badge&logo=android-studio&logoColor=white" />
10+
</p>
11+
<p align="center">
12+
Ditonton adalah aplikasi yang menampilkan informasi film serta serial tv
13+
<br />
14+
<a href="https://github.com/phanatagama/Ditonton/releases/download/v.1.0.0-beta/app-release.apk">Download App</a>
15+
·
16+
<a href="https://github.com/phanatagama/Ditonton/issues/new">Report Bug</a>
17+
·
18+
<a href="https://github.com/phanatagama/Ditonton/issues/new">Request Features</a>
19+
</p>
20+
21+
## 💡 Background
22+
Dalam rangka menyelesaikan submission Menjadi Flutter Developer Expert, Project ini dibangun dengan mengikuti clean architecture
23+
dan menyesuaikan kriteria kelulusan kelas Dicoding.
24+
25+
## ♻️ Project Goals
26+
Aplikasi ini dibuat dengan tujuan menyelesaikan submission @dicoding kelas Menjadi Flutter Developer Expert
27+
28+
## 🤯 Challenges we faced
29+
Selama melakukan pengembangan diharuskan melakukan migrasi state management provider menjadi BloC/Cubit dan membuat beberapa testing, memastikan kode yang ditulis mengikuti konvensi yang tersedia dan menerapkan keamanan berupa SSL Pinning.
30+
31+
## 🧐 How we built our project
32+
Ditonton adalah aplikasi mobile yang menggunakan Flutter sebagai framework. Data yang ditampilkan diambil melalui 'api.themovidb.org/3' kemudian menggunakan sqflite sebagai penyimpanan lokal.
33+
34+
## 🛠️ Tech Stack Used
35+
| Dart | Flutter |Firebase | Android Studio |
36+
|------------|-------------|-------------|-------------|
37+
| <img src="https://avatars.githubusercontent.com/u/1609975?s=280&v=4" width="150"> | <img src="https://res.cloudinary.com/startup-grind/image/upload/c_fill,dpr_2.0,f_auto,g_center,h_500,q_auto:good,w_500/v1/gcs/platform-data-dsc/events/1_ilC2Aqp5sZd1wi0CopD1Hw_zT8WoJh.png" width="150"> | <img src="https://www.gstatic.com/devrel-devsite/prod/v84e6f6a61298bbae5bb110c196e834c7f21fe3fb34e722925433ddb936d280c9/firebase/images/touchicon-180.png" width="150"> | <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Android_Studio_Icon_%282014-2019%29.svg/1200px-Android_Studio_Icon_%282014-2019%29.svg.png" width="150"> |
38+
39+
Project ini telah terintegrasi dengan Firebase Analytics dan Firebase Crashlytics
40+
<!-- ### Extra Library -->
41+
<!-- - [GoogleFonts](https://pub.dev/packages/google_fonts) for Material-Design style -->
42+
43+
44+
<!-- ## 🔧 The problems and how we deal with it -->
45+
<!-- Tentu saja keterbatasan waktu adalah sebuah masalah bagi kami. Beberapa perencanaan harus kami tunda/hilangkan untuk mempersingkat waktu seperti pembangunan [REST API](https://github.com/MochArisandiJayanto/Flarax/blob/master/API_Design_Architecture.md) yang harus terhenti. Kami memutuskan untuk melakukan query secara langsung dengan database Firebase menggunakan future dan stream. -->
46+
47+
## 🧑‍🎓 What we learned
48+
Membangun project dengan modular adalah hal baru bagi saya, di beberapa bagian saya perlu menuliskan testing terlebih dahulu seperti teori TDD. Penerapan SSL Pinning pada project flutter hingga integrasi project dengan firebase analytics & crashlytics menjadi pembelajaran yang cukup menyenangkan.
49+
50+
## 🐾 Conventional Commit
51+
‎Dalam proyek ini, saya berusaha untuk mengikuti [konvensi commit](https://www.conventionalcommits.org/en/v1.0.0/) sehingga pesan commit lebih bersih dan lebih mudah dibaca. Saya pikir itu luar biasa dan memudahkan saya secara praktis untuk dapat mundur ke setiap penyebaran commit.
52+
53+
<!-- ## 📘 Resource‎ -->
54+
<!-- ### Image Assets -->
55+
<!-- - [Undraw](http://undraw.co) -->
56+
<!-- - [Unsplash](http://unsplash.com) -->
57+
58+
<!-- ### Related Article -->
59+
<!-- - [Barang Menumpuk Tak Terpakai? Akali Dengan 5 Trik Ini | Orami](https://www.orami.co.id/magazine/barang-menumpuk-tak-terpakai-akali-dengan-5-trik-ini/) -->
60+
<!-- - [Bagaimana cara membuang barang bekas berukuran besar, misal kasur, kulkas, mesin cuci? Kemana perabot/barang bekasmu saat kamu membeli perabot baru? - Quora](https://id.quora.com/Bagaimana-cara-membuang-barang-bekas-berukuran-besar-misal-kasur-kulkas-mesin-cuci-Kemana-perabot-barang-bekasmu-saat-kamu-membeli-perabot-baru) -->
61+
<!-- - [Bagaimana caramu membuang barang-barang yang sudah tidak terpakai lagi (misalnya pakaian bekas yang sudah tidak layak pakai)? - Quora](https://id.quora.com/Bagaimana-caramu-membuang-barang-barang-yang-sudah-tidak-terpakai-lagi-misalnya-pakaian-bekas-yang-sudah-tidak-layak-pakai) -->
62+
<!-- - [Bagaimana cara membuang sampah ukuran besar seperti kasur dan lemari secara legal? - Quora](https://bit.ly/3eoe6rK) -->
63+
<!-- - [Cara Mendapatkan Barang Gratis Dari Internet - Blog Orang IT (helmykediri.com)](https://bit.ly/3FuCeVn) -->
64+
<!-- - [Barang Gratis Bisa Kamu Dapatkan di 6 Situs Ini Lho! (lifepal.co.id)](https://lifepal.co.id/media/doyan-berburu-barang-gratisan-cek-6-situs-nih/) -->
65+
66+
<!-- ## 👁️ Preview/Screenshots -->
67+
68+
<!-- - More Application Design in [Figma](https://www.figma.com/file/eISf5jqPckik2Js0NIm7TX/Flarax-App-Prototype?node-id=0%3A1) -->
69+
70+
<!-- | ![landing-page](https://user-images.githubusercontent.com/48324618/145372808-ae5dc7a8-f310-4643-84ed-b678a8aeeff1.jpg) **Landing Page** | ![login-page](https://user-images.githubusercontent.com/48324618/145372649-d459f07a-ba18-4cd0-aee1-fe91524abce5.jpg) **Login Page** | ![register-pagge](https://user-images.githubusercontent.com/48324618/145372937-6fddfba7-4abd-40fa-aa01-c01d349ad1d8.jpg) **Register Page** | ![usr-profile](https://user-images.githubusercontent.com/48324618/145373431-ebd4e049-9558-4fd7-8e0d-80f0b83b02e3.jpg) **User Profile** | -->
71+
<!-- | :--: | :--: | :--: | :--: | -->
72+
<!-- | ![home-page](https://user-images.githubusercontent.com/48324618/145373302-0a966fd3-e787-41c7-8c18-fc1e9ed79588.jpg) **Home Page** | ![detail-product](https://user-images.githubusercontent.com/48324618/145373659-0c01acd8-f2b8-4f9f-a2b3-320117b61593.jpg) **Detail Product** | ![product-page](https://user-images.githubusercontent.com/48324618/145373555-45e28331-c41d-47f1-96a5-74cd2d6d3728.jpg) **Product Page** | ![edit-product](https://user-images.githubusercontent.com/48324618/145373915-5c340a34-9e18-44a8-b81a-cc63882a313a.jpg) **Add/Edit Product** | -->
73+
<!-- | -->
74+
75+
<!-- ## License -->
76+
<!-- This project is licensed under the GNU GPLv3. -->
77+
78+
<!-- ## Contributors ✨ -->
79+
80+
<!-- Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): -->
81+
82+
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
83+
<!-- prettier-ignore-start -->
84+
<!-- markdownlint-disable -->
85+
<!-- <table> -->
86+
<!-- <tr> -->
87+
<!-- <td align="center"><a href="https://github.com/phanatagama"><img src="https://avatars.githubusercontent.com/u/48324618?s=100?v=4" width="100px;" alt=""/><br /><sub><b>Cahyadi Setia Phanatagama</b></sub></a><br /><a href="https://github.com/MochArisandiJayanto/Flarax/commits?author=phanatagama" title="Code">💻</a> <a href="#infra-phanatagama" title="Infrastructure (Databases, Build-Tools, etc)">🚇</a></td> -->
88+
<!-- <td align="center"><a href="https://github.com/MochArisandiJayanto"><img src="https://avatars.githubusercontent.com/u/30518462?v=4?s=100" width="100px;" alt=""/><br /><sub><b>MOCH. ARISANDI JAYANTO</b></sub></a><br /><a href="https://github.com/MochArisandiJayanto/Flarax/commits?author=MochArisandiJayanto" title="Code">💻</a> <a href="#infra-mocharisandijayanto" title="Infrastructure (Build-Tools, etc)">🚇</a></td> -->
89+
<!-- <td align="center"><a href="https://github.com/mrgvnn"><img src="https://avatars.githubusercontent.com/u/81848181?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Samira Rahma Aziza</b></sub></a><br /><a href="https://github.com/MochArisandiJayanto/Flarax/commits?author=mrgvnn" title="Code">💻</a> <a href="#design-mrgvnn" title="Design">🎨</a></td> -->
90+
<!-- </tr> -->
91+
<!-- </table> -->
92+
93+
94+
<!-- markdownlint-restore -->
95+
<!-- prettier-ignore-end -->
96+
97+
<!-- ALL-CONTRIBUTORS-LIST:END -->
98+
![forthebadge](https://forthebadge.com/images/badges/built-with-love.svg)

core/test/presentation/bloc/search_bloc_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ void main() {
5252
return searchBloc;
5353
},
5454
act: (bloc) => bloc.add(OnQueryChanged(tQuery)),
55-
wait: const Duration(milliseconds: 100),
55+
wait: const Duration(milliseconds: 500),
5656
expect: () => [
5757
SearchMoviesLoading(),
5858
SearchMoviesHasData(tMovieList),
@@ -70,6 +70,7 @@ void main() {
7070
return searchBloc;
7171
},
7272
act: (bloc) => bloc.add(OnQueryChanged(tQuery)),
73+
wait: const Duration(milliseconds: 500),
7374
expect: () => [
7475
SearchMoviesLoading(),
7576
SearchMoviesError('Server Failure'),

lib/main.dart

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ class HomePage extends StatefulWidget {
138138

139139
class _HomePageState extends State<HomePage> {
140140
String _activeDrawerItem = "Movie";
141+
141142
@override
142143
Widget build(BuildContext context) {
143144
return Scaffold(
@@ -209,15 +210,7 @@ class _HomePageState extends State<HomePage> {
209210
)
210211
],
211212
),
212-
body: _buildBody(context, _activeDrawerItem) ,
213+
body: _activeDrawerItem == "Movie" ? HomeMoviePage() : HomeTVPage() ,
213214
);
214215
}
215-
Widget _buildBody(BuildContext context, String selectedDrawerItem) {
216-
if (selectedDrawerItem == "Movie") {
217-
return HomeMoviePage();
218-
} else if (selectedDrawerItem == "TVSeries") {
219-
return HomeTVPage();
220-
}
221-
return Container();
222-
}
223-
}
216+
}

0 commit comments

Comments
 (0)