public void GetIdType_Correctly_Identifies_JsonApiResource() { // arrange var type = typeof(Model); var exextedIdType = typeof(int); // act var result = TypeLocator.GetIdType(type); // assert Assert.NotNull(result); Assert.True(result.isJsonApiResource); Assert.Equal(exextedIdType, result.idType); }
public void GetIdType_Correctly_Identifies_NonJsonApiResource() { // arrange var type = typeof(DerivedType); Type exextedIdType = null; // act var result = TypeLocator.GetIdType(type); // assert Assert.NotNull(result); Assert.False(result.isJsonApiResource); Assert.Equal(exextedIdType, result.idType); }
/// <inheritdoc /> public IResourceGraphBuilder AddResource(Type resourceType, Type idType = null, string pluralizedTypeName = null) { AssertEntityIsNotAlreadyDefined(resourceType); if (resourceType.Implements <IIdentifiable>()) { pluralizedTypeName ??= FormatResourceName(resourceType); idType ??= TypeLocator.GetIdType(resourceType); _resources.Add(GetEntity(pluralizedTypeName, resourceType, idType)); } else { _validationResults.Add(new ValidationResult(LogLevel.Warning, $"{resourceType} does not implement 'IIdentifiable<>'. ")); } return(this); }
/// <inheritdoc /> public IResourceGraphBuilder AddResource(Type resourceType, Type idType = null, string pluralizedTypeName = null) { if (_resources.All(e => e.ResourceType != resourceType)) { if (resourceType.IsOrImplementsInterface(typeof(IIdentifiable))) { pluralizedTypeName ??= FormatResourceName(resourceType); idType ??= TypeLocator.GetIdType(resourceType); var resourceContext = CreateResourceContext(pluralizedTypeName, resourceType, idType); _resources.Add(resourceContext); } else { _logger.LogWarning($"Entity '{resourceType}' does not implement '{nameof(IIdentifiable)}'."); } } return(this); }