示例#1
0
        public async Task TestMusicRepositoryDBClientAsync()
        {
            IAmazonDynamoDB DDBClient = new AmazonDynamoDBClient("dummy", "dummy",
                                                                 new AmazonDynamoDBConfig
            {
                ServiceURL = "http://localhost:8000",
                UseHttp    = true,
            }
                                                                 );

            MusicRepository repo = new MusicRepository(DDBClient);

            string hashKey  = "No One You Know";
            string rangeKey = "My Doc Spot";

            Dictionary <string, AttributeValue> item = new Dictionary <string, AttributeValue>
            {
                { "Artist", new AttributeValue {
                      S = hashKey
                  } },
                { "SongTitle", new AttributeValue {
                      S = rangeKey
                  } },
                { "AlbumTitle", new AttributeValue {
                      S = "Hey Now"
                  } },
                { "CriticRating", new AttributeValue {
                      N = "8.4"
                  } },
                { "Genre", new AttributeValue {
                      S = "Country"
                  } },
                { "Year", new AttributeValue {
                      N = "1984"
                  } }
            };

            var putItemResponse = await repo.PutItemAsync(item);

            Assert.IsNotNull(putItemResponse);
            Assert.AreEqual(putItemResponse.HttpStatusCode, HttpStatusCode.OK);


            GetItemResponse getItemResponse = await repo.GetItemAsync(hashKey, rangeKey);

            Assert.IsNotNull(getItemResponse);
            Assert.AreEqual(getItemResponse.HttpStatusCode, HttpStatusCode.OK);

            Assert.IsTrue(getItemResponse.Item.TryGetValue("Artist", out AttributeValue valueArtist));
            Assert.IsNotNull(valueArtist.S);
            Assert.AreEqual(hashKey, valueArtist.S);

            Assert.IsTrue(getItemResponse.Item.TryGetValue("SongTitle", out AttributeValue valueSongTitle));
            Assert.IsNotNull(valueSongTitle.S);
            Assert.AreEqual(rangeKey, valueSongTitle.S);

            DeleteItemResponse deleteItemResponse = await repo.DeleteItemAsync(hashKey, rangeKey);

            Assert.IsNotNull(deleteItemResponse);
            Assert.AreEqual(deleteItemResponse.HttpStatusCode, HttpStatusCode.OK);


            GetItemResponse getItemResponse2 = await repo.GetItemAsync(hashKey, rangeKey);

            Assert.IsNotNull(getItemResponse2);
            Assert.AreEqual(getItemResponse2.HttpStatusCode, HttpStatusCode.OK);
            Assert.AreEqual(getItemResponse2.Item.Count, 0);
        }