Index: /trunk/eCard/eCardMVC/Platnosci/Models/eCardData.cs
===================================================================
--- /trunk/eCard/eCardMVC/Platnosci/Models/eCardData.cs (revision 957)
+++ /trunk/eCard/eCardMVC/Platnosci/Models/eCardData.cs (revision 959)
@@ -52,5 +52,5 @@
             merchant.Payment = newPayment;
             GetMerchantInfo(merchant);
-            SetHash(merchant);
+            merchant.Hash = SetHash(merchant);
 
             //przeslanie w linku ordernumber potrzebnego do wyswietlenia potwierdzenia
@@ -85,12 +85,13 @@
             }
         }
-        private void SetHash(Merchant merchant)
+        public string SetHash(Merchant merchant)
         {
+            if (merchant == null)
+                throw new ArgumentNullException("parametr merchant is null in SetHash method");
+
             var platnosc = _repPayment.Find(i => i.ORDERDESCRIPTION == merchant.Payment.ORDERDESCRIPTION && i.IDFaktury == merchant.Payment.IDFaktury && i.Data == merchant.Payment.Data).SingleOrDefault();
 
-            if (platnosc == null || merchant == null)
-            {
+            if (platnosc == null)            
                 merchant.Hash = HASH_ERROR_INFO;
-            }
             else
             {
@@ -117,4 +118,5 @@
                 merchant.Hash = strResponse;
             }
+            return merchant.Hash;
         }
     }
Index: /trunk/eCard/eCardMVC/Platnosci/App_GlobalResources/tlumaczenia.designer.cs
===================================================================
--- /trunk/eCard/eCardMVC/Platnosci/App_GlobalResources/tlumaczenia.designer.cs (revision 954)
+++ /trunk/eCard/eCardMVC/Platnosci/App_GlobalResources/tlumaczenia.designer.cs (revision 959)
@@ -161,5 +161,5 @@
         
         /// <summary>
