Skip to content

Commit fd82326

Browse files
committed
CSHARP-2392: Improve ChangeStreamDocument integration test.
1 parent cdd66b3 commit fd82326

File tree

1 file changed

+57
-18
lines changed

1 file changed

+57
-18
lines changed

tests/MongoDB.Driver.Tests/Specifications/change-streams/ChangeStreamTestRunner.cs

Lines changed: 57 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -354,33 +354,22 @@ private void AssertChangeStreamDocument(ChangeStreamDocument<BsonDocument> actua
354354
{
355355
JsonDrivenHelper.EnsureAllFieldsAreValid(expectedDocument, "_id", "documentKey", "operationType", "ns", "fullDocument");
356356

357-
// assert that all properties of a ChangeStreamDocument can be accessed without an exception being thrown
358-
var backingDocument = actualDocument.BackingDocument;
359-
var clusterTime = actualDocument.ClusterTime;
360-
var collectionNamespace = actualDocument.CollectionNamespace;
361-
var documentKey = actualDocument.DocumentKey;
362-
var fullDocument = actualDocument.FullDocument;
363-
var operationType = actualDocument.OperationType;
364-
var resumeToken = actualDocument.ResumeToken;
365-
var updateDescription = actualDocument.UpdateDescription;
366-
367-
backingDocument.Should().NotBeNull();
368-
clusterTime.Should().NotBeNull();
357+
AssertChangeStreamDocumentPropertyValuesAgainstBackingDocument(actualDocument);
369358

370359
if (expectedDocument.Contains("_id"))
371360
{
372-
resumeToken.Should().NotBeNull();
361+
actualDocument.ResumeToken.Should().NotBeNull();
373362
}
374363

375364
if (expectedDocument.Contains("documentKey"))
376365
{
377-
documentKey.Should().NotBeNull();
366+
actualDocument.DocumentKey.Should().NotBeNull();
378367
}
379368

380369
if (expectedDocument.Contains("operationType"))
381370
{
382371
var expectedOperationType = (ChangeStreamOperationType)Enum.Parse(typeof(ChangeStreamOperationType), expectedDocument["operationType"].AsString, ignoreCase: true);
383-
operationType.Should().Be(expectedOperationType);
372+
actualDocument.OperationType.Should().Be(expectedOperationType);
384373
}
385374

386375
if (expectedDocument.Contains("ns"))
@@ -390,14 +379,64 @@ private void AssertChangeStreamDocument(ChangeStreamDocument<BsonDocument> actua
390379
var expectedDatabaseName = ns["db"].AsString;
391380
var expectedCollectionName = ns["coll"].AsString;
392381
var expectedCollectionNamespace = new CollectionNamespace(new DatabaseNamespace(expectedDatabaseName), expectedCollectionName);
393-
collectionNamespace.Should().Be(expectedCollectionNamespace);
382+
actualDocument.CollectionNamespace.Should().Be(expectedCollectionNamespace);
394383
}
395384

396385
if (expectedDocument.Contains("fullDocument"))
397386
{
387+
var actualFullDocument = actualDocument.FullDocument;
388+
actualFullDocument.Remove("_id");
398389
var expectedFullDocument = expectedDocument["fullDocument"].AsBsonDocument;
399-
fullDocument.Remove("_id");
400-
fullDocument.Should().Be(expectedFullDocument);
390+
actualFullDocument.Should().Be(expectedFullDocument);
391+
}
392+
}
393+
394+
private void AssertChangeStreamDocumentPropertyValuesAgainstBackingDocument(ChangeStreamDocument<BsonDocument> actualDocument)
395+
{
396+
var backingDocument = actualDocument.BackingDocument;
397+
backingDocument.Should().NotBeNull();
398+
399+
var clusterTime = actualDocument.ClusterTime;
400+
if (backingDocument.Contains("clusterTime"))
401+
{
402+
clusterTime.Should().Be(backingDocument["clusterTime"].AsBsonTimestamp);
403+
}
404+
else
405+
{
406+
clusterTime.Should().BeNull();
407+
}
408+
409+
var collectionNamespace = actualDocument.CollectionNamespace;
410+
collectionNamespace.DatabaseNamespace.DatabaseName.Should().Be(backingDocument["ns"]["db"].AsString);
411+
collectionNamespace.CollectionName.Should().Be(backingDocument["ns"]["coll"].AsString);
412+
413+
var documentKey = actualDocument.DocumentKey;
414+
documentKey.Should().Be(backingDocument["documentKey"].AsBsonDocument);
415+
416+
var fullDocument = actualDocument.FullDocument;
417+
if (backingDocument.Contains("fullDocument"))
418+
{
419+
fullDocument.Should().Be(backingDocument["fullDocument"].AsBsonDocument);
420+
}
421+
else
422+
{
423+
fullDocument.Should().BeNull();
424+
}
425+
426+
var operationType = actualDocument.OperationType;
427+
operationType.ToString().ToLowerInvariant().Should().Be(backingDocument["operationType"].AsString);
428+
429+
var resumeToken = actualDocument.ResumeToken;
430+
resumeToken.Should().Be(backingDocument["_id"].AsBsonDocument);
431+
432+
var updateDescription = actualDocument.UpdateDescription;
433+
if (backingDocument.Contains("updateDescription"))
434+
{
435+
updateDescription.Should().Be(backingDocument["updateDescription"].AsBsonDocument);
436+
}
437+
else
438+
{
439+
updateDescription.Should().BeNull();
401440
}
402441
}
403442

0 commit comments

Comments
 (0)