public void QueryTransactions_OppositeFilters_NoResults() { var filters = new List <Filter> { new Filter { Value = "test", Field = Field.Email, Operator = Operator.Contains }, new Filter { Action = FilterAction.Exclude, Value = "test", Field = Field.Email, Operator = Operator.Contains } }; var request = TestHelper.GetQueryTransactionModel(filters); var response = CheckoutClient.ReportingService.QueryTransaction(request); response.Should().NotBeNull(); response.HttpStatusCode.Should().Be(HttpStatusCode.OK); response.Model.TotalRecords.Should().Be(0); }
public void QueryTransactions_ShouldAllowFilteringWithValue(string value) { var filter = new Filter { Value = value, Field = Field.Email, Operator = Operator.Contains }; var request = TestHelper.GetQueryTransactionModel(new List <Filter> { filter }); var response = CheckoutClient.ReportingService.QueryTransaction(request); response.Should().NotBeNull(); if (string.IsNullOrEmpty(value)) { response.HttpStatusCode.Should().Be(HttpStatusCode.BadRequest); response.HasError.Should().BeTrue(); } else { response.HttpStatusCode.Should().Be(HttpStatusCode.OK); response.Model.Data.Should().OnlyContain(t => t.Customer.Email.Contains(value)); } }
public void QueryTransactions_ShouldAllowFilteringByField(Field?field) { string cardNumber; var charge = CreateChargeWithNewTrackId(out cardNumber); var filter = new Filter { Field = field, Value = GetChargePropertyValueFromField(charge, field, cardNumber) }; var request = TestHelper.GetQueryTransactionModel(new List <Filter> { filter }); var response = CheckoutClient.ReportingService.QueryTransaction(request); response.Should().NotBeNull(); if (field.HasValue) { response.HttpStatusCode.Should().Be(HttpStatusCode.OK); response.Model.TotalRecords.Should().BeGreaterThan(0); if (field == Field.Status) { response.Model.Data.Should().OnlyContain(t => t.Status.Equals(filter.Value, _ignoreCase)); } else if (field == Field.Email) { response.Model.Data.Should().OnlyContain(t => t.Customer.Email.Equals(filter.Value, _ignoreCase)); } else { response.Model.Data.Should().Contain(t => t.TrackId == charge.TrackId); } } else { response.HttpStatusCode.Should().Be(HttpStatusCode.BadRequest); response.HasError.Should().BeTrue(); } }
public void QueryTransactions_ShouldAllowFilteringBySearchString(string searchValue) { var request = TestHelper.GetQueryTransactionModel(searchValue); var response = CheckoutClient.ReportingService.QueryTransaction(request); response.Should().NotBeNull(); response.HttpStatusCode.Should().Be(HttpStatusCode.OK); response.Model.TotalRecords.Should().BeGreaterThan(0); // the following fields will be checked if they contain the input search value: var assertions = new List <bool> { response.Model.Data.Any(d => d.Id.Contains(request.Search, _ignoreCase)), response.Model.Data.Any(d => d.OriginId.Contains(request.Search, _ignoreCase)), response.Model.Data.Any(d => d.TrackId.Contains(request.Search, _ignoreCase)), response.Model.Data.Any(d => d.Status.Contains(request.Search, _ignoreCase)), response.Model.Data.Any(d => d.Customer.Email.Contains(request.Search, _ignoreCase)) }; // at least one of the fields contains the search value assertions.Should().Contain(assert => assert); }
public void QueryTransactions_ShouldAllowColumnSortingBy(SortColumn?sortColumn) { var request = TestHelper.GetQueryTransactionModel(string.Empty, null, null, sortColumn); var response = CheckoutClient.ReportingService.QueryTransaction(request); response.Should().NotBeNull(); response.HttpStatusCode.Should().Be(HttpStatusCode.OK); if (!sortColumn.HasValue || sortColumn == SortColumn.Date) { response.Model.Data.Should().BeInDescendingOrder(x => x.Date); } else if (sortColumn == SortColumn.Name || sortColumn == SortColumn.Email) { var expression = ReflectionHelper.CreateExpression <Transaction>("Customer." + sortColumn); response.Model.Data.Should().BeInAscendingOrder(expression); } else { var expression = ReflectionHelper.CreateExpression <Transaction>(sortColumn); response.Model.Data.Should().BeInAscendingOrder(expression); } }
public void QueryTransactions_ShouldAllowFilteringWithAction(FilterAction?action, string value) { var filter = new Filter { Action = action, Value = value, Field = Field.Email, Operator = Operator.Contains }; var request = TestHelper.GetQueryTransactionModel(new List <Filter> { filter }); var response = CheckoutClient.ReportingService.QueryTransaction(request); response.Should().NotBeNull(); response.HttpStatusCode.Should().Be(HttpStatusCode.OK); response.Model.TotalRecords.Should().BeGreaterThan(0); if (action == FilterAction.Exclude) { response.Model.Data.Should().NotContain(t => t.Customer.Email.Contains(value)); } else { response.Model.Data.Should().OnlyContain(t => t.Customer.Email.Contains(value)); } }
public void QueryTransactions_CreateChargeAndCapture_BothTransactionsFoundBy(Field?field) { string cardNumber; var charge = CreateChargeWithNewTrackId(out cardNumber); var filter = new Filter { Field = field, Value = GetChargePropertyValueFromField(charge, field, cardNumber) }; var request = TestHelper.GetQueryTransactionModel(new List <Filter> { filter }); var firstQueryResponse = CheckoutClient.ReportingService.QueryTransaction(request); #region Assert First Query Response firstQueryResponse.Should().NotBeNull(); if (field.HasValue) { firstQueryResponse.HttpStatusCode.Should().Be(HttpStatusCode.OK); firstQueryResponse.Model.TotalRecords.Should().BeGreaterThan(0); if (field == Field.Status) { firstQueryResponse.Model.Data.Should().OnlyContain(t => t.Status.Equals(filter.Value, _ignoreCase)); } else if (field == Field.Email) { firstQueryResponse.Model.Data.Should() .OnlyContain(t => t.Customer.Email.Equals(filter.Value, _ignoreCase)); } else { firstQueryResponse.Model.Data.Should().OnlyContain(t => t.TrackId.Equals(charge.TrackId)); } } else { firstQueryResponse.HttpStatusCode.Should().Be(HttpStatusCode.BadRequest); firstQueryResponse.HasError.Should().BeTrue(); } #endregion Assert First Query Response // capture charge and query 2nd time var chargeCapture = TestHelper.GetChargeCaptureModel(charge.Value); chargeCapture.TrackId = charge.TrackId; var captureChargeResponse = CheckoutClient.ChargeService.CaptureCharge(charge.Id, chargeCapture); captureChargeResponse.Should().NotBeNull(); captureChargeResponse.HttpStatusCode.Should().Be(HttpStatusCode.OK); var secondQueryResponse = CheckoutClient.ReportingService.QueryTransaction(request); #region Assert Second Query Response secondQueryResponse.Should().NotBeNull(); if (field.HasValue) { secondQueryResponse.HttpStatusCode.Should().Be(HttpStatusCode.OK); secondQueryResponse.Model.TotalRecords.Should().BeGreaterThan(0); if (field == Field.Status) { secondQueryResponse.Model.Data.Should().OnlyContain(t => t.Status.Equals(filter.Value, _ignoreCase)); } else if (field == Field.Email) { secondQueryResponse.Model.Data.Should() .OnlyContain(t => t.Customer.Email.Equals(filter.Value, _ignoreCase)); } else if (field == Field.CardNumber || field == Field.ChargeId) { secondQueryResponse.Model.Data.Should() .OnlyContain(t => t.TrackId == charge.TrackId) .And.HaveCount(1); } else if (field == Field.TrackId) { secondQueryResponse.Model.Data.Should() .OnlyContain(t => t.TrackId == charge.TrackId) .And.HaveCount(2); } } else { secondQueryResponse.HttpStatusCode.Should().Be(HttpStatusCode.BadRequest); secondQueryResponse.HasError.Should().BeTrue(); } #endregion Assert Second Query Response }