private void AssertResult(OperationResult actualResult, BsonDocument operation, UnifiedEntityMap entityMap) { if (operation.TryGetValue("expectResult", out var expectedResult)) { actualResult.Exception.Should().BeNull(); new UnifiedValueMatcher(entityMap).AssertValuesMatch(actualResult.Result, expectedResult); } if (operation.TryGetValue("expectError", out var expectedError)) { actualResult.Exception.Should().NotBeNull(); actualResult.Result.Should().BeNull(); new UnifiedErrorMatcher().AssertErrorsMatch(actualResult.Exception, expectedError.AsBsonDocument); } else { actualResult.Exception.Should().BeNull(); } if (operation.TryGetValue("saveResultAsEntity", out var saveResultAsEntity)) { if (actualResult.Result != null) { entityMap.AddResult(saveResultAsEntity.AsString, actualResult.Result); } else if (actualResult.ChangeStream != null) { entityMap.AddChangeStream(saveResultAsEntity.AsString, actualResult.ChangeStream); } else { throw new AssertionException($"Expected result to be present but none found to save with id: '{saveResultAsEntity.AsString}'."); } } }