public async Task CreateAsync_Many_Codes()
        {
            var discount = new SendOwlDiscount
            {
                Name  = TestDiscountName + " many_codes",
                Codes = new List <string> {
                    "code1", "code2"
                },
                Percentage_discount = "25.0",
                Use_limited_type    = LimitingType.Many_codes_one_use
            };

            var result = await endpoint.CreateAsync(discount);

            CreatedDiscountIds.Add(result.Id);

            //It takes a few seconds for SendOwl API to create multiple codes. Wait and fetch resource again
            await Task.Delay(5000);

            result = await endpoint.GetAsync(result.Id);

            result.Name.ShouldBe(discount.Name);
            result.Percentage_discount.ShouldBe(discount.Percentage_discount);
            result.Codes.Count.ShouldBe(discount.Codes.Count);
            result.Codes.ShouldContain(discount.Codes.First());
            result.Codes.ShouldContain(discount.Codes.Last());
            result.Created_at.Date.ShouldBe(DateTime.UtcNow.Date);
            result.Updated_at.Date.ShouldBe(DateTime.UtcNow.Date);
        }
        public async Task DeleteAsync()
        {
            var discount = new SendOwlDiscount
            {
                Name           = TestDiscountName + "[Delete]",
                Fixed_discount = "25.0"
            };

            var result = await endpoint.CreateAsync(discount);

            CreatedDiscountIds.Add(result.Id);
            result.ShouldNotBeNull();
            await Task.Delay(5000); //API returns 500 if deleting too fast after creation

            await endpoint.DeleteAsync(result.Id);
        }
        public async Task UpdateAsync()
        {
            var discount = new SendOwlDiscount
            {
                Name = TestDiscountName + "[Update]",
                Percentage_discount = "15.5"
            };

            var created = await endpoint.CreateAsync(discount);

            CreatedDiscountIds.Add(created.Id);
            created.Percentage_discount.ShouldBe(discount.Percentage_discount);
            created.Name.ShouldBe(discount.Name);

            created.Percentage_discount = "5.0";
            created.Usage_limit         = 2;

            var updatedDiscount = await endpoint.UpdateAsync(created);

            updatedDiscount.Percentage_discount.ShouldBe(created.Percentage_discount);
            updatedDiscount.Usage_limit.ShouldBe(created.Usage_limit);
        }
        public async Task CreateAsync_Single_Code()
        {
            var discount = new SendOwlDiscount
            {
                Name = TestDiscountName + " single_code",
                Minimum_cart_value = "50.00",
                Code           = "my-code",
                Usage_limit    = 18,
                Fixed_discount = "14.99",
            };

            var result = await endpoint.CreateAsync(discount);

            CreatedDiscountIds.Add(result.Id);

            result.Name.ShouldBe(discount.Name);
            result.Minimum_cart_value.ShouldBe(discount.Minimum_cart_value);
            result.Usage_limit.ShouldBe(discount.Usage_limit);
            result.Fixed_discount.ShouldBe(discount.Fixed_discount);
            result.Codes.Count.ShouldBe(1);
            result.Code.ShouldContain(discount.Code);
            result.Created_at.Date.ShouldBe(DateTime.UtcNow.Date);
            result.Updated_at.Date.ShouldBe(DateTime.UtcNow.Date);
        }