Skip to content

Commit 8822838

Browse files
authored
test: use partialDeepStrictEqual instead of individual assertions (#7133)
This makes the test output in case of errors easier to understand as well as making the code easier to read.
1 parent d9a3a8e commit 8822838

28 files changed

Lines changed: 2317 additions & 1471 deletions

File tree

packages/datadog-plugin-aerospike/test/index.spec.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const { ERROR_MESSAGE, ERROR_TYPE, ERROR_STACK } = require('../../dd-trace/src/c
99
const agent = require('../../dd-trace/test/plugins/agent')
1010
const { withNamingSchema, withPeerService, withVersions } = require('../../dd-trace/test/setup/mocha')
1111
const { expectedSchema, rawExpectedSchema } = require('./naming')
12+
1213
describe('Plugin', () => {
1314
let aerospike
1415
let config

packages/datadog-plugin-ai/test/index.spec.js

Lines changed: 185 additions & 93 deletions
Large diffs are not rendered by default.

packages/datadog-plugin-apollo/test/index.spec.js

Lines changed: 124 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const agent = require('../../dd-trace/test/plugins/agent.js')
99
const { withNamingSchema, withVersions } = require('../../dd-trace/test/setup/mocha')
1010
const accounts = require('./fixtures.js')
1111
const { expectedSchema, rawExpectedSchema } = require('./naming.js')
12+
const { assertObjectContains } = require('../../../integration-tests/helpers')
1213

1314
const fixtures = [accounts]
1415
const typeDefs = accounts.typeDefs
@@ -148,47 +149,63 @@ describe('Plugin', () => {
148149
agent
149150
.assertSomeTraces((traces) => {
150151
// the spans are in order of execution
151-
assert.strictEqual(traces[0][0].name, expectedSchema.server.opName)
152-
assert.strictEqual(traces[0][0].service, expectedSchema.server.serviceName)
153-
assert.strictEqual(traces[0][0].resource, 'query MyQuery{hello(name:"")}')
154-
assert.strictEqual(traces[0][0].type, 'web')
155-
assert.strictEqual(traces[0][0].error, 0)
156-
assert.strictEqual(traces[0][0].meta['graphql.operation.name'], operationName)
152+
assertObjectContains(traces[0][0], {
153+
name: expectedSchema.server.opName,
154+
service: expectedSchema.server.serviceName,
155+
resource: 'query MyQuery{hello(name:"")}',
156+
type: 'web',
157+
error: 0,
158+
meta: {
159+
'graphql.operation.name': operationName,
160+
'graphql.operation.type': 'query',
161+
component: 'apollo.gateway',
162+
'_dd.integration': 'apollo.gateway'
163+
}
164+
})
157165
assert.ok(!('graphql.source' in traces[0][0].meta))
158-
assert.strictEqual(traces[0][0].meta['graphql.operation.type'], 'query')
159-
assert.strictEqual(traces[0][0].meta.component, 'apollo.gateway')
160-
assert.strictEqual(traces[0][0].meta['_dd.integration'], 'apollo.gateway')
161166

162-
assert.strictEqual(traces[0][1].name, 'apollo.gateway.validate')
163-
assert.strictEqual(traces[0][1].service, expectedSchema.server.serviceName)
164-
assert.strictEqual(traces[0][1].type, 'web')
165-
assert.strictEqual(traces[0][1].error, 0)
166-
assert.strictEqual(traces[0][1].meta.component, 'apollo.gateway')
167+
assertObjectContains(traces[0][1], {
168+
name: 'apollo.gateway.validate',
169+
service: expectedSchema.server.serviceName,
170+
type: 'web',
171+
error: 0,
172+
meta: { component: 'apollo.gateway' }
173+
})
167174

168-
assert.strictEqual(traces[0][2].name, 'apollo.gateway.plan')
169-
assert.strictEqual(traces[0][2].service, expectedSchema.server.serviceName)
170-
assert.strictEqual(traces[0][2].type, 'web')
171-
assert.strictEqual(traces[0][2].error, 0)
172-
assert.strictEqual(traces[0][2].meta.component, 'apollo.gateway')
175+
assertObjectContains(traces[0][2], {
176+
name: 'apollo.gateway.plan',
177+
service: expectedSchema.server.serviceName,
178+
type: 'web',
179+
error: 0,
180+
meta: { component: 'apollo.gateway' }
181+
})
173182

174-
assert.strictEqual(traces[0][3].name, 'apollo.gateway.execute')
175-
assert.strictEqual(traces[0][3].service, expectedSchema.server.serviceName)
176-
assert.strictEqual(traces[0][3].type, 'web')
177-
assert.strictEqual(traces[0][3].error, 0)
178-
assert.strictEqual(traces[0][3].meta.component, 'apollo.gateway')
183+
assertObjectContains(traces[0][3], {
184+
name: 'apollo.gateway.execute',
185+
service: expectedSchema.server.serviceName,
186+
type: 'web',
187+
error: 0,
188+
meta: { component: 'apollo.gateway' }
189+
})
179190

180-
assert.strictEqual(traces[0][4].name, 'apollo.gateway.fetch')
181-
assert.strictEqual(traces[0][4].service, expectedSchema.server.serviceName)
182-
assert.strictEqual(traces[0][4].type, 'web')
183-
assert.strictEqual(traces[0][4].error, 0)
184-
assert.strictEqual(traces[0][4].meta.serviceName, 'accounts')
185-
assert.strictEqual(traces[0][4].meta.component, 'apollo.gateway')
191+
assertObjectContains(traces[0][4], {
192+
name: 'apollo.gateway.fetch',
193+
service: expectedSchema.server.serviceName,
194+
type: 'web',
195+
error: 0,
196+
meta: {
197+
serviceName: 'accounts',
198+
component: 'apollo.gateway'
199+
}
200+
})
186201

187-
assert.strictEqual(traces[0][5].name, 'apollo.gateway.postprocessing')
188-
assert.strictEqual(traces[0][5].service, expectedSchema.server.serviceName)
189-
assert.strictEqual(traces[0][5].type, 'web')
190-
assert.strictEqual(traces[0][5].error, 0)
191-
assert.strictEqual(traces[0][5].meta.component, 'apollo.gateway')
202+
assertObjectContains(traces[0][5], {
203+
name: 'apollo.gateway.postprocessing',
204+
service: expectedSchema.server.serviceName,
205+
type: 'web',
206+
error: 0,
207+
meta: { component: 'apollo.gateway' }
208+
})
192209
})
193210
.then(done)
194211
.catch(done)
@@ -209,8 +226,10 @@ describe('Plugin', () => {
209226
assert.strictEqual(traces[0][0].type, 'web')
210227
assert.strictEqual(traces[0][0].error, 0)
211228
assert.ok(!('graphql.source' in traces[0][0].meta))
212-
assert.strictEqual(traces[0][0].meta['graphql.operation.type'], 'query')
213-
assert.strictEqual(traces[0][0].meta.component, 'apollo.gateway')
229+
assertObjectContains(traces[0][0].meta, {
230+
'graphql.operation.type': 'query',
231+
component: 'apollo.gateway'
232+
})
214233
})
215234
.then(done)
216235
.catch(done)
@@ -241,8 +260,10 @@ describe('Plugin', () => {
241260
assert.strictEqual(traces[0][0].type, 'web')
242261
assert.strictEqual(traces[0][0].error, 0)
243262
assert.ok(!('graphql.source' in traces[0][0].meta))
244-
assert.strictEqual(traces[0][0].meta['graphql.operation.type'], 'query')
245-
assert.strictEqual(traces[0][0].meta.component, 'apollo.gateway')
263+
assertObjectContains(traces[0][0].meta, {
264+
'graphql.operation.type': 'query',
265+
component: 'apollo.gateway'
266+
})
246267
})
247268
.then(done)
248269
.catch(done)
@@ -256,10 +277,11 @@ describe('Plugin', () => {
256277
it('should instrument mutations', done => {
257278
const source = 'mutation { human { name } }'
258279

259-
agent
260-
.assertSomeTraces((traces) => {
261-
assert.strictEqual(traces[0][0].meta['graphql.operation.type'], 'mutation')
262-
})
280+
agent.assertFirstTraceSpan({
281+
meta: {
282+
'graphql.operation.type': 'mutation'
283+
}
284+
})
263285
.then(done)
264286
.catch(done)
265287

@@ -294,21 +316,29 @@ describe('Plugin', () => {
294316
agent
295317
.assertSomeTraces((traces) => {
296318
assert.strictEqual(traces[0].length, 2)
297-
assert.strictEqual(traces[0][0].name, expectedSchema.server.opName)
298-
assert.strictEqual(traces[0][0].service, expectedSchema.server.serviceName)
299-
assert.strictEqual(traces[0][0].error, 1)
300-
assert.strictEqual(traces[0][0].meta[ERROR_TYPE], error.name)
301-
assert.strictEqual(traces[0][0].meta[ERROR_MESSAGE], error.message)
302-
assert.strictEqual(traces[0][0].meta[ERROR_STACK], error.stack)
303-
assert.strictEqual(traces[0][0].meta.component, 'apollo.gateway')
319+
assertObjectContains(traces[0][0], {
320+
name: expectedSchema.server.opName,
321+
service: expectedSchema.server.serviceName,
322+
error: 1,
323+
meta: {
324+
[ERROR_TYPE]: error.name,
325+
[ERROR_MESSAGE]: error.message,
326+
[ERROR_STACK]: error.stack,
327+
component: 'apollo.gateway'
328+
}
329+
})
304330

305-
assert.strictEqual(traces[0][1].name, 'apollo.gateway.validate')
306-
assert.strictEqual(traces[0][1].service, expectedSchema.server.serviceName)
307-
assert.strictEqual(traces[0][1].error, 1)
308-
assert.strictEqual(traces[0][1].meta[ERROR_TYPE], error.name)
309-
assert.strictEqual(traces[0][1].meta[ERROR_MESSAGE], error.message)
310-
assert.strictEqual(traces[0][1].meta[ERROR_STACK], error.stack)
311-
assert.strictEqual(traces[0][1].meta.component, 'apollo.gateway')
331+
assertObjectContains(traces[0][1], {
332+
name: 'apollo.gateway.validate',
333+
service: expectedSchema.server.serviceName,
334+
error: 1,
335+
meta: {
336+
[ERROR_TYPE]: error.name,
337+
[ERROR_MESSAGE]: error.message,
338+
[ERROR_STACK]: error.stack,
339+
component: 'apollo.gateway'
340+
}
341+
})
312342
})
313343
.then(done)
314344
.catch(done)
@@ -336,12 +366,16 @@ describe('Plugin', () => {
336366
assert.strictEqual(traces[0][1].name, 'apollo.gateway.validate')
337367
assert.strictEqual(traces[0][1].error, 0)
338368

339-
assert.strictEqual(traces[0][2].name, 'apollo.gateway.plan')
340-
assert.strictEqual(traces[0][2].service, expectedSchema.server.serviceName)
341-
assert.strictEqual(traces[0][2].error, 1)
342-
assert.strictEqual(traces[0][2].meta[ERROR_TYPE], error.name)
343-
assert.strictEqual(traces[0][2].meta[ERROR_MESSAGE], error.message)
344-
assert.strictEqual(traces[0][2].meta[ERROR_STACK], error.stack)
369+
assertObjectContains(traces[0][2], {
370+
name: 'apollo.gateway.plan',
371+
service: expectedSchema.server.serviceName,
372+
error: 1,
373+
meta: {
374+
[ERROR_TYPE]: error.name,
375+
[ERROR_MESSAGE]: error.message,
376+
[ERROR_STACK]: error.stack
377+
}
378+
})
345379
})
346380
.then(done)
347381
.catch(done)
@@ -363,11 +397,15 @@ describe('Plugin', () => {
363397
const variableValues = { who: 'world' }
364398
agent
365399
.assertSomeTraces((traces) => {
366-
assert.strictEqual(traces[0][0].name, expectedSchema.server.opName)
367-
assert.strictEqual(traces[0][0].error, 1)
368-
assert.strictEqual(traces[0][0].meta[ERROR_TYPE], error.name)
369-
assert.strictEqual(traces[0][0].meta[ERROR_MESSAGE], error.message)
370-
assert.strictEqual(traces[0][0].meta[ERROR_STACK], error.stack)
400+
assertObjectContains(traces[0][0], {
401+
name: expectedSchema.server.opName,
402+
error: 1,
403+
meta: {
404+
[ERROR_TYPE]: error.name,
405+
[ERROR_MESSAGE]: error.message,
406+
[ERROR_STACK]: error.stack
407+
}
408+
})
371409

372410
assert.strictEqual(traces[0][1].name, 'apollo.gateway.validate')
373411
assert.strictEqual(traces[0][1].error, 0)
@@ -382,18 +420,26 @@ describe('Plugin', () => {
382420
// in version 2.3.0, there is no recordExceptions method thus we can't ever attach an error to the
383421
// fetch span but instead the error will be propagated to the request span and be set there
384422
if (version > '2.3.0') {
385-
assert.strictEqual(traces[0][3].error, 1)
386-
assert.strictEqual(traces[0][3].meta[ERROR_TYPE], error.name)
387-
assert.strictEqual(traces[0][3].meta[ERROR_MESSAGE], error.message)
388-
assert.strictEqual(traces[0][3].meta[ERROR_STACK], error.stack)
423+
assertObjectContains(traces[0][3], {
424+
error: 1,
425+
meta: {
426+
[ERROR_TYPE]: error.name,
427+
[ERROR_MESSAGE]: error.message,
428+
[ERROR_STACK]: error.stack
429+
}
430+
})
389431
} else { assert.strictEqual(traces[0][3].error, 0) }
390432

391-
assert.strictEqual(traces[0][4].name, 'apollo.gateway.fetch')
392-
assert.strictEqual(traces[0][4].service, expectedSchema.server.serviceName)
393-
assert.strictEqual(traces[0][4].error, 1)
394-
assert.strictEqual(traces[0][4].meta[ERROR_TYPE], error.name)
395-
assert.strictEqual(traces[0][4].meta[ERROR_MESSAGE], error.message)
396-
assert.strictEqual(traces[0][4].meta[ERROR_STACK], error.stack)
433+
assertObjectContains(traces[0][4], {
434+
name: 'apollo.gateway.fetch',
435+
service: expectedSchema.server.serviceName,
436+
error: 1,
437+
meta: {
438+
[ERROR_TYPE]: error.name,
439+
[ERROR_MESSAGE]: error.message,
440+
[ERROR_STACK]: error.stack
441+
}
442+
})
397443

398444
assert.strictEqual(traces[0][5].name, 'apollo.gateway.postprocessing')
399445
assert.strictEqual(traces[0][5].error, 0)

packages/datadog-plugin-aws-sdk/test/aws-sdk.spec.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -285,10 +285,12 @@ describe('Plugin', () => {
285285
resource: 'listBuckets',
286286
service: 'test'
287287
})
288-
assert.strictEqual(span.error, 0)
289-
assertObjectContains(span.meta, {
290-
'hook.operation': 'listBuckets',
291-
component: 'aws-sdk'
288+
assertObjectContains(span, {
289+
error: 0,
290+
meta: {
291+
'hook.operation': 'listBuckets',
292+
component: 'aws-sdk'
293+
}
292294
})
293295
}).then(done, done)
294296

packages/datadog-plugin-aws-sdk/test/bedrockruntime.spec.js

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ const { setup } = require('./spec_helpers')
77
const { models } = require('./fixtures/bedrockruntime')
88
const { withVersions } = require('../../dd-trace/test/setup/mocha')
99
const assert = require('node:assert')
10-
const { assertObjectContains } = require('../../../integration-tests/helpers')
11-
1210
const serviceName = 'bedrock-service-name-test'
1311

1412
describe('Plugin', () => {
@@ -59,13 +57,12 @@ describe('Plugin', () => {
5957

6058
const command = new AWS.InvokeModelCommand(request)
6159

62-
const tracesPromise = agent.assertSomeTraces(traces => {
63-
const span = traces[0][0]
64-
assertObjectContains(span.meta, {
60+
const tracesPromise = agent.assertFirstTraceSpan({
61+
meta: {
6562
'aws.operation': 'invokeModel',
6663
'aws.bedrock.request.model': model.modelId.split('.')[1],
6764
'aws.bedrock.request.model_provider': model.provider.toLowerCase(),
68-
})
65+
}
6966
})
7067

7168
await bedrockRuntimeClient.send(command)
@@ -82,13 +79,12 @@ describe('Plugin', () => {
8279

8380
const command = new AWS.InvokeModelWithResponseStreamCommand(request)
8481

85-
const tracesPromise = agent.assertSomeTraces(traces => {
86-
const span = traces[0][0]
87-
assertObjectContains(span.meta, {
82+
const tracesPromise = agent.assertFirstTraceSpan({
83+
meta: {
8884
'aws.operation': 'invokeModelWithResponseStream',
8985
'aws.bedrock.request.model': model.modelId.split('.')[1],
9086
'aws.bedrock.request.model_provider': model.provider.toLowerCase(),
91-
})
87+
}
9288
})
9389

9490
const stream = await bedrockRuntimeClient.send(command)

0 commit comments

Comments
 (0)