// PUBLIC METHODS /////////////////////////////////////////////////// #region Assert Methods public static void Equal(JsonApiVersion expected, string actualJson) { Assert.NotNull(expected); Assert.False(String.IsNullOrEmpty(actualJson)); var actualJToken = JToken.Parse(actualJson); JsonApiVersionAssert.Equal(expected, actualJToken); }
public static void Equal(Document expected, Document actual) { if (expected == null) { Assert.Null(actual); return; } Assert.NotNull(actual); // JsonApiVersion JsonApiVersionAssert.Equal(expected.JsonApiVersion, actual.JsonApiVersion); // Meta MetaAssert.Equal(expected.Meta, actual.Meta); // Links LinksAssert.Equal(expected.Links, actual.Links); // Data // Document types can be the following: // 1. Document // 2. EmptyDocument // 3. ErrorsDocument // 4. NullDocument // 5. ResourceDocument // 6. ResourceIdentifierDocument // 7. ResourceCollectionDocument // 8. ResourceIdentifierCollectionDocument var expectedDocumentTypeInfo = expected.GetType().GetTypeInfo(); if (expectedDocumentTypeInfo == DocumentTypeInfo) { // NOOP } else if (expectedDocumentTypeInfo == EmptyDocumentTypeInfo) { var expectedData = expected.GetData(); var actualData = actual.GetData(); ClrObjectAssert.Equal(expectedData, actualData); } else if (expectedDocumentTypeInfo == ErrorsDocumentTypeInfo) { var expectedErrors = expected.GetErrors(); var actualErrors = actual.GetErrors(); ErrorAssert.Equal(expectedErrors, actualErrors); } else if (expectedDocumentTypeInfo == NullDocumentTypeInfo) { var expectedData = expected.GetData(); var actualData = actual.GetData(); ClrObjectAssert.Equal(expectedData, actualData); } else if (expectedDocumentTypeInfo == ResourceDocumentTypeInfo) { var expectedResourceDocument = (ResourceDocument)expected; var expectedResource = expectedResourceDocument.Data; if (expectedResource == null) { Assert.True(actual.IsNullDocument() || (actual.IsResourceDocument() && actual.IsDataNullOrEmpty())); return; } var actualResourceDocument = (ResourceDocument)actual; var actualResource = actualResourceDocument.Data; ResourceAssert.Equal(expectedResource, actualResource); // Included var expectedIncluded = expected.GetIncludedResources(); var actualIncluded = actual.GetIncludedResources(); ResourceAssert.Equal(expectedIncluded, actualIncluded); } else if (expectedDocumentTypeInfo == ResourceIdentifierDocumentTypeInfo) { var expectedResourceIdentifierDocument = (ResourceIdentifierDocument)expected; var expectedResourceIdentifier = expectedResourceIdentifierDocument.Data; if (expectedResourceIdentifier == null) { Assert.True(actual.IsNullDocument() || (actual.IsResourceIdentifierDocument() && actual.IsDataNullOrEmpty())); return; } var actualResourceIdentifierDocument = (ResourceIdentifierDocument)actual; var actualResourceIdentifier = actualResourceIdentifierDocument.Data; ResourceIdentifierAssert.Equal(expectedResourceIdentifier, actualResourceIdentifier); } else if (expectedDocumentTypeInfo == ResourceCollectionDocumentTypeInfo) { var expectedResourceCollectionDocument = (ResourceCollectionDocument)expected; var expectedResourceCollection = expectedResourceCollectionDocument.Data; Assert.NotNull(expectedResourceCollection); if (!expectedResourceCollection.Any()) { Assert.True(actual.IsEmptyDocument() || (actual.IsResourceCollectionDocument() && actual.IsDataNullOrEmpty())); return; } var actualResourceCollectionDocument = (ResourceCollectionDocument)actual; var actualResourceCollection = actualResourceCollectionDocument.Data; ResourceAssert.Equal(expectedResourceCollection, actualResourceCollection); // Included var expectedIncludedResources = expected.GetIncludedResources(); var actualIncludedResources = actual.GetIncludedResources(); ResourceAssert.Equal(expectedIncludedResources, actualIncludedResources); } else if (expectedDocumentTypeInfo == ResourceIdentifierCollectionDocumentTypeInfo) { var expectedResourceIdentifierCollectionDocument = (ResourceIdentifierCollectionDocument)expected; var expectedResourceIdentifierCollection = expectedResourceIdentifierCollectionDocument.Data; Assert.NotNull(expectedResourceIdentifierCollection); if (!expectedResourceIdentifierCollection.Any()) { Assert.True(actual.IsEmptyDocument() || (actual.IsResourceIdentifierCollectionDocument() && actual.IsDataNullOrEmpty())); return; } var actualResourceIdentifierCollectionDocument = (ResourceIdentifierCollectionDocument)actual; var actualResourceIdentifierCollection = actualResourceIdentifierCollectionDocument.Data; ResourceIdentifierAssert.Equal(expectedResourceIdentifierCollection, actualResourceIdentifierCollection); } else { Assert.True(false, String.Format("Unknown document type={0}", expectedDocumentTypeInfo)); } }