blob: eb861e25673e4839b1595d212c545976282e7be0 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
import 'package:flutter/widgets.dart';
import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:firebase_analytics/observer.dart';
void main() {
group('FirebaseAnalyticsObserver', () {
FirebaseAnalytics analytics;
FirebaseAnalyticsObserver observer;
setUp(() {
analytics = new MockFirebaseAnalytics();
observer = new FirebaseAnalyticsObserver(analytics: analytics);
});
test('setCurrentScreen on route pop', () {
final PageRoute<dynamic> route = new MockPageRoute();
final PageRoute<dynamic> previousRoute = new MockPageRoute();
when(previousRoute.settings)
.thenReturn(const RouteSettings(name: 'previousRoute'));
observer.didPop(route, previousRoute);
verify(analytics.setCurrentScreen(screenName: 'previousRoute')).called(1);
});
test('setCurrentScreen on route push', () {
final PageRoute<dynamic> route = new MockPageRoute();
final PageRoute<dynamic> previousRoute = new MockPageRoute();
when(route.settings).thenReturn(const RouteSettings(name: 'route'));
observer.didPush(route, previousRoute);
verify(analytics.setCurrentScreen(screenName: 'route')).called(1);
});
test('uses nameExtractor', () {
observer = new FirebaseAnalyticsObserver(
analytics: analytics,
nameExtractor: (RouteSettings settings) => 'foo',
);
final PageRoute<dynamic> route = new MockPageRoute();
final PageRoute<dynamic> previousRoute = new MockPageRoute();
observer.didPush(route, previousRoute);
verify(analytics.setCurrentScreen(screenName: 'foo')).called(1);
});
});
}
class MockFirebaseAnalytics extends Mock implements FirebaseAnalytics {}
class MockPageRoute extends Mock implements PageRoute<dynamic> {}