Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
added getters and setters
  • Loading branch information
marandaneto committed Oct 14, 2020
commit b971db2f2750e98d231f72ed2d884f2441f30194
81 changes: 68 additions & 13 deletions dart/lib/src/scope.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,32 @@ import 'sentry_options.dart';
/// Scope data to be sent with the event
class Scope {
/// How important this event is.
SeverityLevel level;
SeverityLevel _level;

SeverityLevel get level => _level;

set level(SeverityLevel level) {
_level = level;
}

/// The name of the transaction which generated this event,
/// for example, the route name: `"/users/<username>/"`.
String transaction;
String _transaction;

String get transaction => _transaction;

set transaction(String transaction) {
_transaction = transaction;
}

/// Information about the current user.
User user;
User _user;

User get user => _user;

set user(User user) {
_user = user;
}

/// Used to deduplicate events by grouping ones with the same fingerprint
/// together.
Expand All @@ -22,7 +40,14 @@ class Scope {
///
/// // A completely custom fingerprint:
/// var custom = ['foo', 'bar', 'baz'];
List<String> fingerprint;
List<String> _fingerprint;

List<String> get fingerprint =>
_fingerprint != null ? List.unmodifiable(_fingerprint) : null;

set fingerprint(List<String> fingerprint) {
_fingerprint = fingerprint;
}

/// List of breadcrumbs for this scope.
///
Expand All @@ -34,15 +59,19 @@ class Scope {
List<Breadcrumb> get breadcrumbs => List.unmodifiable(_breadcrumbs);

/// Name/value pairs that events can be searched by.
final Map<String, String> tags = {};
final Map<String, String> _tags = {};

Map<String, String> get tags => Map.unmodifiable(_tags);

/// Arbitrary name/value pairs attached to the scope.
///
/// Sentry.io docs do not talk about restrictions on the values, other than
/// they must be JSON-serializable.
final Map<String, dynamic> extra = {};
final Map<String, dynamic> _extra = {};

Map<String, dynamic> get extra => Map.unmodifiable(_extra);

// TODO: eventProcessors, Contexts, BeforeBreadcrumbCallback, Breadcrumb hint, clone
// TODO: EventProcessors, Contexts, BeforeBreadcrumbCallback, Breadcrumb Hint, clone

final SentryOptions _options;

Expand Down Expand Up @@ -74,11 +103,37 @@ class Scope {
/// Resets the Scope to its default state
void clear() {
clearBreadcrumbs();
level = null;
transaction = null;
user = null;
fingerprint = null;
tags.clear();
extra.clear();
_level = null;
_transaction = null;
_user = null;
_fingerprint = null;
_tags.clear();
_extra.clear();
}

/// Sets a tag to the Scope
void setTag(String key, String value) {
assert(key != null, "Key can't be null");
assert(value != null, "Key can't be null");

_tags[key] = value;
}

/// Removes a tag from the Scope
void removeTag(String key) {
_tags.remove(key);
}

/// Sets an extra to the Scope
void setExtra(String key, dynamic value) {
assert(key != null, "Key can't be null");
assert(value != null, "Value can't be null");

_extra[key] = value;
}

/// Removes an extra from the Scope
void removeExtra(String key) {
_extra.remove(key);
}
}
133 changes: 35 additions & 98 deletions dart/test/scope_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,15 @@ void main() {

sut.level = SeverityLevel.debug;

expect(
sut.level,
SeverityLevel.debug,
);
expect(sut.level, SeverityLevel.debug);
});

test('sets transaction', () {
final sut = fixture.getSut();

sut.transaction = 'test';

expect(
sut.transaction,
'test',
);
expect(sut.transaction, 'test');
});

test('sets $User', () {
Expand All @@ -32,10 +26,7 @@ void main() {
final user = User(id: 'test');
sut.user = user;

expect(
sut.user,
user,
);
expect(sut.user, user);
});

test('sets fingerprint', () {
Expand All @@ -44,10 +35,7 @@ void main() {
final fingerprints = ['test'];
sut.fingerprint = fingerprints;

expect(
sut.fingerprint,
fingerprints,
);
expect(sut.fingerprint, fingerprints);
});

test('adds $Breadcrumb', () {
Expand All @@ -56,10 +44,7 @@ void main() {
final breadcrumb = Breadcrumb('test log', DateTime.utc(2019));
sut.addBreadcrumb(breadcrumb);

expect(
sut.breadcrumbs.last,
breadcrumb,
);
expect(sut.breadcrumbs.last, breadcrumb);
});

test('respects max $Breadcrumb', () {
Expand All @@ -73,10 +58,7 @@ void main() {
sut.addBreadcrumb(breadcrumb2);
sut.addBreadcrumb(breadcrumb3);

expect(
sut.breadcrumbs.length,
maxBreadcrumbs,
);
expect(sut.breadcrumbs.length, maxBreadcrumbs);
});

test('rotates $Breadcrumb', () {
Expand All @@ -89,15 +71,9 @@ void main() {
sut.addBreadcrumb(breadcrumb2);
sut.addBreadcrumb(breadcrumb3);

expect(
sut.breadcrumbs.first,
breadcrumb2,
);
expect(sut.breadcrumbs.first, breadcrumb2);

expect(
sut.breadcrumbs.last,
breadcrumb3,
);
expect(sut.breadcrumbs.last, breadcrumb3);
});

test('empty $Breadcrumb list', () {
Expand All @@ -107,10 +83,7 @@ void main() {
final breadcrumb1 = Breadcrumb('test log', DateTime.utc(2019));
sut.addBreadcrumb(breadcrumb1);

expect(
sut.breadcrumbs.length,
maxBreadcrumbs,
);
expect(sut.breadcrumbs.length, maxBreadcrumbs);
});

test('clears $Breadcrumb list', () {
Expand All @@ -120,56 +93,41 @@ void main() {
sut.addBreadcrumb(breadcrumb1);
sut.clear();

expect(
sut.breadcrumbs.length,
0,
);
expect(sut.breadcrumbs.length, 0);
});

test('sets tag', () {
final sut = fixture.getSut();

sut.tags['test'] = 'test';
sut.setTag('test', 'test');

expect(
sut.tags['test'],
'test',
);
expect(sut.tags['test'], 'test');
});

test('removes tag', () {
final sut = fixture.getSut();

sut.tags['test'] = 'test';
sut.tags.remove('test');
sut.setTag('test', 'test');
sut.removeTag('test');

expect(
sut.tags['test'],
null,
);
expect(sut.tags['test'], null);
});

test('sets extra', () {
final sut = fixture.getSut();

sut.extra['test'] = 'test';
sut.setExtra('test', 'test');

expect(
sut.extra['test'],
'test',
);
expect(sut.extra['test'], 'test');
});

test('removes extra', () {
final sut = fixture.getSut();

sut.extra['test'] = 'test';
sut.extra.remove('test');
sut.setExtra('test', 'test');
sut.removeExtra('test');

expect(
sut.extra['test'],
null,
);
expect(sut.extra['test'], null);
});

test('clears $Scope', () {
Expand All @@ -187,45 +145,24 @@ void main() {
final fingerprints = ['test'];
sut.fingerprint = fingerprints;

sut.tags['test'] = 'test';
sut.extra['test'] = 'test';
sut.setTag('test', 'test');
sut.setExtra('test', 'test');

sut.clear();

expect(
sut.breadcrumbs.length,
0,
);

expect(
sut.level,
null,
);

expect(
sut.transaction,
null,
);

expect(
sut.user,
null,
);

expect(
sut.fingerprint,
null,
);

expect(
sut.tags.length,
0,
);

expect(
sut.extra.length,
0,
);
expect(sut.breadcrumbs.length, 0);

expect(sut.level, null);

expect(sut.transaction, null);

expect(sut.user, null);

expect(sut.fingerprint, null);

expect(sut.tags.length, 0);

expect(sut.extra.length, 0);
});
}

Expand Down