public void InsertOrMergeEntity_InvalidTable_ExpectsException()
        {
            ITableServiceClient client = new TableServiceClient(_accountSettings);
            var tableName = _util.GenerateSampleTableName();
            var sampleEntity = new SampleEntity()
            {
                PartitionKey = "1",
                RowKey = "A",
                ExtraValue = "Extra"
            };

            client.InsertOrMergeEntity(tableName, sampleEntity);

            // expects exception
        }
        public void InsertEntity_ValidTable_InsertsEntityInTable()
        {
            ITableServiceClient client = new TableServiceClient(_accountSettings);
            var tableName = _util.GenerateSampleTableName();
            _util.CreateTable(tableName);
            var sampleEntity = new SampleEntity() { 
                PartitionKey = "1",
                RowKey = "A"
            };

            client.InsertEntity(tableName, sampleEntity);

            _util.AssertEntityExists(tableName, sampleEntity);
        }
        public async Task InsertOrMergeEntityAsync_ExistingEntity_UpdatesEntityInTable()
        {
            ITableServiceClient client = new TableServiceClient(_accountSettings);
            var tableName = _util.GenerateSampleTableName();
            _util.CreateTable(tableName);
            var sampleEntity = new SampleEntity()
            {
                PartitionKey = "1",
                RowKey = "A",
                ExtraValue = "Extra"
            };
            _util.InsertTableEntity(tableName, sampleEntity.PartitionKey, sampleEntity.RowKey);

            await client.InsertOrMergeEntityAsync(tableName, sampleEntity);

            _util.AssertEntityExists(tableName, sampleEntity);
            var entity = _util.GetEntity<SampleMSEntity>(tableName, sampleEntity.PartitionKey, sampleEntity.RowKey);
            Assert.AreEqual(sampleEntity.ExtraValue, entity.ExtraValue);
        }
        public void MergeEntity_ExistingEntityWithMismatchedRequiredETag_ThrowsException()
        {
            ITableServiceClient client = new TableServiceClient(_accountSettings);
            var tableName = _util.GenerateSampleTableName();
            _util.CreateTable(tableName);
            var sampleEntity = new SampleEntity()
            {
                PartitionKey = "1",
                RowKey = "A",
                ExtraValue = "Extra"
            };
            var etag = _util.InsertTableEntity(tableName, sampleEntity.PartitionKey, sampleEntity.RowKey);

            client.MergeEntity(tableName, sampleEntity, etag.Replace("201", "XXX"));    // etag includes a date string, so we can easily swap out part to create an invalid one

            // expects exception
        }
        public void MergeEntity_ExistingEntityWithMatchingRequiredETag_MergesEntityInTable()
        {
            ITableServiceClient client = new TableServiceClient(_accountSettings);
            var tableName = _util.GenerateSampleTableName();
            _util.CreateTable(tableName);
            var sampleEntity = new SampleEntity()
            {
                PartitionKey = "1",
                RowKey = "A",
                ExtraValue = "Extra"
            };
            var etag = _util.InsertTableEntity(tableName, sampleEntity.PartitionKey, sampleEntity.RowKey);

            client.MergeEntity(tableName, sampleEntity, etag);

            _util.AssertEntityExists(tableName, sampleEntity);
            var entity = _util.GetEntity<SampleMSEntity>(tableName, sampleEntity.PartitionKey, sampleEntity.RowKey);
            Assert.AreEqual(sampleEntity.ExtraValue, entity.ExtraValue);
        }
        public void UpdateEntity_NonexistentEntity_ExpectsException()
        {
            ITableServiceClient client = new TableServiceClient(_accountSettings);
            var tableName = _util.GenerateSampleTableName();
            var sampleEntity = new SampleEntity()
            {
                PartitionKey = "1",
                RowKey = "A",
                ExtraValue = "Extra"
            };

            client.UpdateEntity(tableName, sampleEntity);

            // expects exception
        }
        public void InsertEntity_PreexistingEntity_ExpectsException()
        {
            ITableServiceClient client = new TableServiceClient(_accountSettings);
            var tableName = _util.GenerateSampleTableName();
            _util.CreateTable(tableName);
            var sampleEntity = new SampleEntity()
            {
                PartitionKey = "1",
                RowKey = "A"
            };
            _util.InsertTableEntity(tableName, sampleEntity.PartitionKey, sampleEntity.RowKey);

            client.InsertEntity(tableName, sampleEntity);

            // expects exception
        }