public object PostTransfer(long id, [FromBody] JObject transferInfo) { if (!IsValidInt(transferInfo["amount"])) { return(BadRequest("Invalid information for a new transaction.")); } int transferAmount = transferInfo["amount"].ToObject <int>(); try { var transfer = _database.TransferPoints(id, transferAmount); return(new { Id = transfer.TransferId, transfer.UserId, transfer.Amount }); } catch (InsufficientPointsException) { return(BadRequest("There is not enough points for this user.")); } catch (InvalidOperationException) { return(NotFound("User not found.")); } }
public void TransferPointsInsufficientPointsTest() { var loyalty = new LoyaltyManager(_context); var user = loyalty.CreateUser("George", "Clooney", "*****@*****.**"); Assert.AreEqual(0, user.Points); loyalty.TransferPoints(user.UserId, -10); var queriedUser = loyalty.GetUser(user.UserId); Assert.AreEqual(10, user.Points); }
public void TransferPointsTest() { var loyalty = new LoyaltyManager(_context); var user = loyalty.CreateUser("George", "Orwell", "*****@*****.**"); Assert.AreEqual(0, user.Points); var transfer = loyalty.TransferPoints(user.UserId, 10); var queriedUser = loyalty.GetUser(user.UserId); Assert.AreEqual(10, user.Points); Assert.AreEqual(10, transfer.Amount); var queriedTransfer = loyalty.EnumerateTransfers(user.UserId).Last(); Assert.AreEqual(transfer.TransferId, queriedTransfer.TransferId); Assert.AreEqual(10, queriedTransfer.Amount); }