76 lines
2 KiB
Markdown
76 lines
2 KiB
Markdown
# mattermost_push_plugin_example
|
|
|
|
Thin Flutter app for exercising `mattermost_push_plugin` independently from any
|
|
real consuming product app.
|
|
|
|
## Purpose
|
|
|
|
This app is the repository's integration test harness. Keep it small and focused
|
|
on proving the plugin contract:
|
|
|
|
- plugin registration in a real Flutter application
|
|
- method-channel calls from Dart to the native plugin
|
|
- event-channel delivery from native code to Dart
|
|
- notification-open routing callbacks
|
|
- Android manifest merge behavior
|
|
- manual Firebase FCM and Mattermost ACK smoke testing
|
|
|
|
Product-specific UI, authentication flows, and navigation should stay in
|
|
consuming apps. This app should only include the minimum surface needed to prove
|
|
that the plugin works in isolation.
|
|
|
|
## Structure
|
|
|
|
```text
|
|
example/
|
|
lib/ # Small harness UI
|
|
test/ # Widget tests for the harness
|
|
integration_test/ # Device/emulator plugin integration tests
|
|
android/ # Android app used to host the plugin
|
|
ios/ # iOS host scaffold
|
|
macos/ # macOS host scaffold
|
|
```
|
|
|
|
## Running The App
|
|
|
|
Install dependencies:
|
|
|
|
```sh
|
|
flutter pub get
|
|
```
|
|
|
|
Run on a connected device or emulator:
|
|
|
|
```sh
|
|
flutter run
|
|
```
|
|
|
|
For Android FCM smoke testing, make sure the Android app has the required
|
|
Firebase configuration, including `android/app/google-services.json`.
|
|
|
|
## Verification
|
|
|
|
Run checks from this directory:
|
|
|
|
```sh
|
|
flutter analyze
|
|
flutter test
|
|
flutter test integration_test
|
|
```
|
|
|
|
Run Android native unit tests from `example/android`:
|
|
|
|
```sh
|
|
./gradlew testDebugUnitTest
|
|
```
|
|
|
|
Android Gradle tests require a configured Android SDK through `ANDROID_HOME` or
|
|
`example/android/local.properties`.
|
|
|
|
## Maintenance Rules
|
|
|
|
- Keep the app thin.
|
|
- Prefer deterministic test controls over product-like UI.
|
|
- Do not add consuming-app business logic here.
|
|
- Add integration tests here when a plugin behavior needs a real Flutter host.
|
|
- Keep manual FCM and Mattermost server checks documented in the root README.
|