Skip to content

Commit

Permalink
test: Add unit test for case #1
Browse files Browse the repository at this point in the history
  • Loading branch information
jennmueng committed Mar 2, 2021
1 parent 735a8d4 commit 465d9b0
Showing 1 changed file with 38 additions and 13 deletions.
51 changes: 38 additions & 13 deletions test/tracing/reactnavigationv5.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ class MockNavigationContainer {
const getMockTransaction = () => {
const transaction = new Transaction(BLANK_TRANSACTION_CONTEXT_V5);

transaction.sampled = false;
// Assume it's sampled
transaction.sampled = true;

return transaction;
};
Expand Down Expand Up @@ -278,22 +279,46 @@ describe("ReactNavigationV5Instrumentation", () => {
expect.any(Function)
);
});
});

test("does not register navigation container if there is an existing one", () => {
_global.__sentry_rn_v5_registered = true;
test("does not register navigation container if there is an existing one", () => {
_global.__sentry_rn_v5_registered = true;

const instrumentation = new ReactNavigationV5Instrumentation();
const mockNavigationContainer = new MockNavigationContainer();
instrumentation.registerNavigationContainer({
current: mockNavigationContainer,
const instrumentation = new ReactNavigationV5Instrumentation();
const mockNavigationContainer = new MockNavigationContainer();
instrumentation.registerNavigationContainer({
current: mockNavigationContainer,
});

expect(_global.__sentry_rn_v5_registered).toBe(true);

// eslint-disable-next-line @typescript-eslint/unbound-method
expect(mockNavigationContainer.addListener).not.toHaveBeenCalled();
// eslint-disable-next-line @typescript-eslint/unbound-method
expect(mockNavigationContainer.addListener).not.toHaveBeenCalled();
});

expect(_global.__sentry_rn_v5_registered).toBe(true);
test("works if routing instrumentation registration is after navigation registration", async () => {
const instrumentation = new ReactNavigationV5Instrumentation();

const mockNavigationContainer = new MockNavigationContainer();
instrumentation.registerNavigationContainer(mockNavigationContainer);

const mockTransactionDummy = getMockTransaction();
const transactionRef = {
current: mockTransactionDummy,
};
const tracingListener = jest.fn(() => transactionRef.current);
instrumentation.registerRoutingInstrumentation(
tracingListener as any,
(context) => context
);

// eslint-disable-next-line @typescript-eslint/unbound-method
expect(mockNavigationContainer.addListener).not.toHaveBeenCalled();
// eslint-disable-next-line @typescript-eslint/unbound-method
expect(mockNavigationContainer.addListener).not.toHaveBeenCalled();
await new Promise<void>((resolve) => {
setTimeout(() => {
expect(mockTransactionDummy.sampled).not.toBe(false);
resolve();
}, 500);
});
});
});
});

0 comments on commit 465d9b0

Please sign in to comment.