mattermost-push-plugin/example/README.md

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.