public void PutTransactionUpdatesTransaction() { int transactionIdForTest = 1; decimal newTransactionAmount; //Arrange: Instantiate TransactionsController so its methods can be called var transactionController = new TransactionsController(); //Act: // Get an existing transaction, change it, and // pass it to PutTransaction IHttpActionResult result = transactionController.GetTransaction(transactionIdForTest); OkNegotiatedContentResult<TransactionModel> contentResult = (OkNegotiatedContentResult<TransactionModel>)result; TransactionModel updatedTransaction = (TransactionModel)contentResult.Content; decimal amountBeforeUpdate = updatedTransaction.Amount; updatedTransaction.Amount += 500.23M; newTransactionAmount = updatedTransaction.Amount; result = transactionController.PutTransaction (updatedTransaction.TransactionId, updatedTransaction); //Assert: // Verify that HTTP status code is OK // Get the transaction and verify that it was updated var statusCode = (StatusCodeResult)result; Assert.IsTrue(statusCode.StatusCode == System.Net.HttpStatusCode.NoContent); result = transactionController.GetTransaction(transactionIdForTest); Assert.IsInstanceOfType(result, typeof(OkNegotiatedContentResult<TransactionModel>)); OkNegotiatedContentResult<TransactionModel> readContentResult = (OkNegotiatedContentResult<TransactionModel>)result; updatedTransaction = (TransactionModel)readContentResult.Content; Assert.IsTrue(updatedTransaction.Amount == newTransactionAmount); updatedTransaction.Amount = amountBeforeUpdate; /* updatedTransaction.Amount = 1000M; */ result = transactionController.PutTransaction (updatedTransaction.TransactionId, updatedTransaction); }
[TestMethod] //{4} public void PutTransactionUpdateTransaction() { IHttpActionResult result; CreatedAtRouteNegotiatedContentResult<TransactionModel> contentResult; OkNegotiatedContentResult<TransactionModel> transactionResult; //Arrange using (var transactionsController = new TransactionsController()) { var tsModel = new TransactionModel { Amount = 123, }; result = transactionsController.PostTransaction(tsModel); //Cast result as Content Result so that I can gather information from ContentResult contentResult = (CreatedAtRouteNegotiatedContentResult<TransactionModel>)result; } using (var secondTransactionsController = new TransactionsController()) { //Result contains the customer I had JUST createad result = secondTransactionsController.GetTransaction(1); Assert.IsNotInstanceOfType(result, typeof(NotFoundResult)); Assert.IsInstanceOfType(result, typeof(OkNegotiatedContentResult<TransactionModel>)); //Get transactionModel from 'result' transactionResult = (OkNegotiatedContentResult<TransactionModel>)result; } using (var thirdTransactionsController = new TransactionsController()) { var modifiedContent = transactionResult.Content; modifiedContent.Amount += 5; //Act result = thirdTransactionsController.PutTransaction(transactionResult.Content.TransactionId, modifiedContent); //Assert Assert.IsInstanceOfType(result, typeof(StatusCodeResult)); } }