-        ///   Looks up a localized string similar to &apos;Invoice number&apos; is required..
+        ///   Looks up a localized string similar to Invoice number is required..
         /// </summary>
         internal static string err_faktura {
Index: /trunk/eCard/eCardMVC/Platnosci/App_GlobalResources/tlumaczenia.resx
===================================================================
--- /trunk/eCard/eCardMVC/Platnosci/App_GlobalResources/tlumaczenia.resx (revision 954)
+++ /trunk/eCard/eCardMVC/Platnosci/App_GlobalResources/tlumaczenia.resx (revision 959)
@@ -216,5 +216,5 @@
   </data>
   <data name="err_faktura" xml:space="preserve">
-    <value>'Invoice number' is required.</value>
+    <value>Invoice number is required.</value>
   </data>
   <data name="err_logowanie" xml:space="preserve">
Index: /trunk/eCard/eCardMVC/Platnosci/Controllers/MerchantController.cs
===================================================================
--- /trunk/eCard/eCardMVC/Platnosci/Controllers/MerchantController.cs (revision 957)
+++ /trunk/eCard/eCardMVC/Platnosci/Controllers/MerchantController.cs (revision 959)
@@ -53,5 +53,5 @@
                 return View("Error1", _funkcjePlatnosci.InitErrorViewData(_translateManager.Translate("tlumaczenia", "error_hash"), payer.Id_faktury));
             
-            var adres = _eCardData.GetUrl(merchant);
+            var adres = _eCardData.GetUrl(merchant); 
             Response.Redirect(adres);           
             return new EmptyResult();          
Index: /trunk/eCard/eCardMVC/Platnosci.Tests/Platnosci.Tests.csproj
===================================================================
--- /trunk/eCard/eCardMVC/Platnosci.Tests/Platnosci.Tests.csproj (revision 954)
+++ /trunk/eCard/eCardMVC/Platnosci.Tests/Platnosci.Tests.csproj (revision 959)
@@ -84,4 +84,5 @@
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="TestRunner.cs" />
+    <Compile Include="Web\eCardDataTests.cs" />
     <Compile Include="Web\FunkcjePlatnosciTests.cs" />
     <Compile Include="Web\MerchantControllerTests.cs" />
Index: /trunk/eCard/eCardMVC/Platnosci.Tests/Web/eCardDataTests.cs
===================================================================
--- /trunk/eCard/eCardMVC/Platnosci.Tests/Web/eCardDataTests.cs (revision 959)
+++ /trunk/eCard/eCardMVC/Platnosci.Tests/Web/eCardDataTests.cs (revision 959)
@@ -0,0 +1,125 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Platnosci.Models;
+using Platnosci.Core;
+using Platnosci.Core.Interface;
+using Platnosci.Core.Linq;
+
+namespace Platnosci.Tests.Web
+{
+    [TestFixture]
+    class eCardDataTests
+    { 
+        private readonly Function _function = new Function();
+        [Test]
+        [Category("Unit")]
+        public void Set_Hash_Return_zlyHash(){
+            var repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var platnosc = _function.CreateNewPayment(123, true, DateTime.Now, 1);
+            repPayment.Insert(platnosc);
+           
+            var ecarddata = new eCardData(repPayment);
+           
+            var merchant = new Merchant(){
+                Payment = platnosc,
+                Id = "171485000",
+                Password = "ashSeth2",
+            };
+            var result = ecarddata.SetHash(merchant);
+            Assert.That(result, Is.EqualTo(Merchant.BAD_HASH));
+        }
+        [Test]
+        [Category("Unit")]
+        public void Set_Hash_Return_Payment_Is_Null()
+        {
+            var repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var platnosc = _function.CreateNewPayment(123, true, DateTime.Now, 1);
+            
+            repPayment.Insert(platnosc);
+
+            var ecarddata = new eCardData(repPayment);
+
+            var merchant = new Merchant()
+            {
+                Payment = new PlatnosciEcard(){
+                    ORDERDESCRIPTION = "dd",
+                    IDFaktury = 21,
+                    Data = DateTime.Now
+                },
+                Id = "171485000",
+                Password = "ashSeth2",
+            };
+            var result = ecarddata.SetHash(merchant);
+            Assert.That(result, Is.EqualTo(Merchant.HASH_ERROR_INFO));
+        }
+        [Test]
+        [Category("Unit")]
+        public void Set_Hash_Return_Correct_Hash()
+        {
+            var repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var platnosc = _function.CreateNewPayment(123, true, DateTime.Now, 1);
+            platnosc.AMOUNT = 229;
+            platnosc.CURRENCY = FunkcjePlatnosci.PLN;
+
+            repPayment.Insert(platnosc);
+
+            var ecarddata = new eCardData(repPayment);
+
+            var merchant = new Merchant()
+            {
+                Payment = platnosc,
+                Id = "171485000",
+                Password = "ashSeth2",
+            };
+            var result = ecarddata.SetHash(merchant);
+            Assert.That(result.Length, Is.EqualTo(48) );
+        }
+        [Test]
+        [Category("Unit")]
+        public void Set_Hash_Amount_Zero_Return_zlyHash()
+        {
+            var repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var platnosc = _function.CreateNewPayment(123, true, DateTime.Now, 1);
+            platnosc.AMOUNT = 0;
+            platnosc.CURRENCY = FunkcjePlatnosci.PLN;
+
+            repPayment.Insert(platnosc);
+
+            var ecarddata = new eCardData(repPayment);
+
+            var merchant = new Merchant()
+            {
+                Payment = platnosc,
+                Id = "171485000",
+                Password = "ashSeth2",
+            };
+            var result = ecarddata.SetHash(merchant);
+            Assert.That(result, Is.EqualTo(Merchant.BAD_HASH));
+        }
+        [Test]
+        [Category("Unit")]
+        public void Set_Hash_Bad_Password_Return_zlyHash()
+        {
+            var repPayment = new Repository<PlatnosciEcard>(new FakeDataContext());
+            var platnosc = _function.CreateNewPayment(123, true, DateTime.Now, 1);
+            platnosc.AMOUNT = 229;
+            platnosc.CURRENCY = FunkcjePlatnosci.PLN;
+
+            repPayment.Insert(platnosc);
+
+            var ecarddata = new eCardData(repPayment);
+
+            var merchant = new Merchant()
+            {
+                Payment = platnosc,
+                Id = "TEST",
+                Password = "test",
+            };
+            var result = ecarddata.SetHash(merchant);
+            Assert.That(result, Is.EqualTo(Merchant.BAD_HASH));
+        }
+    }
+}
