private NameCacheEntity BuildNameCacheFromTableEntity(NameCacheTableEntity tableEntity) { if (tableEntity == null) { return(null); } var parameters = new List <Parameter>(); try { parameters = JsonConvert.DeserializeObject <List <Parameter> >(tableEntity.MethodParameters); } catch (Exception) { Trace.TraceError("Failed to deserialize object for method parameters: {0}", tableEntity.MethodParameters); } var nameCacheEntity = new NameCacheEntity { Name = tableEntity?.Name, Parameters = parameters, Description = tableEntity?.MethodDescription, }; return(nameCacheEntity); }
public async Task AddNameAsyncFailureTest() { var newNameCache = fixture.Create <NameCacheEntity>(); NameCacheTableEntity tableEntity = null; var resp = new TableStorageResponse <NameCacheEntity> { Entity = newNameCache, Status = TableStorageResponseStatus.NotFound }; _tableStorageClientMock.Setup( x => x.DoTableInsertOrReplaceAsync(It.IsNotNull <NameCacheTableEntity>(), It.IsNotNull <Func <NameCacheTableEntity, NameCacheEntity> >())) .Callback <NameCacheTableEntity, Func <NameCacheTableEntity, NameCacheEntity> >( (entity, func) => tableEntity = null) .ReturnsAsync(resp); var tableEntities = fixture.Create <List <NameCacheTableEntity> >(); _tableStorageClientMock.Setup(x => x.ExecuteQueryAsync(It.IsNotNull <TableQuery <NameCacheTableEntity> >())) .ReturnsAsync(tableEntities); var ret = await nameCacheRepository.AddNameAsync(NameCacheEntityType.DesiredProperty, newNameCache); Assert.False(ret); Assert.Null(tableEntity); await Assert.ThrowsAsync <ArgumentException>(async() => await nameCacheRepository.AddNameAsync(NameCacheEntityType.Property, newNameCache)); }
public async Task AddNameAsyncTest() { var newNameCache = fixture.Create <NameCacheEntity>(); NameCacheTableEntity tableEntity = null; var resp = new TableStorageResponse <NameCacheEntity> { Entity = newNameCache, Status = TableStorageResponseStatus.Successful }; _tableStorageClientMock.Setup( x => x.DoTableInsertOrReplaceAsync(It.IsNotNull <NameCacheTableEntity>(), It.IsNotNull <Func <NameCacheTableEntity, NameCacheEntity> >())) .Callback <NameCacheTableEntity, Func <NameCacheTableEntity, NameCacheEntity> >( (entity, func) => tableEntity = entity) .ReturnsAsync(resp); var tableEntities = fixture.Create <List <NameCacheTableEntity> >(); _tableStorageClientMock.Setup(x => x.ExecuteQueryAsync(It.IsNotNull <TableQuery <NameCacheTableEntity> >())) .ReturnsAsync(tableEntities); var ret = await nameCacheRepository.AddNameAsync(NameCacheEntityType.DesiredProperty, newNameCache); Assert.True(ret); Assert.NotNull(tableEntity); Assert.Equal(newNameCache.Name, tableEntity.Name); Assert.Equal(newNameCache.Description, tableEntity.MethodDescription); Assert.Equal(NameCacheEntityType.DesiredProperty.ToString(), tableEntity.PartitionKey); }
/// <summary> /// Delete an existing name from repository. /// </summary> /// <param name="entityType"></param> /// <param name="name"></param> /// <returns>true if succeeded, false if failed.</returns> public async Task <bool> DeleteNameAsync(NameCacheEntityType entityType, string name) { CheckSingleEntityType(entityType); NameCacheTableEntity tableEntity = new NameCacheTableEntity(entityType, name); tableEntity.ETag = "*"; var result = await _azureTableStorageClient.DoDeleteAsync <NameCacheEntity, NameCacheTableEntity>(tableEntity, BuildNameCacheFromTableEntity); return(result.Status == TableStorageResponseStatus.Successful); }
/// <summary> /// Save a new name into the repository. Update it if it already exists. /// </summary> /// <param name="name"></param> /// <returns>true if succeeded, false if failed.</returns> public async Task <bool> AddNameAsync(NameCacheEntityType entityType, NameCacheEntity entity) { CheckSingleEntityType(entityType); NameCacheTableEntity tableEntity = new NameCacheTableEntity(entityType, entity.Name); tableEntity.MethodParameters = JsonConvert.SerializeObject(entity.Parameters); tableEntity.MethodDescription = entity.Description; tableEntity.ETag = "*"; var result = await _azureTableStorageClient.DoTableInsertOrReplaceAsync <NameCacheEntity, NameCacheTableEntity>(tableEntity, BuildNameCacheFromTableEntity); return(result.Status == TableStorageResponseStatus.Successful); }
public async Task DeleteNameAsyncTest() { var newNameCache = fixture.Create <NameCacheEntity>(); NameCacheTableEntity tableEntity = null; var resp = new TableStorageResponse <NameCacheEntity> { Entity = newNameCache, Status = TableStorageResponseStatus.Successful }; _tableStorageClientMock.Setup( x => x.DoDeleteAsync(It.IsNotNull <NameCacheTableEntity>(), It.IsNotNull <Func <NameCacheTableEntity, NameCacheEntity> >())) .Callback <NameCacheTableEntity, Func <NameCacheTableEntity, NameCacheEntity> >( (entity, func) => tableEntity = entity) .ReturnsAsync(resp); var ret = await nameCacheRepository.DeleteNameAsync(NameCacheEntityType.DesiredProperty, newNameCache.Name); Assert.True(ret); Assert.NotNull(tableEntity); Assert.Equal(newNameCache.Name, tableEntity.Name); }