public void Should_return_a_query_complement_and_dynamic_parametes_with_Status()
        {
            var filters = new PaymentTransactionFilters()
            {
                Status = "Autorizado"
            };

            var(queryComplement, parameters) = new PaymentTransactionQueryBuilder(filters)
                                               .StatusQuery()
                                               .Build();

            Assert.IsTrue(queryComplement.Contains(@"Status in @Status"));
            Assert.IsTrue(parameters.Get <string[]>("Status").Any());
        }
        public void Should_return_a_query_complement_and_dynamic_parametes_with_Payment_Methods()
        {
            var filters = new PaymentTransactionFilters()
            {
                PaymentMethods = "Crédito à Vista, Crédito parcelado"
            };

            var(queryComplement, parameters) = new PaymentTransactionQueryBuilder(filters)
                                               .PaymentMethodsQuery()
                                               .Build();

            Assert.IsTrue(queryComplement.Contains(@"PaymentMethod in @PaymentMethods"));
            Assert.IsTrue(parameters.Get <string[]>("PaymentMethods").Any());
        }
        public void Should_return_a_query_complement_and_dynamic_parametes_with_Card_Brand_Names()
        {
            var filters = new PaymentTransactionFilters()
            {
                CardBrandNames = "Visa, Mastercard, Elo"
            };

            var(queryComplement, parameters) = new PaymentTransactionQueryBuilder(filters)
                                               .CardBrandNamesQuery()
                                               .Build();

            Assert.IsTrue(queryComplement.Contains(@"CardBrandName in @CardBrandNames"));
            Assert.IsTrue(parameters.Get <string[]>("CardBrandNames").Any());
        }
        public void Should_return_a_query_complement_and_dynamic_parametes_with_Acquirer_Names()
        {
            var filters = new PaymentTransactionFilters()
            {
                AcquirerNames = "Stone, Cielo, Rede"
            };

            var(queryComplement, parameters) = new PaymentTransactionQueryBuilder(filters)
                                               .AcquirerNamesQuery()
                                               .Build();

            Assert.IsTrue(queryComplement.Contains(@"AcquirerName in @AcquirerNames"));
            Assert.IsTrue(parameters.Get <string[]>("AcquirerNames").Any());
        }
        public void Should_return_a_query_complement_and_dynamic_parametes_with_Checkout_Codes()
        {
            var filters = new PaymentTransactionFilters()
            {
                CheckoutCodes = "38687,38688"
            };

            var(queryComplement, parameters) = new PaymentTransactionQueryBuilder(filters)
                                               .CheckoutCodesQuery()
                                               .Build();

            Assert.IsTrue(queryComplement.Contains(@"CheckoutCode in @CheckoutCodes"));
            Assert.IsTrue(parameters.Get <string[]>("CheckoutCodes").Any());
        }
        public void Should_return_a_query_complement_and_dynamic_parametes_with_Merchant_Cnpj()
        {
            var filters = new PaymentTransactionFilters()
            {
                MerchantCnpjs = "13705903000110,09429293000100"
            };

            var(queryComplement, parameters) = new PaymentTransactionQueryBuilder(filters)
                                               .MerchantCnpjsQuery()
                                               .Build();

            Assert.IsTrue(queryComplement.Contains(@"MerchantCnpj in @MerchantCnpjs"));
            Assert.IsTrue(parameters.Get <string[]>("MerchantCnpjs").Any());
        }
        public void Should_return_a_query_complement_and_dynamic_parametes_with_exactly_AuthorizationDateStart_and_AuthorizationDateEnd()
        {
            var filters = new PaymentTransactionFilters()
            {
                AuthorizationDateStart = DateTime.Parse("2018-03-01"), AuthorizationDateEnd = DateTime.Parse("2018-03-11")
            };

            var(queryComplement, parameters) = new PaymentTransactionQueryBuilder(filters)
                                               .AuthorizationDateQuery()
                                               .Build();

            Assert.IsTrue(queryComplement.Contains(@"AcquirerAuthorizationDateTime BETWEEN @AuthorizationDateStart AND @AuthorizationDateEnd"));
            Assert.IsTrue(parameters.Get <DateTime>("AuthorizationDateStart") == DateTime.Parse("2018-03-01"));
            Assert.IsTrue(parameters.Get <DateTime>("AuthorizationDateEnd") == DateTime.Parse("2018-03-11"));
        }
        public void Should_return_a_query_complement_and_dynamic_parametes_with_CreatedDateStart_and_CreatedDateEnd_with_24_hours_after()
        {
            var filters = new PaymentTransactionFilters()
            {
                CreatedDateStart = DateTime.Parse("2018-03-01")
            };

            var(queryComplement, parameters) = new PaymentTransactionQueryBuilder(filters)
                                               .CreatedDateQuery()
                                               .Build();

            Assert.IsTrue(queryComplement.Contains(@"CreatedAt BETWEEN @CreatedDateStart AND @CreatedDateEnd"));
            Assert.IsTrue(parameters.Get <DateTime>("CreatedDateStart") == DateTime.Parse("2018-03-01"));
            Assert.IsTrue(parameters.Get <DateTime>("CreatedDateEnd") == DateTime.Parse("2018-03-01").AddHours(24));
        }