Index: /trunk/eCard/eCardMVC/adMoto.Payments.Test/adMoto.Payments.Test.csproj
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Test/adMoto.Payments.Test.csproj (revision 975)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Test/adMoto.Payments.Test.csproj (revision 982)
@@ -84,17 +84,17 @@
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="TestRunner.cs" />
-    <Compile Include="Web\eCardDataTests.cs" />
-    <Compile Include="Web\PaymentUtilsTests.cs" />
-    <Compile Include="Web\MerchantControllerTests.cs" />
-    <Compile Include="Web\FakeDataContext.cs" />
-    <Compile Include="Web\FakeTranslation.cs" />
-    <Compile Include="Web\Function.cs" />
-    <Compile Include="Web\PlatnosciControllerTests.cs" />
-    <Compile Include="Web\StatusTest.cs" />
-    <Compile Include="Web\TestMethods.cs" />
-    <Compile Include="Web\UI\AuthenticationTests.cs" />
-    <Compile Include="Web\UI\ValidationTests.cs" />
-    <Compile Include="Web\UI\MerchantTests.cs" />
-    <Compile Include="Web\ValidationMerchantClassTests.cs" />
+    <Compile Include="Utils\eCardDataTests.cs" />
+    <Compile Include="Utils\PaymentUtilsTests.cs" />
+    <Compile Include="Controllers\MerchantControllerTests.cs" />
+    <Compile Include="Fakes\FakeDataContext.cs" />
+    <Compile Include="Fakes\FakeTranslation.cs" />
+    <Compile Include="Fakes\TestDataHelper.cs" />
+    <Compile Include="Controllers\PlatnosciControllerTests.cs" />
+    <Compile Include="Controllers\eCardControllerTests.cs" />
+    <Compile Include="Utils\TestDataHelperTests.cs" />
+    <Compile Include="UI\AuthenticationTests.cs" />
+    <Compile Include="UI\ValidationTests.cs" />
+    <Compile Include="UI\MerchantTests.cs" />
+    <Compile Include="Utils\MerchantTests.cs" />
   </ItemGroup>
   <ItemGroup>
