public IActionResult GetTransactions([FromRoute] string?accountId, [FromQuery(Name = "oldest-time")] DateTime?fromDate = default, [FromQuery(Name = "newest-time")] DateTime?toDate = default, [FromQuery(Name = "min-amount")] decimal?minAmount = default, [FromQuery(Name = "max-amount")] decimal?maxAmount = default, string?text = default) { var args = new TransactionArgs { FromDate = fromDate, ToDate = toDate, MinAmount = minAmount, MaxAmount = maxAmount, Text = text }; return(new WebApiGet <TransactionCollectionResult, TransactionCollection, Transaction>(this, () => _manager.GetTransactionsAsync(accountId, args, WebApiQueryString.CreatePagingArgs(this)), operationType: OperationType.Read, statusCode: HttpStatusCode.OK, alternateStatusCode: HttpStatusCode.NoContent)); }
public void A110_ArgsValidator_Empty() { var ta = new TransactionArgs(); var r = TransactionArgsValidator.Default.Validate(ta); Assert.IsFalse(r.HasErrors); Assert.AreEqual(DateTime.UtcNow.Date.AddDays(-90), ta.FromDate !.Value.Date); Assert.IsNull(ta.ToDate); Assert.IsNull(ta.MinAmount); Assert.IsNull(ta.MaxAmount); Assert.IsNull(ta.Text); }
public async Task A110_ArgsValidator_Empty() { var ta = new TransactionArgs(); var r = await ValidationTester.Test().RunAsync(async() => await new TransactionArgsValidator().ValidateAsync(ta)); Assert.IsFalse(r !.HasErrors); Assert.AreEqual(DateTime.UtcNow.Date.AddDays(-90), ta.FromDate !.Value.Date); Assert.IsNull(ta.ToDate); Assert.IsNull(ta.MinAmount); Assert.IsNull(ta.MaxAmount); Assert.IsNull(ta.Text); }
public void A150_ArgsValidator_Invalid() { ExpectValidationException.Throws(() => { var ta = new TransactionArgs { FromDate = new DateTime(2020, 03, 01), ToDate = new DateTime(2020, 02, 01), MinAmount = 100m, MaxAmount = 80m, Text = "Best*Buy" }; TransactionArgsValidator.Default.Validate(ta).ThrowOnError(); }, "Oldest time must be less than or equal to Newest time.", "Min Amount must be less than or equal to Max Amount.", "Text contains invalid or non-supported wildcard selection."); }
public void A140_ArgsValidator_ValidDiff() { var ta = new TransactionArgs { FromDate = new DateTime(2020, 03, 01), ToDate = new DateTime(2020, 04, 01), MinAmount = 100m, MaxAmount = 120m, Text = "Best Buy" }; var r = TransactionArgsValidator.Default.Validate(ta); Assert.IsFalse(r.HasErrors); Assert.AreEqual(new DateTime(2020, 03, 01), ta.FromDate); Assert.AreEqual(new DateTime(2020, 04, 01), ta.ToDate); Assert.AreEqual(100m, ta.MinAmount); Assert.AreEqual(120m, ta.MaxAmount); Assert.AreEqual("Best Buy", ta.Text); }
public void A120_ArgsValidator_ToDateOnly() { var ta = new TransactionArgs { ToDate = new DateTime(2020, 03, 01) }; var r = TransactionArgsValidator.Default.Validate(ta); Assert.IsFalse(r.HasErrors); Assert.AreEqual(new DateTime(2020, 03, 01).AddDays(-90), ta.FromDate); Assert.AreEqual(new DateTime(2020, 03, 01), ta.ToDate); Assert.IsNull(ta.MinAmount); Assert.IsNull(ta.MaxAmount); Assert.IsNull(ta.Text); }
public async Task A140_ArgsValidator_ValidDiff() { var ta = new TransactionArgs { FromDate = new DateTime(2020, 03, 01), ToDate = new DateTime(2020, 04, 01), MinAmount = 100m, MaxAmount = 120m, Text = "Best Buy" }; var r = await ValidationTester.Test().RunAsync(async() => await new TransactionArgsValidator().ValidateAsync(ta)); Assert.IsFalse(r !.HasErrors); Assert.AreEqual(new DateTime(2020, 03, 01), ta.FromDate); Assert.AreEqual(new DateTime(2020, 04, 01), ta.ToDate); Assert.AreEqual(100m, ta.MinAmount); Assert.AreEqual(120m, ta.MaxAmount); Assert.AreEqual("Best Buy", ta.Text); }
public async Task A120_ArgsValidator_ToDateOnly() { var ta = new TransactionArgs { ToDate = new DateTime(2020, 03, 01) }; var r = await ValidationTester.Test().RunAsync(async() => await new TransactionArgsValidator().ValidateAsync(ta)); Assert.IsFalse(r !.HasErrors); Assert.AreEqual(new DateTime(2020, 03, 01).AddDays(-90), ta.FromDate); Assert.AreEqual(new DateTime(2020, 03, 01), ta.ToDate); Assert.IsNull(ta.MinAmount); Assert.IsNull(ta.MaxAmount); Assert.IsNull(ta.Text); }
public async Task A150_ArgsValidator_Invalid() { await ValidationTester.Test() .ExpectMessages( "Oldest time must be less than or equal to Newest time.", "Min Amount must be less than or equal to Max Amount.", "Text contains invalid or non-supported wildcard selection.") .RunAsync(async() => { var ta = new TransactionArgs { FromDate = new DateTime(2020, 03, 01), ToDate = new DateTime(2020, 02, 01), MinAmount = 100m, MaxAmount = 80m, Text = "Best*Buy" }; (await new TransactionArgsValidator().ValidateAsync(ta).ConfigureAwait(false)).ThrowOnError(); }); }
public IHttpActionResult UpdateTransactionHash([FromBody] TransactionArgs args) => this.Log(() => Operation.Try(() => args.ThrowIfNull(new MalformedApiArgumentsException())) .Then(opr => _bitlevel.VerifyAndSaveTransactionHash(args.Hash)) .OperationResult(Request));