Skip to content

Commit 02e9ae7

Browse files
committed
add unit tests
1 parent 431707b commit 02e9ae7

File tree

2 files changed

+58
-1
lines changed

2 files changed

+58
-1
lines changed

src/index.spec.ts

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
sendDistributionMetric,
99
sendDistributionMetricWithDate,
1010
_metricsQueue,
11+
emitTelemetryOnErrorOutsideHandler,
1112
} from "./index";
1213
import {
1314
incrementErrorsMetric,
@@ -21,6 +22,8 @@ import { DatadogTraceHeaders } from "./trace/context/extractor";
2122
import { SpanContextWrapper } from "./trace/span-context-wrapper";
2223
import { TraceSource } from "./trace/trace-context-service";
2324
import { inflateSync } from "zlib";
25+
import { MetricsListener } from "./metrics/listener";
26+
import { SpanOptions, TracerWrapper } from "./trace/tracer-wrapper";
2427

2528
jest.mock("./metrics/enhanced-metrics");
2629

@@ -536,3 +539,58 @@ describe("sendDistributionMetricWithDate", () => {
536539
expect(_metricsQueue.length).toBe(1);
537540
});
538541
});
542+
543+
describe("emitTelemetryOnErrorOutsideHandler", () => {
544+
let mockedStartSpan = jest.spyOn(TracerWrapper.prototype, "startSpan");
545+
beforeEach(() => {
546+
jest.spyOn(MetricsListener.prototype, "onStartInvocation").mockImplementation();
547+
jest.spyOn(TracerWrapper.prototype, "isTracerAvailable", "get").mockImplementation(() => true);
548+
});
549+
afterEach(() => {
550+
mockedIncrementErrors.mockClear();
551+
mockedStartSpan.mockClear();
552+
});
553+
it("emits a metric when enhanced metrics are enabled", async () => {
554+
process.env.DD_ENHANCED_METRICS = "true";
555+
await emitTelemetryOnErrorOutsideHandler(new ReferenceError("some error"), "myFunction", Date.now());
556+
expect(mockedIncrementErrors).toBeCalledTimes(1);
557+
});
558+
559+
it("does not emit a metric when enhanced metrics are disabled", async () => {
560+
process.env.DD_ENHANCED_METRICS = "false";
561+
await emitTelemetryOnErrorOutsideHandler(new ReferenceError("some error"), "myFunction", Date.now());
562+
expect(mockedIncrementErrors).toBeCalledTimes(0);
563+
});
564+
565+
it("creates a span when tracing is enabled", async () => {
566+
process.env.DD_TRACE_ENABLED = "true";
567+
const functionName = "myFunction";
568+
const startTime = Date.now();
569+
const fakeError = new ReferenceError("some error");
570+
const spanName = "aws.lambda";
571+
572+
await emitTelemetryOnErrorOutsideHandler(fakeError, functionName, startTime);
573+
574+
const options: SpanOptions = {
575+
tags: {
576+
service: spanName,
577+
operation_name: spanName,
578+
resource_names: functionName,
579+
"resource.name": functionName,
580+
"span.type": "serverless",
581+
"error.status": 500,
582+
"error.type": fakeError.name,
583+
"error.message": fakeError.message,
584+
"error.stack": fakeError.stack,
585+
},
586+
startTime,
587+
};
588+
expect(mockedStartSpan).toBeCalledWith(spanName, options);
589+
});
590+
591+
it("does not create a span when tracing is disabled", async () => {
592+
process.env.DD_TRACE_ENABLED = "false";
593+
await emitTelemetryOnErrorOutsideHandler(new ReferenceError("some error"), "myFunction", Date.now());
594+
expect(mockedStartSpan).toBeCalledTimes(0);
595+
});
596+
});

src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,6 @@ export async function emitTelemetryOnErrorOutsideHandler(
443443
"error.type": error.name,
444444
"error.message": error.message,
445445
"error.stack": error.stack,
446-
status: error,
447446
},
448447
startTime,
449448
};

0 commit comments

Comments
 (0)