public async Task GetCraftableTest()
        {
            // Arrange
            var itemId = 2;
            var client = SetupMock_Craftable(itemId);
            var config = new Mock <IConfiguration>();

            client.BaseAddress = new Uri("https://localhost:1111");
            config.SetupGet(s => s["ItemsURL"]).Returns("https://localhost:1111/");
            var service = new CraftableService(null, config.Object, new NullLogger <CraftableService>())
            {
                Client = client
            };

            // Act
            var result = await service.GetCraftable(itemId);

            // Assert
            Assert.IsNotNull(result);
            var testItem = TestData.Craftables().FirstOrDefault(c => c.Id == itemId);

            Assert.AreEqual(testItem.Id, result.Id);
            Assert.AreEqual(testItem.Name, result.Name);
            Assert.AreEqual(testItem.Requirement, result.Requirement);
            Assert.AreEqual(testItem.Form, result.Form);
            Assert.AreEqual(testItem.Effect, result.Effect);
            Assert.AreEqual(testItem.Materials, result.Materials);
        }
        public async Task CreateCraftableTest()
        {
            // Arrange
            var client = SetupMock_Craftable();
            var config = new Mock <IConfiguration>();

            client.BaseAddress = new Uri("https://localhost:1111/");
            config.SetupGet(s => s["ItemsURL"]).Returns("https://localhost:1111/");
            var service = new CraftableService(null, config.Object, new NullLogger <CraftableService>())
            {
                Client = client
            };

            // Act
            var newItem = new CraftableDTO
            {
                Id          = 12,
                Name        = "NEW",
                Requirement = "NEW",
                Materials   = "NEW",
                Effect      = "NEW",
                Form        = "NEW"
            };
            var result = await service.CreateCraftable(newItem);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(newItem.Id, result.Id);
            Assert.AreEqual(newItem.Name, result.Name);
            Assert.AreEqual(newItem.Requirement, result.Requirement);
            Assert.AreEqual(newItem.Form, result.Form);
            Assert.AreEqual(newItem.Effect, result.Effect);
            Assert.AreEqual(newItem.Materials, result.Materials);
        }
        public async Task DeleteCraftableTest()
        {
            // Arrange
            var item   = 2;
            var client = SetupMock_Craftable();
            var config = new Mock <IConfiguration>();

            client.BaseAddress = new Uri("https://localhost:1111");
            config.SetupGet(s => s["ItemsURL"]).Returns("https://localhost:1111/");
            var service = new CraftableService(null, config.Object, new NullLogger <CraftableService>())
            {
                Client = client
            };

            // Act
            var result = await service.DeleteCraftable(item);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(item, result);
        }