Skip to content
Merged
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
test collection error crumbs
  • Loading branch information
denrase committed Jan 2, 2024
commit 3a73e59052999a0ab7343e87f87a99f64521397d
268 changes: 268 additions & 0 deletions isar/test/sentry_isar_collection_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -602,6 +602,274 @@ void main() {
verifyBreadcrumb('putByIndex', breadcrumb);
});
});

group('add error breadcrumbs', () {
late Fixture fixture;

setUp(() async {
fixture = Fixture();

when(fixture.hub.options).thenReturn(fixture.options);
when(fixture.hub.getSpan()).thenReturn(fixture.tracer);
when(fixture.hub.scope).thenReturn(fixture.scope);
when(fixture.isarCollection.name).thenReturn(Fixture.dbCollection);

await fixture.setUp();
});

tearDown(() async {
await fixture.tearDown();
});

test('throwing clear adds error breadcrumb', () async {
when(fixture.isarCollection.clear()).thenThrow(fixture.exception);
try {
await fixture.getSut(injectMock: true).clear();
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'clear',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing count adds error breadcrumb', () async {
when(fixture.isarCollection.count()).thenThrow(fixture.exception);
try {
await fixture.getSut(injectMock: true).count();
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'count',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing delete adds error breadcrumb', () async {
when(fixture.isarCollection.delete(any)).thenThrow(fixture.exception);
try {
await fixture.getSut(injectMock: true).delete(0);
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'delete',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing deleteAll adds error breadcrumb', () async {
when(fixture.isarCollection.deleteAll(any)).thenThrow(fixture.exception);
try {
await fixture.getSut(injectMock: true).deleteAll([0]);
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'deleteAll',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing deleteAllByIndex adds error breadcrumb', () async {
when(fixture.isarCollection.deleteAllByIndex(any, any))
.thenThrow(fixture.exception);
try {
await fixture.getSut(injectMock: true).deleteAllByIndex('name', []);
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'deleteAllByIndex',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing deleteByIndex adds error breadcrumb', () async {
when(fixture.isarCollection.deleteByIndex(any, any))
.thenThrow(fixture.exception);
try {
await fixture.getSut(injectMock: true).deleteByIndex('name', []);
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'deleteByIndex',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing get adds error breadcrumb', () async {
when(fixture.isarCollection.get(any)).thenThrow(fixture.exception);
try {
await fixture.getSut(injectMock: true).get(1);
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'get',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing getAll adds error breadcrumb', () async {
when(fixture.isarCollection.getAll(any)).thenThrow(fixture.exception);
try {
await fixture.getSut(injectMock: true).getAll([1]);
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'getAll',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing getAllByIndex adds error breadcrumb', () async {
when(fixture.isarCollection.getAllByIndex(any, any))
.thenThrow(fixture.exception);
try {
await fixture.getSut(injectMock: true).getAllByIndex('name', []);
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'getAllByIndex',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing getByIndex adds error breadcrumb', () async {
when(fixture.isarCollection.getByIndex(any, any))
.thenThrow(fixture.exception);
try {
await fixture.getSut(injectMock: true).getByIndex('name', []);
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'getByIndex',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing getSize adds error breadcrumb', () async {
when(fixture.isarCollection.getSize()).thenThrow(fixture.exception);
try {
await fixture.getSut(injectMock: true).getSize();
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'getSize',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing importJson adds error breadcrumb', () async {
when(fixture.isarCollection.importJson(any)).thenThrow(fixture.exception);
try {
await fixture.getSut(injectMock: true).importJson([]);
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'importJson',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing importJsonRaw adds error breadcrumb', () async {
when(fixture.isarCollection.importJsonRaw(any))
.thenThrow(fixture.exception);
try {
await fixture
.getSut(injectMock: true)
.importJsonRaw(Uint8List.fromList([]));
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'importJsonRaw',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing put adds error breadcrumb', () async {
when(fixture.isarCollection.put(any)).thenThrow(fixture.exception);
try {
await fixture.getSut(injectMock: true).put(Person());
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'put',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing putAll adds error breadcrumb', () async {
when(fixture.isarCollection.putAll(any)).thenThrow(fixture.exception);
try {
await fixture.getSut(injectMock: true).putAll([Person()]);
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'putAll',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing putAllByIndex adds error breadcrumb', () async {
when(fixture.isarCollection.putAllByIndex(any, any))
.thenThrow(fixture.exception);
try {
await fixture
.getSut(injectMock: true)
.putAllByIndex('name', [Person()]);
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'putAllByIndex',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});

test('throwing putByIndex adds error breadcrumb', () async {
when(fixture.isarCollection.putByIndex(any, any))
.thenThrow(fixture.exception);
try {
await fixture.getSut(injectMock: true).putByIndex('name', Person());
} catch (error) {
expect(error, fixture.exception);
}
verifyBreadcrumb(
'putByIndex',
fixture.getCreatedBreadcrumb(),
status: 'internal_error',
);
});
});
}

class Fixture {
Expand Down