using System; using System.Web.Mvc; using adMoto.Payments.Core; using adMoto.Payments.Core.Data; using adMoto.Payments.Core.Interfaces; using adMoto.Payments.Web.Controllers; using adMoto.Payments.Web.Models; using NUnit.Framework; namespace adMoto.Payments.Test.Web { [TestFixture] public class PlatnosciControllerTests { private readonly ITranslateManager _translateManager = new FakeTranslation(); private const string MERCHANT_NUMBER = "123"; private readonly int _orderNumber = 9999; private const string CODE_OK = "payment_deposited"; //transakcja potwierdzona do rozliczenia private const string CODE_BAD = "payment_declined"; //transakcja odrzucona private readonly DateTime _data = DateTime.Now; private readonly Function _function = new Function(); //[Test] //[Category("Unit")] //public void Status_Action_Saves_Correct_Transaction() //{ // //Arrange // var repository = new Repository(new FakeDataContext()); // var platnosci = _function.CreateNewPayment(_orderNumber, false, DateTime.Now, 12345); // repository.Insert(platnosci); // repository.SubmitChanges(); // IRepository rep = new Repository(new FakeDataContext()); // var builder = new TestControllerBuilder(); // var controller = new PlatnoscController(null, repository, rep, _translateManager); // builder.InitializeController(controller); // builder.QueryString.Add("MERCHANTNUMBER", MERCHANT_NUMBER); // builder.QueryString.Add("AUTHTIME", DateTime.Now.ToString()); // builder.QueryString.Add("DATATRANSMISJI", DateTime.Now.ToString()); // builder.QueryString.Add("ORDERNUMBER", _orderNumber.ToString()); // builder.QueryString.Add("CURRENTSTATE", CODE_OK); // //Act // controller.Status(); // System.Diagnostics.Debug.WriteLine("rep:" + rep.Count() + " repPl: " + repository.Count() ); // var potwierdzeniaEcard = rep.Find(o => o.ORDERNUMBER == _orderNumber).SingleOrDefault(); // //Assert // Assert.That(potwierdzeniaEcard.MERCHANTNUMBER, Is.EqualTo(MERCHANT_NUMBER)); // //Act // var paymentAfterUpdate = repository.FindOne(_orderNumber); // System.Diagnostics.Debug.WriteLine("Status musi byc 'true'. Jest " + paymentAfterUpdate.Status); // //Assert // Assert.That(paymentAfterUpdate.Status, Is.EqualTo(true)); //} //[Test] //[Category("Unit")] //public void Status_Action_Payment_Is_Not_Update_When_Currentstate_Is_CODE_BAD() //{ // //Arrange // var repPayment = new Repository(new FakeDataContext()); // var platnosci = _function.CreateNewPayment(_orderNumber, false, DateTime.Now, 12345); // repPayment.Insert(platnosci); // repPayment.SubmitChanges(); // IRepository repConfirm = new Repository(new FakeDataContext()); // var builder = new TestControllerBuilder(); // var controller = new PlatnoscController(null, repPayment, repConfirm, _translateManager); // builder.InitializeController(controller); // builder.QueryString.Add("MERCHANTNUMBER", MERCHANT_NUMBER); // builder.QueryString.Add("AUTHTIME", DateTime.Now.ToString()); // builder.QueryString.Add("DATATRANSMISJI", DateTime.Now.ToString()); // builder.QueryString.Add("ORDERNUMBER", _orderNumber.ToString()); // builder.QueryString.Add("CURRENTSTATE", CODE_BAD); // //Act // controller.Status(); // var potwierdzeniaEcard = repConfirm.Find(o => o.ORDERNUMBER == _orderNumber).SingleOrDefault(); // //Assert // Assert.That(potwierdzeniaEcard.MERCHANTNUMBER, Is.EqualTo(MERCHANT_NUMBER)); // //Act // var paymentAfterUpdate = repPayment.FindOne(_orderNumber); // System.Diagnostics.Debug.WriteLine("Status musi byc 'false'. Jest " + paymentAfterUpdate.Status); // //Assert // Assert.That(paymentAfterUpdate.Status, Is.EqualTo(false)); //} [Test] [Category("Unit")] public void Update_Status_Payment_Is_Update_When_Currentstate_Is_CODE_OK() { //Arrange IRepository repPayment = new Repository(new FakeDataContext()); PlatnosciEcard platnosc = _function.CreateNewPayment(_orderNumber, false, _data, 1); repPayment.Insert(platnosc); //Act var controller = new PlatnoscController(null, repPayment, null, _translateManager); controller.UpdateStatus(_orderNumber, CODE_OK); var paymentAfterUpdate = repPayment.FindOne(_orderNumber); //Assert System.Diagnostics.Debug.WriteLine("Status musi byc 'true'. Jest " + paymentAfterUpdate.Status); Assert.That(paymentAfterUpdate.Status, Is.EqualTo(true)); } [Test] [Category("Unit")] public void Update_Status_Payment_Is_Not_Update_When_Currentstate_Is_CODE_BAD() { //Arrange IRepository repPayment = new Repository(new FakeDataContext()); var platnosc = _function.CreateNewPayment(_orderNumber, false, _data, 1); repPayment.Insert(platnosc); var controller = new PlatnoscController(null, repPayment, null, _translateManager); //Act controller.UpdateStatus(_orderNumber, CODE_BAD); var paymentAfterUpdate = repPayment.FindOne(i => i.ORDERNUMBER == _orderNumber); //Assert System.Diagnostics.Debug.WriteLine("Status musi byc 'false'. Jest " + paymentAfterUpdate.Status); Assert.That(paymentAfterUpdate.Status, Is.EqualTo(false)); } [Test] [Category("Unit")] public void Show_Action_Returns_Error_View_When_Passing_Incorrect_User_Identity() { //Arrange IRepository repVPayment = new Repository(new FakeDataContext()); var platnosc = _function.CreateInvoice(123, "nip1", "", 0, 0); repVPayment.Insert(platnosc); var controller = new PlatnoscController(repVPayment, null, null, _translateManager); controller.ControllerContext = _function.CreateControllerContext("nip2"); //Act var result = controller.Show("123","pl") as ViewResult; var error = (ErrorViewData)result.ViewData.Model; //Assert Assert.That(error.Error, Is.EqualTo("weryfikacja")); Assert.That(result.ViewName, Is.EqualTo("Error1")); } [Test] [Category("Unit")] public void Show_Action_Returns_Error_View_When_Payment_Is_Not_Found() { //Arrange IRepository repVPayment = new Repository(new FakeDataContext()); var platnosc = _function.CreateInvoice(123, "nip2", "", 0, 0); repVPayment.Insert(platnosc); var controller = new PlatnoscController(repVPayment, null, null, _translateManager); controller.ControllerContext = _function.CreateControllerContext("nip2"); //Act var result = controller.Show("1234", "pl") as ViewResult; var error = (ErrorViewData)result.ViewData.Model; //Assert Assert.That(error.Error, Is.EqualTo("brakdanych")); Assert.That(result.ViewName, Is.EqualTo("Error1")); } [Test] [Category("Unit")] public void Show_Action_Returns_Paid_View_When_Payment_Is_Paid() { //Arrange //Tworzymy takie dane aby platnosc o danym id byla juz zaplacona var repVPayment = new Repository(new FakeDataContext()); var invoice = _function.CreateInvoice(123, "nip1", "aaa", 0, 0); repVPayment.Insert(invoice); repVPayment.SubmitChanges(); var repConfirm = new Repository(new FakeDataContext()); var confirm = _function.CreateConfirm(CODE_OK, 123456); repConfirm.Insert(confirm); repConfirm.SubmitChanges(); var controller = new PlatnoscController(repVPayment, null, repConfirm, _translateManager); controller.ControllerContext = _function.CreateControllerContext("nip1"); //Act var result = controller.Show("123", "pl") as ViewResult; var view = (InvoiceDetailsViewData)result.ViewData.Model; //Assert Assert.That(result.ViewName, Is.EqualTo("Paid")); Assert.That(view.Info, Is.EqualTo("zaplacono")); } [Test] [Category("Unit")] public void Show_Action_Returns_View_For_Payment_When_Payment_is_Outstanding() { //Arrange IRepository repVPayment = new Repository(new FakeDataContext()); var platnosc = _function.CreateInvoice(123, "nip1", "numer", 200, 0); repVPayment.Insert(platnosc); var repConfirm = new Repository(new FakeDataContext()); var confirm = _function.CreateConfirm(CODE_OK, 1); repConfirm.Insert(confirm); repConfirm.SubmitChanges(); var controller = new PlatnoscController(repVPayment, null, repConfirm, _translateManager); controller.ControllerContext = _function.CreateControllerContext("nip1"); //Act var result = controller.Show("123", "pl") as ViewResult; var view = (InvoiceDetailsViewData)result.ViewData.Model; System.Diagnostics.Debug.WriteLine("Brutto 200: " + view.Invoice.Brutto); System.Diagnostics.Debug.WriteLine("Nr Faktury musi byc 'numer'. Jest " + view.Invoice.Faktura_Numer); //Assert Assert.That(view.Invoice.Brutto, Is.EqualTo(200)); Assert.That(view.Invoice.Faktura_Numer, Is.EqualTo("numer")); } [Test] [Category("Unit")] public void AfterPay_Show_Action_Returns_Error_When_Name_Is_Null() { //Arrange IRepository repVPayment = new Repository(new FakeDataContext()); var platnosc = _function.CreateInvoice(123, "nip1", "numer", 200, 0); repVPayment.Insert(platnosc); var controller = new PlatnoscController(repVPayment, null, null, _translateManager); controller.ControllerContext = _function.CreateControllerContext("nip1"); Payer payer = _function.CreatePayer(123, "", "test"); //Brak imienia //Act controller.Show(payer, "pl"); //Assert Assert.That(controller.ModelState.IsValid, Is.False); } [Test] [Category("Unit")] public void AfterPay_Show_Action_Returns_Error_When_Surname_Is_Null() { //Arrange IRepository repVPayment = new Repository(new FakeDataContext()); var platnosc = _function.CreateInvoice(123, "nip1", "numer", 200, 0); repVPayment.Insert(platnosc); var controller = new PlatnoscController(repVPayment, null, null, _translateManager); controller.ControllerContext = _function.CreateControllerContext("nip1"); Payer payer = _function.CreatePayer(123, "test", ""); //Brak nazwiska //Act controller.Show(payer, "pl"); //Assert Assert.That(controller.ModelState.IsValid, Is.False); } [Test] [Category("Unit")] public void AfterPay_Show_Action_Returns_Error_When_Name_Is_Too_Long() { //Arrange IRepository repVPayment = new Repository(new FakeDataContext()); var platnosc = _function.CreateInvoice(123, "nip1", "numer", 200, 0); repVPayment.Insert(platnosc); var controller = new PlatnoscController(repVPayment, null, null, _translateManager); controller.ControllerContext = _function.CreateControllerContext("nip1"); var name = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; var payer = _function.CreatePayer(123, name, "test"); //Act controller.Show(payer, "pl"); //Assert Assert.That(controller.ModelState.IsValid, Is.False); } [Test] [Category("Unit")] public void AfterPay_Show_Action_Returns_Error_When_Surname_Is_Too_Long() { //Arrange IRepository repVPayment = new Repository(new FakeDataContext()); var platnosc = _function.CreateInvoice(123, "nip1", "numer", 200, 0); repVPayment.Insert(platnosc); var controller = new PlatnoscController(repVPayment, null, null, _translateManager); controller.ControllerContext = _function.CreateControllerContext("nip1"); var surname = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; var payer = _function.CreatePayer(123, "test", surname); //Act controller.Show(payer, "pl"); //Assert Assert.That(controller.ModelState.IsValid, Is.False); } [Test] [Category("Unit")] public void AfterPay_Show_Action_Returns_Error_When_Name_And_Surname_Is_Not_Null() { //Arrange IRepository repVPayment = new Repository(new FakeDataContext()); var platnosc = _function.CreateInvoice(123, "nip1", "numer", 200, 0); repVPayment.Insert(platnosc); var controller = new PlatnoscController(repVPayment, null, null, _translateManager); controller.ControllerContext = _function.CreateControllerContext("nip1"); var payer = _function.CreatePayer(123, "test", "test"); //Act controller.Show(payer, "pl"); //Assert System.Diagnostics.Debug.WriteLine("Model powinien byc 'true'. Jest " + controller.ModelState.IsValid); Assert.That(controller.ModelState.IsValid, Is.True); } } }