mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-13 21:05:19 +00:00
feat(infra): framework
This commit is contained in:
@@ -1,15 +1,8 @@
|
||||
import { nanoid } from 'nanoid';
|
||||
import type { Mock } from 'vitest';
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import { gqlFetcherFactory } from '../fetcher';
|
||||
import type { GraphQLQuery } from '../graphql';
|
||||
import {
|
||||
generateRandUTF16Chars,
|
||||
SPAN_ID_BYTES,
|
||||
TRACE_ID_BYTES,
|
||||
TraceReporter,
|
||||
} from '../utils';
|
||||
|
||||
const query: GraphQLQuery = {
|
||||
id: 'query',
|
||||
@@ -19,6 +12,7 @@ const query: GraphQLQuery = {
|
||||
};
|
||||
|
||||
let fetch: Mock;
|
||||
let gql: ReturnType<typeof gqlFetcherFactory>;
|
||||
describe('GraphQL fetcher', () => {
|
||||
beforeEach(() => {
|
||||
fetch = vi.fn(() =>
|
||||
@@ -30,15 +24,13 @@ describe('GraphQL fetcher', () => {
|
||||
})
|
||||
)
|
||||
);
|
||||
vi.stubGlobal('fetch', fetch);
|
||||
gql = gqlFetcherFactory('https://example.com/graphql', fetch);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
fetch.mockReset();
|
||||
});
|
||||
|
||||
const gql = gqlFetcherFactory('https://example.com/graphql');
|
||||
|
||||
it('should send POST request to given endpoint', async () => {
|
||||
await gql(
|
||||
// @ts-expect-error variables is actually optional
|
||||
@@ -65,7 +57,6 @@ describe('GraphQL fetcher', () => {
|
||||
'content-type': 'application/json',
|
||||
'x-definition-name': 'query',
|
||||
'x-operation-name': 'query',
|
||||
'x-request-id': expect.any(String),
|
||||
}),
|
||||
method: 'POST',
|
||||
})
|
||||
@@ -119,41 +110,3 @@ describe('GraphQL fetcher', () => {
|
||||
`);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Trace Reporter', () => {
|
||||
const startTime = new Date().toISOString();
|
||||
const traceId = generateRandUTF16Chars(TRACE_ID_BYTES);
|
||||
const spanId = generateRandUTF16Chars(SPAN_ID_BYTES);
|
||||
const requestId = nanoid();
|
||||
|
||||
it('spanId, traceId should be right format', () => {
|
||||
expect(
|
||||
new RegExp(`^[0-9a-f]{${SPAN_ID_BYTES * 2}}$`).test(
|
||||
generateRandUTF16Chars(SPAN_ID_BYTES)
|
||||
)
|
||||
).toBe(true);
|
||||
expect(
|
||||
new RegExp(`^[0-9a-f]{${TRACE_ID_BYTES * 2}}$`).test(
|
||||
generateRandUTF16Chars(TRACE_ID_BYTES)
|
||||
)
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it('test createTraceSpan', () => {
|
||||
const traceSpan = TraceReporter.createTraceSpan(
|
||||
traceId,
|
||||
spanId,
|
||||
startTime,
|
||||
{ requestId }
|
||||
);
|
||||
expect(traceSpan.startTime).toBe(startTime);
|
||||
expect(
|
||||
traceSpan.name ===
|
||||
`projects/{GCP_PROJECT_ID}/traces/${traceId}/spans/${spanId}`
|
||||
).toBe(true);
|
||||
expect(traceSpan.spanId).toBe(spanId);
|
||||
expect(traceSpan.attributes.attributeMap.requestId?.stringValue.value).toBe(
|
||||
requestId
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user