Skip to content

Commit

Permalink
crumbs tests
Browse files Browse the repository at this point in the history
  • Loading branch information
marandaneto committed Nov 23, 2022
1 parent d0ac278 commit 31efee2
Showing 1 changed file with 125 additions and 0 deletions.
125 changes: 125 additions & 0 deletions flutter/test/user_interaction/sentry_user_interaction_widget_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:sentry_flutter/sentry_flutter.dart';

import '../mocks.dart';
import '../mocks.mocks.dart';

void main() {
group('$SentryUserInteractionWidget crumbs', () {
late Fixture fixture;
setUp(() async {
fixture = Fixture();
TestWidgetsFlutterBinding.ensureInitialized();
});

testWidgets('Add crumb for MaterialButton', (tester) async {
await tester.runAsync(() async {
final sut = fixture.getSut();

await tapMe(tester, sut, 'Button 1');

fixture.hub.configureScope((scope) {
final crumb = scope.breadcrumbs.last;
expect(crumb.category, 'ui.click');
expect(crumb.data?['view.id'], 'btn_1');
expect(crumb.data?['view.class'], 'MaterialButton');
});
});
});

testWidgets('Add crumb for MaterialButton with label', (tester) async {
await tester.runAsync(() async {
final sut = fixture.getSut(sendDefaultPii: true);

await tapMe(tester, sut, 'Button 1');

fixture.hub.configureScope((scope) {
final crumb = scope.breadcrumbs.last;
expect(crumb.data?['label'], 'Button 1');
});
});
});

testWidgets('Do not add crumb', (tester) async {
await tester.runAsync(() async {
final sut = fixture.getSut(enableUserInteractionBreadcrumbs: false);

await tapMe(tester, sut, 'Button 1');

fixture.hub.configureScope((scope) {
expect(scope.breadcrumbs.isEmpty, true);
});
});
});
});
}

Future<void> tapMe(WidgetTester tester, Widget widget, String text) async {
await tester.pumpWidget(widget);

await tester.tap(find.text(text));
}

class Fixture {
final _options = SentryFlutterOptions(dsn: fakeDsn);
final _transport = MockTransport();
late Hub hub;

SentryUserInteractionWidget getSut({
bool enableUserInteractionTracing = false,
bool enableUserInteractionBreadcrumbs = true,
double? tracesSampleRate = 1.0,
bool sendDefaultPii = false,
}) {
_options.transport = _transport;
_options.tracesSampleRate = tracesSampleRate;
_options.enableUserInteractionTracing = enableUserInteractionTracing;
_options.enableUserInteractionBreadcrumbs =
enableUserInteractionBreadcrumbs;
_options.sendDefaultPii = sendDefaultPii;

hub = Hub(_options);

return SentryUserInteractionWidget(
hub: hub,
child: MyApp(),
);
}
}

class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Welcome to Flutter',
home: Scaffold(
appBar: AppBar(
title: const Text('Welcome to Flutter'),
),
body: Center(
child: Column(
children: [
MaterialButton(
key: Key('btn_1'),
onPressed: () {
// print('button pressed');
},
child: const Text('Button 1'),
),
MaterialButton(
key: Key('btn_2'),
onPressed: () {
// print('button pressed 2');
},
child: const Text('Button 2'),
),
],
),
),
),
);
}
}

0 comments on commit 31efee2

Please sign in to comment.