Index: /trunk/eCard/eCardMVC/adMoto.Payments.Test/Utils/eCardDataTests.cs
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Test/Utils/eCardDataTests.cs (revision 982)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Test/Utils/eCardDataTests.cs (revision 982)
@@ -0,0 +1,313 @@
+﻿using System;
+using adMoto.Payments.Core;
+using adMoto.Payments.Core.Data;
+using adMoto.Payments.Test.Fakes;
+using adMoto.Payments.Web.Models;
+using NUnit.Framework;
+
+namespace adMoto.Payments.Test.Utils
+{
+    [TestFixture]
+// ReSharper disable InconsistentNaming
+    public class eCardDataTests
+// ReSharper restore InconsistentNaming
+    { 
+        private readonly TestDataHelper _testDataHelper = new TestDataHelper();
+
+        [Test]
+        [Category("Unit")]
+        public void SetHash_Returns_ZlyHash_When_Passing_Invalid_Merchant()
+        {
+            //Arrange
+            var repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateNewPayment(123, true, DateTime.Now, 1);
+            repPayment.Insert(platnosc);
+           
+            var ecarddata = new MerchantHelper(repPayment);
+           
+            var merchant = new Merchant{
+                                             Payment = platnosc,
+                                             Id = "171485000",
+                                             Password = "ashSeth2",
+                                         };
+
+            //Act
+            var result = ecarddata.SetHash(merchant);
+
+            //Assert
+            Assert.That(result, Is.EqualTo(Merchant.BAD_HASH));
+        }
+        
+        [Test]
+        [Category("Unit")]
+        public void SetHash_Returns_PaymentErrorInfo_When_Passing_Invalid_Payment()
+        {
+            //Arrange
+            var repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateNewPayment(123, true, DateTime.Now, 1);
+            
+            repPayment.Insert(platnosc);
+
+            var ecarddata = new MerchantHelper(repPayment);
+
+            var merchant = new Merchant
+                               {
+                                   Payment = new PlatnosciEcard{
+                                                                     ORDERDESCRIPTION = "dd",
+                                                                     IDFaktury = 21,
+                                                                     Data = DateTime.Now
+                                                                 },
+                                   Id = "171485000",
+                                   Password = "ashSeth2",
+                               };
+           
+            //Act
+            var result = ecarddata.SetHash(merchant);
+
+            //Assert
+            Assert.That(result, Is.EqualTo(Merchant.HASH_ERROR_INFO));
+        }
+        [Test]
+        [Category("Unit")]
+        public void SetHash_Returns_Correct_Hash_When_Passing_Valid_Data()
+        {
+            //Arrange
+            var repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateNewPayment(123, true, DateTime.Now, 1);
+            platnosc.AMOUNT = 229;
+            platnosc.CURRENCY = PaymentsUtils.PLN;
+
+            repPayment.Insert(platnosc);
+
+            var ecarddata = new MerchantHelper(repPayment);
+
+            var merchant = new Merchant
+                               {
+                                   Payment = platnosc,
+                                   Id = "171485000",
+                                   Password = "ashSeth2",
+                               };
+
+            //Act
+            var result = ecarddata.SetHash(merchant);
+
+            //Assert
+            Assert.That(result.Length, Is.GreaterThan(30));
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void SetHash_Returns_Bad_Hash_When_Invoice_Amount_Is_Zero()
+        {
+            //Arrange
+            var repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateNewPayment(123, true, DateTime.Now, 1);
+            platnosc.AMOUNT = 0;
+            platnosc.CURRENCY = PaymentsUtils.PLN;
+
+            repPayment.Insert(platnosc);
+
+            var ecarddata = new MerchantHelper(repPayment);
+
+            var merchant = new Merchant
+                               {
+                                   Payment = platnosc,
+                                   Id = "171485000",
+                                   Password = "ashSeth2",
+                               };
+
+            //Act
+            var result = ecarddata.SetHash(merchant);
+
+            //Assert
+            Assert.That(result, Is.EqualTo(Merchant.BAD_HASH));
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void SetHash_Returns_Bad_Hash_When_Password_Is_Wrong()
+        {
+            //Arrange
+            var repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateNewPayment(123, true, DateTime.Now, 1);
+            platnosc.AMOUNT = 229;
+            platnosc.CURRENCY = PaymentsUtils.PLN;
+
+            repPayment.Insert(platnosc);
+
+            var ecarddata = new MerchantHelper(repPayment);
+
+            var merchant = new Merchant
+                               {
+                                   Payment = platnosc,
+                                   Id = "TEST",
+                                   Password = "test",
+                               };
+
+            //Act
+            var result = ecarddata.SetHash(merchant);
+
+            //Assert
+            Assert.That(result, Is.EqualTo(Merchant.BAD_HASH));
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void SetHash_Returns_Correct_Hash_When_Payment_Amount_Is_Less_Then_100()
+        {
+            //Arrange
+            var repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateNewPayment(123, true, DateTime.Now, 1);
+            platnosc.AMOUNT = 11;
+            platnosc.CURRENCY = PaymentsUtils.PLN;
+
+            repPayment.Insert(platnosc);
+
+            var ecarddata = new MerchantHelper(repPayment);
+
+            var merchant = new Merchant
+                               {
+                                   Payment = platnosc,
+                                   Id = "171485000",
+                                   Password = "ashSeth2",
+                               };
+            
+            //Act
+            var result = ecarddata.SetHash(merchant);
+
+            //Assert
+            Assert.That(result.Length, Is.GreaterThan(30));
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void Create_Merchant_Data_Returns_Invoice_Correct_Amount_When_Merchant_Is_Valid()
+        {
+            //Arrange
+            const int idFaktury = 12345;
+            const int amountInPln = 5000;
+            const int amountInEur = 1300;
+
+            var repVPayment = new Repository<Invoice>(new FakeDataContext());
+            var invoice = _testDataHelper.CreateForeignInvoice(idFaktury, "nip1", "abc/2009", amountInPln, 0, amountInEur, "EUR");
+            repVPayment.Insert(invoice);
+
+            var payer = _testDataHelper.CreatePayer(idFaktury, "test", "test");
+            var repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var eCardData = new MerchantHelper(repPayment);
+
+            //Act
+            eCardData.CreateMerchantData(invoice, payer, "pl", "ahaah");
+            var payment = repPayment.FindOne(i => i.IDFaktury == idFaktury);
+
+            //Assert
+            Assert.That(payment.AMOUNT, Is.EqualTo(amountInEur * 100));
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void Create_Merchant_Data_Returns_Bad_Hash_When_Invoice_Amount_Is_Zero()
+        {
+            //Arrange
+            var ecarddata = new MerchantHelper(new Repository<PlatnosciEcard>(new FakeDataContext()));
+            var invoice = _testDataHelper.CreateInvoice(123, "nip", "abc/2009", 0, 2);
+
+            var payer = _testDataHelper.CreatePayer(123, "test", "test");
+
+            //Act
+            var result = ecarddata.CreateMerchantData(invoice, payer, "PL", "abcd");
+
+            //Assert
+            Assert.That(result.Error, Is.EqualTo("hash"));  //dla wartosci amount=0 eCard zwroci hash o wartości "zlyHash"
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void Create_Merchant_Data_Returns_Error_When_Orderdescription_Is_Not_Valid()
+        {
+            //Arrange
+            var ecarddata = new MerchantHelper(new Repository<PlatnosciEcard>(new FakeDataContext()));
+            var invoice = _testDataHelper.CreateInvoice(123, "nip", "", 200, 2);
+
+            var payer = _testDataHelper.CreatePayer(123, "test", "test");
+
+            //Act
+            var result = ecarddata.CreateMerchantData(invoice, payer, "PL", "abcd");
+
+            //Assert
+            System.Diagnostics.Debug.WriteLine("Error: " + result.Error + " is not valid.");
+            Assert.That(result.Error, Is.EqualTo("orderdescription"));
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void Create_Merchant_Data_Returns_Error_When_Name_Is_Not_Valid()
+        {
+            //Arrange
+            var ecarddata = new MerchantHelper(new Repository<PlatnosciEcard>(new FakeDataContext()));
+            var invoice = _testDataHelper.CreateInvoice(123, "nip", "abc/2009", 200, 2);
+
+            var payer = _testDataHelper.CreatePayer(123, "", "test");
+
+            //Act
+            var result = ecarddata.CreateMerchantData(invoice, payer, "PL", "abcd");
+            
+            //Assert
+            System.Diagnostics.Debug.WriteLine("Error: " + result.Error + " is not valid.");
+            Assert.That(result.Error, Is.EqualTo("name"));
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void Create_Merchant_Data_Returns_Error_When_Surname_Is_Not_Valid()
+        {
+            //Arrange
+            var ecarddata = new MerchantHelper(new Repository<PlatnosciEcard>(new FakeDataContext()));
+            var invoice = _testDataHelper.CreateInvoice(123, "nip", "abc/2009", 200, 2);
+
+            var payer = _testDataHelper.CreatePayer(123, "test", "");
+
+            //Act
+            var result = ecarddata.CreateMerchantData(invoice, payer, "PL", "abcd");
+            
+            //Assert
+            System.Diagnostics.Debug.WriteLine("Error: " + result.Error + " is not valid.");
+            Assert.That(result.Error, Is.EqualTo("surname"));
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void Create_Merchant_Data_Returns_Valid_Merchnt_When_All_Data_Are_Correct()
+        {
+            //Arrange
+            var ecarddata = new MerchantHelper(new Repository<PlatnosciEcard>(new FakeDataContext()));
+            var invoice = _testDataHelper.CreateInvoice(123, "nip", "abc/2009", 200, 2);
+
+            var payer = _testDataHelper.CreatePayer(123, "test", "test");
+
+            //Act
+            var result2 = ecarddata.CreateMerchantData(invoice, payer, "PL", "abcd");
+
+            //Assert
+            System.Diagnostics.Debug.WriteLine("Wszystkie dane sa poprawne!!");
+            Assert.That(result2.Error, Is.EqualTo(null));
+        }
+        
+        [Test]
+        [Category("Unit")]
+        public void Get_Url_Returns_Correct_Ecard_Url()
+        {
+            //Arrange
+            var pl = new PlatnosciEcard {ORDERDESCRIPTION = "abc/2009"};
+            var m = new Merchant {Payment = pl, Id = "ABCD" };
+            var eCardData = new MerchantHelper(new Repository<PlatnosciEcard>(new FakeDataContext()));
+            
+            //Act
+            var result = eCardData.GetUrl(m);
+
+            //Assert
+            System.Diagnostics.Debug.WriteLine("eCard url:" + result + " " + m);
+            Assert.That(result, Is.Not.EqualTo(""));
+        }         
+    }
+}
Index: /trunk/eCard/eCardMVC/adMoto.Payments.Test/Utils/TestDataHelperTests.cs
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Test/Utils/TestDataHelperTests.cs (revision 982)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Test/Utils/TestDataHelperTests.cs (revision 982)
@@ -0,0 +1,27 @@
+﻿using adMoto.Payments.Core;
+using adMoto.Payments.Core.Data;
+using adMoto.Payments.Test.Fakes;
+using NUnit.Framework;
+
+namespace adMoto.Payments.Test.Utils
+{
+    [TestFixture]
+    public class TestDataHelperTests
+    {
+        private readonly TestDataHelper _testDataHelper = new TestDataHelper();
+
+        [Test]
+        [Category("Unit")]
+        public void TestInsertMethodForPayment()
+        {
+            var fake = new FakeDataContext();
+            var vPlatnosciEcardRepository = new Repository<Invoice>(fake);
+
+            var platnosc = _testDataHelper.CreateInvoice(123, "nip", "", 0, 0);
+            vPlatnosciEcardRepository.Insert(platnosc);
+
+            var pl = vPlatnosciEcardRepository.FindOne(123);
+            Assert.That(pl.nip, Is.EqualTo("nip"));
+        }
+    }
+}
Index: /trunk/eCard/eCardMVC/adMoto.Payments.Test/Utils/PaymentUtilsTests.cs
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Test/Utils/PaymentUtilsTests.cs (revision 982)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Test/Utils/PaymentUtilsTests.cs (revision 982)
@@ -0,0 +1,73 @@
+﻿using System.Linq;
+using adMoto.Payments.Core;
+using adMoto.Payments.Core.Data;
+using adMoto.Payments.Core.Interfaces;
+using adMoto.Payments.Test.Fakes;
+using adMoto.Payments.Web.Models;
+using NUnit.Framework;
+
+namespace adMoto.Payments.Test.Utils
+{
+    [TestFixture]
+    public class PaymentUtilsTests
+    {
+        private readonly TestDataHelper _testDataHelper = new TestDataHelper();
+        private readonly ITranslateManager _translateManager = new FakeTranslation();
+
+        [Test, Sequential]
+        [Category("Unit")]
+        public void GetCurrency_Returns_Correct_Currency(
+            [Values(null, "", "eur", "usd", "gbp", "GBP")] string input,
+            [Values(PaymentsUtils.PLN, PaymentsUtils.PLN, PaymentsUtils.EUR, PaymentsUtils.USD, PaymentsUtils.GBP, PaymentsUtils.GBP)] string output
+            )
+        {
+            //Arrange
+            var funkcjePlantosi = new PaymentsUtils();
+
+            //Act
+            var result = funkcjePlantosi.GetCurrency(input);
+
+            //Assert
+            Assert.That(result, Is.EqualTo(output));
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void CreateAndAddNewPayment_Creates_PlatnosciEcard()
+        {
+            //Arrange
+            var idFaktury = 123;
+            var repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var paymentsUtils = new PaymentsUtils(repPayment, _translateManager);
+            var invoice = _testDataHelper.CreateInvoice(idFaktury, "nip", "abc/2009", 200, 2);
+            var payer = _testDataHelper.CreatePayer(idFaktury, "test", "test");
+            var waluta = new Waluta { Amount = 200, Currency = PaymentsUtils.PLN };
+
+            //Act
+            paymentsUtils.CreateAndAddNewPyment(invoice, waluta, payer, "sessionId");
+            var payment = repPayment.Find(p => p.IDFaktury == 123).SingleOrDefault();
+
+            //Act
+            Assert.That(payment.AMOUNT, Is.EqualTo(200));
+        }
+
+        [Test, Sequential]
+        [Category("Unit")]
+        public void BruttoToString_Returns_Correct_Amount(
+            [Values(null, "", "pln", "PLN", "GBP", "gbp", "xx")] string input,
+            [Values("100 PLN ", "100 PLN ", "100 PLN ", "100 PLN ", "100 PLN (1 GBP)", "100 PLN (1 GBP)", "100 PLN (1 XX)")] string output
+            )
+        {
+            //Arrange
+            var funkcjePlantosi = new PaymentsUtils();
+
+            //Act
+            var result = funkcjePlantosi.BruttoToString(100, 1, input);
+
+            //Act
+            System.Diagnostics.Debug.WriteLine(result);
+            Assert.That(result, Is.EqualTo(output));
+        }
+        
+    }
+}
Index: /trunk/eCard/eCardMVC/adMoto.Payments.Test/Utils/MerchantTests.cs
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Test/Utils/MerchantTests.cs (revision 982)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Test/Utils/MerchantTests.cs (revision 982)
@@ -0,0 +1,89 @@
+﻿using adMoto.Payments.Core;
+using adMoto.Payments.Core.Data;
+
+using NUnit.Framework;
+
+namespace adMoto.Payments.Test.Utils
+{
+    public class MerchantTests
+    {
+        [Test]
+        [Category("Unit")]
+        public void Currency_Is_Not_Valid()
+        {
+            //Arrange
+            var p = new PlatnosciEcard
+                        {
+                            AMOUNT = 100,
+                            AUTODEPOSIT = true,
+                            ORDERDESCRIPTION = "abc/2009"
+                        };
+            var m = new Merchant { Payment = p };
+
+            //Act
+            m.IsValid();
+            var result = m.Error;
+
+            //Assert
+            Assert.That(result, Is.EqualTo("currency"));
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void Language_Is_Not_Valid()
+        {
+            //Arrange
+            var p = new PlatnosciEcard
+                        {
+                            AMOUNT = 100,
+                            AUTODEPOSIT = true,
+                            ORDERDESCRIPTION = "abc/2009",
+                            CURRENCY = "test",
+                            NAME = "test",
+                            SURNAME = "test"
+                        };
+            var m = new Merchant { Payment = p };
+
+            //Act
+            m.IsValid();
+            var result = m.Error;
+
+            //Assert
+            Assert.That(result, Is.EqualTo("language"));
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void Merchant_Data_Is_Valid()
+        {
+            //Arrange
+            var p = new PlatnosciEcard
+                        {
+                            AMOUNT = 100,
+                            AUTODEPOSIT = true,
+                            ORDERDESCRIPTION = "abc/2009",
+                            CURRENCY = "test",
+                            NAME = "test",
+                            SURNAME = "test",
+                            LANGUAGE = "test",
+                            ORDERNUMBER = 100
+                        };
+            var m = new Merchant
+                        {
+                            Payment = p,
+                            Id = "aaaa",
+                            Password = "aa",
+                            Hash = "22",
+                            LinkFail = "a",
+                            LinkOk = "a",
+                        };
+
+            //Act
+            m.IsValid();
+            var result = m.Error;
+
+            //Assert
+            Assert.That(result, Is.EqualTo(null));
+        }
+    }
+}
Index: /trunk/eCard/eCardMVC/adMoto.Payments.Test/Controllers/PlatnosciControllerTests.cs
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Test/Controllers/PlatnosciControllerTests.cs (revision 982)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Test/Controllers/PlatnosciControllerTests.cs (revision 982)
@@ -0,0 +1,341 @@
+﻿using System;
+using System.Web.Mvc;
+using adMoto.Payments.Core;
+using adMoto.Payments.Core.Data;
+using adMoto.Payments.Core.Interfaces;
+using adMoto.Payments.Test.Fakes;
+using adMoto.Payments.Web.Controllers;
+using adMoto.Payments.Web.Models;
+using NUnit.Framework;
+
+namespace adMoto.Payments.Test.Controllers
+{
+    [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 TestDataHelper _testDataHelper = new TestDataHelper();
+               
+        //[Test]
+        //[Category("Unit")]
+        //public void Status_Action_Saves_Correct_Transaction()
+        //{  
+        //    //Arrange
+        //    var repository = new Repository<PlatnosciEcard>(new FakeDataContext());
+        //    var platnosci = _testDataHelper.CreateNewPayment(_orderNumber, false, DateTime.Now, 12345); 
+        //    repository.Insert(platnosci);
+        //    repository.SubmitChanges();
+                
+        //    IRepository<PotwierdzeniaEcard> rep = new Repository<PotwierdzeniaEcard>(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<PlatnosciEcard>(new FakeDataContext());
+        //    var platnosci = _testDataHelper.CreateNewPayment(_orderNumber, false, DateTime.Now, 12345);
+        //    repPayment.Insert(platnosci);
+        //    repPayment.SubmitChanges();
+        //    IRepository<PotwierdzeniaEcard> repConfirm = new Repository<PotwierdzeniaEcard>(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<PlatnosciEcard> repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            PlatnosciEcard platnosc = _testDataHelper.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<PlatnosciEcard> repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var platnosc = _testDataHelper.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<Invoice> repVPayment = new Repository<Invoice>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateInvoice(123, "nip1", "", 0, 0);
+            repVPayment.Insert(platnosc);
+
+            var controller = new PlatnoscController(repVPayment, null, null, _translateManager);
+            controller.ControllerContext = _testDataHelper.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<Invoice> repVPayment = new Repository<Invoice>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateInvoice(123, "nip2", "", 0, 0);
+            repVPayment.Insert(platnosc);
+
+            var controller = new PlatnoscController(repVPayment, null, null, _translateManager);
+            controller.ControllerContext = _testDataHelper.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<Invoice>(new FakeDataContext());
+            var invoice = _testDataHelper.CreateInvoice(123, "nip1", "aaa", 0, 0);
+            repVPayment.Insert(invoice);
+            repVPayment.SubmitChanges();
+
+            var repConfirm = new Repository<PotwierdzeniaEcard>(new FakeDataContext());
+            var confirm = _testDataHelper.CreateConfirm(CODE_OK, 123456);
+            repConfirm.Insert(confirm);
+            repConfirm.SubmitChanges();
+
+            var controller = new PlatnoscController(repVPayment, null, repConfirm, _translateManager);
+            controller.ControllerContext = _testDataHelper.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<Invoice> repVPayment = new Repository<Invoice>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateInvoice(123, "nip1", "numer", 200, 0);
+            repVPayment.Insert(platnosc);
+
+            var repConfirm = new Repository<PotwierdzeniaEcard>(new FakeDataContext());
+            var confirm = _testDataHelper.CreateConfirm(CODE_OK, 1);
+            repConfirm.Insert(confirm);
+            repConfirm.SubmitChanges();
+
+            var controller = new PlatnoscController(repVPayment, null, repConfirm, _translateManager);
+            controller.ControllerContext = _testDataHelper.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<Invoice> repVPayment = new Repository<Invoice>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateInvoice(123, "nip1", "numer", 200, 0);
+            repVPayment.Insert(platnosc);
+
+            var controller = new PlatnoscController(repVPayment, null, null, _translateManager);
+            controller.ControllerContext = _testDataHelper.CreateControllerContext("nip1");
+            
+            Payer payer = _testDataHelper.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<Invoice> repVPayment = new Repository<Invoice>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateInvoice(123, "nip1", "numer", 200, 0);
+            repVPayment.Insert(platnosc);
+
+            var controller = new PlatnoscController(repVPayment, null, null, _translateManager);
+            controller.ControllerContext = _testDataHelper.CreateControllerContext("nip1");
+
+            Payer payer = _testDataHelper.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<Invoice> repVPayment = new Repository<Invoice>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateInvoice(123, "nip1", "numer", 200, 0);
+            repVPayment.Insert(platnosc);
+
+            var controller = new PlatnoscController(repVPayment, null, null, _translateManager);
+            controller.ControllerContext = _testDataHelper.CreateControllerContext("nip1");
+            var name = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+            var payer = _testDataHelper.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<Invoice> repVPayment = new Repository<Invoice>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateInvoice(123, "nip1", "numer", 200, 0);
+            repVPayment.Insert(platnosc);
+
+            var controller = new PlatnoscController(repVPayment, null, null, _translateManager);
+            controller.ControllerContext = _testDataHelper.CreateControllerContext("nip1");
+            var surname = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+            var payer = _testDataHelper.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<Invoice> repVPayment = new Repository<Invoice>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateInvoice(123, "nip1", "numer", 200, 0);
+            repVPayment.Insert(platnosc);
+
+            var controller = new PlatnoscController(repVPayment, null, null, _translateManager);
+            controller.ControllerContext = _testDataHelper.CreateControllerContext("nip1");
+
+            var payer = _testDataHelper.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);
+        }        
+    }
+}
Index: /trunk/eCard/eCardMVC/adMoto.Payments.Test/Controllers/eCardControllerTests.cs
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Test/Controllers/eCardControllerTests.cs (revision 982)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Test/Controllers/eCardControllerTests.cs (revision 982)
@@ -0,0 +1,150 @@
+﻿using System;
+using System.Collections.Specialized;
+using System.Linq;
+using adMoto.Payments.Core;
+using adMoto.Payments.Core.Data;
+using adMoto.Payments.Core.Interfaces;
+using adMoto.Payments.Test.Fakes;
+using adMoto.Payments.Web.Controllers;
+using NUnit.Framework;
+using MvcContrib.TestHelper;
+using System.Web.Mvc;
+
+namespace adMoto.Payments.Test.Controllers
+{
+    [TestFixture]
+// ReSharper disable InconsistentNaming
+    public class eCardControllerTests
+// ReSharper restore InconsistentNaming
+    {
+        private IRepository<PotwierdzeniaEcard> _repConfirm;
+
+        private eCardController CreateController()
+        {
+            _repConfirm = new Repository<PotwierdzeniaEcard>(new FakeDataContext());
+
+            var builder = new TestControllerBuilder();
+            return builder.CreateController<eCardController>(_repConfirm);
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void  Status_Returns_True_When_Passing_Correct_Request_Data()
+        {
+            var controller = CreateController();
+            const string dateFormat = "yyyy-MM-dd HH:mm:ss.fff";
+            var dateTime = DateTime.Now.ToString(dateFormat);
+            var formValues = new NameValueCollection {
+                                                         {"MERCHANTNUMBER", "1"}, 
+                                                         {"ORDERNUMBER", "2"},
+                                                         {"COMMTYPE", "3"},
+                                                         {"CURRENTSTATE", "4"},
+                                                         {"PREVIOUSSTATE", "5"},
+                                                         {"PAYMENTTYPE", "1"},
+                                                         {"EVENTTYPE", "0"},
+                                                         {"PAYMENTNUMBER", "1"},
+                                                         {"APPROVALCODE", "6"},
+                                                         {"VALIDATIONCODE", "7"},
+                                                         {"BIN", "8"},
+                                                         {"AUTHTIME", dateTime},
+                                                         {"TYPE", "9"},
+                                                         {"WITHCVC", "10"}};
+            controller.Request.Form.Add(formValues);
+
+            var result = controller.Status() as ContentResult;
+
+            Assert.That(result.Content.Contains("OK"));
+            
+            var paymentConfirmation = _repConfirm.FindAll().First();
+            Assert.That(paymentConfirmation.MERCHANTNUMBER, Is.EqualTo("1"));
+            Assert.That(paymentConfirmation.ORDERNUMBER, Is.EqualTo(2));
+            Assert.That(paymentConfirmation.COMMTYPE, Is.EqualTo("3"));
+            Assert.That(paymentConfirmation.CURRENTSTATE, Is.EqualTo("4"));
+            Assert.That(paymentConfirmation.PREVIOUSSTATE, Is.EqualTo("5"));
+            Assert.That(paymentConfirmation.APPROVALCODE, Is.EqualTo("6"));
+            Assert.That(paymentConfirmation.VALIDATIONCODE, Is.EqualTo("7"));
+            Assert.That(paymentConfirmation.BIN, Is.EqualTo("8"));
+            Assert.That(paymentConfirmation.TYPE, Is.EqualTo("9"));
+            Assert.That(paymentConfirmation.WITHCVC, Is.EqualTo("10"));
+            Assert.That(paymentConfirmation.PAYMENTTYPE, Is.True);
+            Assert.That(paymentConfirmation.EVENTTYPE, Is.False);
+            Assert.That(paymentConfirmation.PAYMENTNUMBER, Is.True);
+            Assert.That(paymentConfirmation.AUTHTIME.Value.ToString(dateFormat), Is.EqualTo(dateTime));
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void Status_Returns_False_And_Throws_FormatException_When_Passing_OrderNumber_In_Wrong_Format()
+        {
+            var controller = CreateController();
+            var valueCollection = new NameValueCollection {{"ORDERNUMBER", "fdsf"}};
+            controller.Request.Form.Add(valueCollection);
+
+            var result = controller.Status() as ContentResult;
+
+            Assert.That(_repConfirm.Count(), Is.EqualTo(0));
+            Assert.That(result.Content.Contains("FALSE"));
+            Assert.That(result.Content.Contains("FormatException"));
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void Status_Returns_False_And_Throws_FormatException_When_Passing_PaymentType_In_Wrong_Format()
+        {
+            var controller = CreateController();
+            var valueCollection = new NameValueCollection { { "PAYMENTTYPE", "32hvhsvhv" } };
+            controller.Request.Form.Add(valueCollection);
+
+            var result = controller.Status() as ContentResult;
+
+            Assert.That(_repConfirm.Count(), Is.EqualTo(0));
+            Assert.That(result.Content.Contains("FALSE"));
+            Assert.That(result.Content.Contains("FormatException"));
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void Status_Returns_False_And_Throws_FormatException_When_Passing_EventType_In_Wrong_Format()
+        {
+            var controller = CreateController();
+            var valueCollection = new NameValueCollection { { "EVENTTYPE", "32hvhsvhv" } };
+            controller.Request.Form.Add(valueCollection);
+
+            var result = controller.Status() as ContentResult;
+
+            Assert.That(_repConfirm.Count(), Is.EqualTo(0));
+            Assert.That(result.Content.Contains("FALSE"));
+            Assert.That(result.Content.Contains("FormatException"));
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void Status_Returns_False_And_Throws_OverflowException_When_Passing_OrderNumer_Greater_Than_Integer()
+        {
+            var controller = CreateController();
+            var valueCollection = new NameValueCollection { { "ORDERNUMBER", "12311111111111111" } };
+            controller.Request.Form.Add(valueCollection);
+
+            var result = controller.Status() as ContentResult;
+
+            Assert.That(_repConfirm.Count(), Is.EqualTo(0));
+            Assert.That(result.Content.Contains("FALSE"), "Response should contain FALSE");
+            Assert.That(result.Content.Contains("OverflowException"), "Response should contain OverflowException");
+        }
+
+        [Test]
+        [Category("Unit")]
+        public void Status_Returns_False_And_Throws_SqlException_When_Passing_ValidationCode_Longer_Than_Three_Characters()
+        {
+            var controller = CreateController();
+            var valueCollection = new NameValueCollection { { "VALIDATIONCODE", "1234" } };
+            controller.Request.Form.Add(valueCollection);
+
+            var result = controller.Status() as ContentResult;
+
+            Assert.That(_repConfirm.Count(), Is.EqualTo(0), "Should not have any items");
+            Assert.That(result.Content.Contains("FALSE"), "Response should contain FALSE");
+            Assert.That(result.Content.Contains("ArgumentException"), "Response should contain SqlException");
+        }
+    }
+}
Index: /trunk/eCard/eCardMVC/adMoto.Payments.Test/Controllers/MerchantControllerTests.cs
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Test/Controllers/MerchantControllerTests.cs (revision 982)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Test/Controllers/MerchantControllerTests.cs (revision 982)
@@ -0,0 +1,65 @@
+﻿using adMoto.Payments.Core;
+using adMoto.Payments.Core.Data;
+using adMoto.Payments.Core.Interfaces;
+using adMoto.Payments.Test.Fakes;
+using adMoto.Payments.Web.Controllers;
+using adMoto.Payments.Web.Models;
+using NUnit.Framework;
+using System.Web.Mvc;
+
+namespace adMoto.Payments.Test.Controllers
+{
+    [TestFixture]
+    public class MerchantControllerTests
+    {
+        private readonly TestDataHelper _testDataHelper = new TestDataHelper();
+        private readonly ITranslateManager _translateManager = new FakeTranslation();
+
+        [Test]
+        [Category("Unit")]
+        public void Merchant_Action_Returns_Error_When_Passing_Incorrect_User_Identity()
+        {
+            //Arrange
+            IRepository<Invoice> repVPayment = new Repository<Invoice>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateInvoice(123, "nip1", "", 0, 0);
+            repVPayment.Insert(platnosc);
+            
+            var payer = _testDataHelper.CreatePayer(123, "test", "test");
+            
+            var controller = new MerchantController(repVPayment, null, _translateManager);
+            controller.ControllerContext = _testDataHelper.CreateControllerContext("nip2");
+
+            //Act
+            var result = controller.Merchant(payer, "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 Merchant_Action_Returns_Error_When_Payment_Is_Not_Found()
+        {
+            //Arrange
+            IRepository<Invoice> repVPayment = new Repository<Invoice>(new FakeDataContext());
+            var platnosc = _testDataHelper.CreateInvoice(12, "nip1", "", 0, 0);
+            repVPayment.Insert(platnosc);
+
+            var payer = _testDataHelper.CreatePayer(123, "test", "test");
+
+            var controller = new MerchantController(repVPayment, null, _translateManager);
+            controller.ControllerContext = _testDataHelper.CreateControllerContext("nip2");
+
+            //Act
+            var result = controller.Merchant(payer, "pl") as ViewResult;
+            var error = (ErrorViewData)result.ViewData.Model;
+
+            //Assert
+            Assert.That(error.Error, Is.EqualTo("brakdanych"));
+            Assert.That(result.ViewName, Is.EqualTo("Error1"));
+        }
+              
+    }
+}
Index: /trunk/eCard/eCardMVC/adMoto.Payments.Test/Fakes/FakeDataContext.cs
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Test/Fakes/FakeDataContext.cs (revision 982)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Test/Fakes/FakeDataContext.cs (revision 982)
@@ -0,0 +1,76 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using adMoto.Payments.Core.Data;
+using adMoto.Payments.Core.Interfaces;
+
+namespace adMoto.Payments.Test.Fakes
+{
+    public class FakeDataContext : IDataContext
+    {
+        private const string CODE_OK = "payment_deposited";        //transakcja potwierdzona do rozliczenia
+       
+        private readonly List<object> _lista = new List<object>();
+        private readonly TestDataHelper _testDataHelper = new TestDataHelper();
+ 
+
+        public IQueryable<T> GetTable<T>() where T : class
+        {
+            var query = _lista.Where(objects => typeof(T).IsAssignableFrom(objects.GetType()));
+            return query.Select(o => (T)o).AsQueryable();
+        }
+
+        public void Insert<T>(T item) where T : class
+        {
+            _lista.Add(item);
+        }
+
+        public void Delete<T>(T item) where T : class
+        {
+            _lista.Remove(item);
+        }
+
+        public void SubmitChanges()
+        {
+            InvokeCompleted(EventArgs.Empty);
+        }
+
+        public event EventHandler Completed;
+
+        private void InvokeCompleted(EventArgs e)
+        {
+            var completedHandler = Completed;
+            if (completedHandler != null) completedHandler(this, e);
+        }
+
+        public void Dispose()
+        {
+        }
+        public IQueryable<Invoice> FindInvoiceByNipNumber(string nip, string numer)
+        {
+            throw new NotImplementedException();
+        }
+        public List<PotwierdzeniaEcard> FindItemsByIdFaktury(int idFaktury)
+        {
+            
+            var platnosc = _testDataHelper.CreateNewPayment(123456, true, DateTime.Now, 123);
+            var payment = new List<PlatnosciEcard>();
+            var listaConfirm = new List<PotwierdzeniaEcard> {(PotwierdzeniaEcard) _lista[0]};
+            payment.Add(platnosc);
+
+            var newConfirm = new List<PotwierdzeniaEcard>();
+
+            if (platnosc.IDFaktury == idFaktury) 
+            {
+                if (listaConfirm[0].ORDERNUMBER == platnosc.ORDERNUMBER && listaConfirm[0].CURRENTSTATE == CODE_OK)
+                    newConfirm.Add(listaConfirm[0]);
+            }
+            System.Diagnostics.Debug.WriteLine("lista" + newConfirm.Count());  
+            return newConfirm;
+        }
+        public int GetOrdernumber(string desc, int? id, DateTime? data)
+        {
+            return 1111;
+        }
+    }
+}
Index: /trunk/eCard/eCardMVC/adMoto.Payments.Test/Fakes/FakeTranslation.cs
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Test/Fakes/FakeTranslation.cs (revision 982)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Test/Fakes/FakeTranslation.cs (revision 982)
@@ -0,0 +1,28 @@
+﻿using adMoto.Payments.Core.Interfaces;
+
+namespace adMoto.Payments.Test.Fakes
+{
+    public class FakeTranslation : ITranslateManager
+    {
+        public string Translate(string className, string keyName)
+        {
+            switch (keyName)
+            {
+                case "weryfikacja":
+                    return "weryfikacja";
+                case "brakdanych":
+                    return "brakdanych";
+                case "zaplacono":
+                    return "zaplacono";
+                case "err_imieWK":
+                    return "imie";
+                case "err_nazwiskoWK":
+                    return "nazwisko";
+                case "error_hash":
+                    return "error_hash";
+            }
+
+            return "";
+        }
+    }
+}
Index: /trunk/eCard/eCardMVC/adMoto.Payments.Test/Fakes/TestDataHelper.cs
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Test/Fakes/TestDataHelper.cs (revision 982)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Test/Fakes/TestDataHelper.cs (revision 982)
@@ -0,0 +1,71 @@
+﻿using System;
+using adMoto.Payments.Core;
+using adMoto.Payments.Core.Data;
+using System.Web.Mvc;
+using Moq;
+
+namespace adMoto.Payments.Test.Fakes
+{
+    public class TestDataHelper
+    {
+        public Invoice CreateInvoice(int id, string nip, string invoiceNumber, decimal brutto, byte systemKsiegowy)
+        {
+            var platnosc = new Invoice();
+            platnosc.ID_faktury = id;
+            platnosc.nip = nip;
+            platnosc.Faktura_Numer = invoiceNumber;
+            platnosc.Brutto = brutto;
+            platnosc.SystemKsiegowyId = systemKsiegowy;
+
+            return platnosc;
+        }
+        public Invoice CreateForeignInvoice(int id, string nip, string invoiceNumber, decimal brutto, byte systemKsiegowy, decimal walutaBrutto, string currency)
+        {
+            var platnosc = new Invoice();
+            platnosc.ID_faktury = id;
+            platnosc.nip = nip;
+            platnosc.Faktura_Numer = invoiceNumber;
+            platnosc.Brutto = brutto;
+            platnosc.waluta_brutto = walutaBrutto;
+            platnosc.waluta_miano = currency.ToUpper();
+            platnosc.SystemKsiegowyId = systemKsiegowy;
+           
+            return platnosc;
+        }
+        public PlatnosciEcard CreateNewPayment(int orderNumber, bool status, DateTime data, int invoiceId)
+        {
+            var platnosc = new PlatnosciEcard();
+            platnosc.ORDERNUMBER = orderNumber;
+            platnosc.Status = status;
+            platnosc.Status_data = data;
+            platnosc.IDFaktury = invoiceId;
+
+            return platnosc;
+        }
+        public PotwierdzeniaEcard CreateConfirm(string code, int ordernumber)
+        {
+            var potwierdzenie = new PotwierdzeniaEcard();
+            potwierdzenie.CURRENTSTATE = code;
+            potwierdzenie.ORDERNUMBER = ordernumber;
+
+            return potwierdzenie;
+        }
+        
+        public Payer CreatePayer(int id, string name, string surname)
+        {
+            var payer = new Payer {Id_faktury = id, FirstName = name, LastName = surname};
+
+            return payer;
+        }
+
+        public ControllerContext CreateControllerContext(string userIdentity)
+        {
+
+            var mock = new Mock<ControllerContext>();
+            mock.SetupGet(m => m.HttpContext.User.Identity.Name).Returns(userIdentity);
+            mock.SetupGet(m => m.HttpContext.Request.IsAuthenticated).Returns(true);
+           
+            return mock.Object;
+        }
+    }
+}
Index: /trunk/eCard/eCardMVC/adMoto.Payments.Test/UI/ValidationTests.cs
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Test/UI/ValidationTests.cs (revision 982)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Test/UI/ValidationTests.cs (revision 982)
@@ -0,0 +1,66 @@
+﻿using NUnit.Framework;
+using WatiN.Core;
+
+namespace adMoto.Payments.Test.UI
+{
+    [TestFixture]
+    public class ValidationTests
+    {
+        [Test]
+        [Category("UI")]
+        public void Validates_When_Firstname_Is_Too_Long()
+        {
+            const string test = "test";
+            var ie = new IE("http://localhost:3646/pl/Account/LogOn");
+            ie.TextField(Find.ByName("numerFaktury")).TypeText("1/SLJ/2009");
+            ie.TextField(Find.ByName("nip")).TypeText("9730727417");
+            ie.Button(Find.ById("loguj")).Click();
+
+            ie.TextField(Find.ByName("Payer.FirstName")).TypeText("12345678901234567890123456");
+            ie.TextField(Find.ByName("Payer.LastName")).TypeText(test);
+            ie.Button(Find.ById("place")).Click();
+            Assert.IsTrue(ie.ContainsText("Zbyt długa nazwa"));
+            ie.ForceClose();
+            ie.Close();
+            ie.Dispose();
+        }
+
+        [Test]
+        [Category("UI")]
+        public void Validates_When_Surname_Is_Too_Long()
+        {
+            const string test = "test";
+            var ie = new IE("http://localhost:3646/pl/Account/LogOn");
+            ie.TextField(Find.ByName("numerFaktury")).TypeText("1/SLJ/2009");
+            ie.TextField(Find.ByName("nip")).TypeText("9730727417");
+            ie.Button(Find.ById("loguj")).Click();
+
+            ie.TextField(Find.ByName("Payer.FirstName")).TypeText(test);
+            ie.TextField(Find.ByName("Payer.LastName")).TypeText("1234567890123456789012345678901");
+            ie.Button(Find.ById("place")).Click();
+            Assert.IsTrue(ie.ContainsText("Zbyt długa nazwa"));
+            ie.ForceClose();
+            ie.Close();
+            ie.Dispose();
+        }
+
+        [Test]
+        [Category("UI")]
+        public void Validates_When_LastName_Is_Empty()
+        {
+            const string test = "test";
+            var ie = new IE("http://localhost:3646/pl/Account/LogOn");
+            ie.TextField(Find.ByName("numerFaktury")).TypeText("27/ASZ/2009");
+            ie.TextField(Find.ByName("nip")).TypeText("854956281");
+            ie.Button(Find.ById("loguj")).Click();
+
+            ie.TextField(Find.ByName("Payer.FirstName")).TypeText(test);
+            ie.TextField(Find.ByName("Payer.LastName")).TypeText("");
+            ie.Button(Find.ById("place")).Click();
+            Assert.IsTrue(ie.ContainsText("Proszę podać"));
+            ie.ForceClose();
+            ie.Close();
+            ie.Dispose();
+        }
+    }
+}
Index: /trunk/eCard/eCardMVC/adMoto.Payments.Test/UI/AuthenticationTests.cs
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Test/UI/AuthenticationTests.cs (revision 982)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Test/UI/AuthenticationTests.cs (revision 982)
@@ -0,0 +1,37 @@
+﻿using NUnit.Framework;
+using WatiN.Core;
+
+namespace adMoto.Payments.Test.UI
+{
+    [TestFixture]
+    public class AuthenticationTests
+    {
+        [Test]
+        [Category("UI")]
+        public void Can_Not_Login_When_Using_InValid_Login_Information()
+        {
+            var ie = new IE("http://localhost:3646/pl/Account/LogOn");
+            ie.TextField(Find.ByName("numerFaktury")).TypeText("");
+            ie.TextField(Find.ByName("nip")).TypeText("");
+            ie.Button(Find.ById("loguj")).Click();
+            Assert.IsTrue(ie.ContainsText("Logowanie nie powiodło się"));
+            ie.ForceClose();
+            ie.Close();
+            ie.Dispose();
+        }
+
+        [Test]
+        [Category("UI")]
+        public void Can_Login_When_Using_Correct_Login_Information()
+        {
+            var ie = new IE("http://localhost:3646/pl/Account/LogOn");
+            ie.TextField(Find.ByName("numerFaktury")).TypeText("24/HOL/2009");
+            ie.TextField(Find.ByName("nip")).TypeText("501379568");
+            ie.Button(Find.ById("loguj")).Click();
+            Assert.IsTrue(ie.ContainsText("została uregulowana"));
+            ie.ForceClose();
+            ie.Close();
+            ie.Dispose();
+        }
+    }
+}
Index: /trunk/eCard/eCardMVC/adMoto.Payments.Test/UI/MerchantTests.cs
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Test/UI/MerchantTests.cs (revision 982)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Test/UI/MerchantTests.cs (revision 982)
@@ -0,0 +1,51 @@
+﻿using NUnit.Framework;
+using WatiN.Core;
+
+namespace adMoto.Payments.Test.UI
+{
+    [TestFixture]
+    public class MerchantTests
+    {
+        [Test]
+        [Category("UI")]
+        public void Redirects_To_Ecard_When_All_Details_Are_Correct()
+        {
+            const string test = "test";
+            var ie = new IE("http://localhost:3646/pl/Account/LogOn");
+            ie.TextField(Find.ByName("numerFaktury")).TypeText("27/ASZ/2009");
+            ie.TextField(Find.ByName("nip")).TypeText("854956281");
+            ie.Button(Find.ById("loguj")).Click();
+
+            ie.TextField(Find.ByName("Payer.FirstName")).TypeText(test);
+            ie.TextField(Find.ByName("Payer.LastName")).TypeText(test);
+            ie.Button(Find.ById("place")).Click();
+            Assert.IsTrue(ie.ContainsText("Imię i nazwisko:" + test + " " + test));
+            Assert.IsTrue(ie.Url.Contains("https://pay.ecard.pl/"));
+            ie.ForceClose();
+            ie.Close();
+            ie.Dispose();
+        }
+
+        [Test]
+        [Category("UI")]
+        public void Returns_ZlyHash_When_Invoice_Amount_Is_Zero()
+        {
+            // wartosc faktury 1/SLJ/2009 jest 0 (zero)
+            // wowczas eCard powinien zwrocic zlyHash - stala informujaca, ze cos jest nie tak...
+
+            const string test = "test";
+            var ie = new IE("http://localhost:3646/pl/Account/LogOn");
+            ie.TextField(Find.ByName("numerFaktury")).TypeText("1/SLJ/2009");
+            ie.TextField(Find.ByName("nip")).TypeText("9730727417");
+            ie.Button(Find.ById("loguj")).Click();
+
+            ie.TextField(Find.ByName("Payer.FirstName")).TypeText(test);
+            ie.TextField(Find.ByName("Payer.LastName")).TypeText(test);
+            ie.Button(Find.ById("place")).Click();
+            Assert.IsTrue(ie.ContainsText("Wystąpił nieoczekiwany błąd"));
+            ie.ForceClose();
+            ie.Close();
+            ie.Dispose();
+        }
+    }
+}
Index: /trunk/eCard/eCardMVC/adMoto.Payments.Core/Data/PotwierdzeniaEcard.cs
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Core/Data/PotwierdzeniaEcard.cs (revision 970)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Core/Data/PotwierdzeniaEcard.cs (revision 982)
@@ -1,3 +1,4 @@
-﻿using adMoto.Payments.Core.Interfaces;
+﻿using System;
+using adMoto.Payments.Core.Interfaces;
 
 namespace adMoto.Payments.Core.Data
@@ -9,4 +10,13 @@
             get { return id; }
         }
+
+// ReSharper disable InconsistentNaming
+        partial void OnVALIDATIONCODEChanging(string value)
+// ReSharper restore InconsistentNaming
+        {
+            if (string.IsNullOrEmpty(value)) return;
+
+            if (value.Length > 3) throw new ArgumentException("VALIDATIONCODE must be max 3 characters long");
+        }
     }
 }
Index: /trunk/eCard/eCardMVC/adMoto.Payments.Web/Controllers/eCardController.cs
===================================================================
--- /trunk/eCard/eCardMVC/adMoto.Payments.Web/Controllers/eCardController.cs (revision 980)
+++ /trunk/eCard/eCardMVC/adMoto.Payments.Web/Controllers/eCardController.cs (revision 982)
@@ -9,10 +9,10 @@
 namespace adMoto.Payments.Web.Controllers
 {
-// ReSharper disable InconsistentNaming
+    // ReSharper disable InconsistentNaming
     public class eCardController : Controller
-// ReSharper restore InconsistentNaming
+    // ReSharper restore InconsistentNaming
     {
         private readonly IRepository<PotwierdzeniaEcard> _eCardRepository;
-        
+
         public eCardController()
         {
@@ -24,5 +24,5 @@
             _eCardRepository = eCardRepository;
         }
-        
+
         public ActionResult Status()
         {
@@ -35,19 +35,18 @@
 
                 var potwierdzenie = new PotwierdzeniaEcard();
-
-                potwierdzenie.MERCHANTNUMBER = Request["MERCHANTNUMBER"];
-                potwierdzenie.ORDERNUMBER = Convert.ToInt32(Request["ORDERNUMBER"]);
-                potwierdzenie.COMMTYPE = Request["COMMTYPE"];
-                potwierdzenie.CURRENTSTATE = Request["CURRENTSTATE"];
-                potwierdzenie.PREVIOUSSTATE = Request["PREVIOUSSTATE"];
-                potwierdzenie.PAYMENTTYPE = Convert.ToBoolean(Convert.ToInt32(Request["PAYMENTTYPE"]));
-                potwierdzenie.EVENTTYPE = Convert.ToBoolean(Convert.ToInt32(Request["EVENTTYPE"]));
-                potwierdzenie.PAYMENTNUMBER = Convert.ToBoolean(Convert.ToInt32(Request["PAYMENTNUMBER"]));
-                potwierdzenie.APPROVALCODE = Request["APPROVALCODE"];
-                potwierdzenie.VALIDATIONCODE = Request["VALIDATIONCODE"];
-                potwierdzenie.BIN = Request["BIN"];
-                potwierdzenie.AUTHTIME = Convert.ToDateTime(Request["AUTHTIME"]);
-                potwierdzenie.TYPE = Request["TYPE"];
-                potwierdzenie.WITHCVC = Request["WITHCVC"];
+                potwierdzenie.MERCHANTNUMBER = Request["MERCHANTNUMBER"] ?? Request.Form["MERCHANTNUMBER"];
+                potwierdzenie.ORDERNUMBER = Request["ORDERNUMBER"] != null ? Convert.ToInt32(Request["ORDERNUMBER"]) : Convert.ToInt32(Request.Form["ORDERNUMBER"]);
+                potwierdzenie.COMMTYPE = Request["COMMTYPE"] ?? Request.Form["COMMTYPE"];
+                potwierdzenie.CURRENTSTATE = Request["CURRENTSTATE"] ?? Request.Form["CURRENTSTATE"];
+                potwierdzenie.PREVIOUSSTATE = Request["PREVIOUSSTATE"] ?? Request.Form["PREVIOUSSTATE"];
+                potwierdzenie.PAYMENTTYPE = Request["PAYMENTTYPE"] != null ? Convert.ToBoolean(Convert.ToInt32(Request["PAYMENTTYPE"])) : Convert.ToBoolean(Convert.ToInt32(Request.Form["PAYMENTTYPE"]));
+                potwierdzenie.EVENTTYPE = Request["EVENTTYPE"] != null ? Convert.ToBoolean(Convert.ToInt32(Request["EVENTTYPE"])) : Convert.ToBoolean(Convert.ToInt32(Request.Form["EVENTTYPE"]));
+                potwierdzenie.PAYMENTNUMBER = Request["PAYMENTNUMBER"] != null ? Convert.ToBoolean(Convert.ToInt32(Request["PAYMENTNUMBER"])) : Convert.ToBoolean(Convert.ToInt32(Request.Form["PAYMENTNUMBER"]));
+                potwierdzenie.APPROVALCODE = Request["APPROVALCODE"] ?? Request.Form["APPROVALCODE"];
+                potwierdzenie.VALIDATIONCODE = Request["VALIDATIONCODE"] ?? Request.Form["VALIDATIONCODE"];
+                potwierdzenie.BIN = Request["BIN"] ?? Request.Form["BIN"];
+                potwierdzenie.AUTHTIME = Request["AUTHTIME"] != null ? Convert.ToDateTime(Request["AUTHTIME"]) : Convert.ToDateTime(Request.Form["AUTHTIME"]);
+                potwierdzenie.TYPE = Request["TYPE"] ?? Request.Form["TYPE"];
+                potwierdzenie.WITHCVC = Request["WITHCVC"] ?? Request.Form["WITHCVC"];
                 potwierdzenie.DATATRANSMISJI = DateTime.Now;
 
@@ -58,5 +57,6 @@
             catch (Exception ex)
             {
-                ErrorSignal.FromCurrentContext().Raise(ex);
+                if (System.Web.HttpContext.Current != null)
+                    ErrorSignal.FromCurrentContext().Raise(ex);
                 content.Content = "FALSE " + ex.Message + " " + ex.GetType();
             }
