Esempio n. 1
0
        public void TestAddNewBusinessUser()
        {
            var a  = EntityHelper.GetAccount("first", "lastName");
            var a2 = EntityHelper.GetAccount("first1", "lastName1");
            var b  = EntityHelper.GetBusiness("business1", Category.ActiveLife);

            using (var Scope = new SQLiteDatabaseScope <PraLoupAutoMappingConfiguration>())
            {
                using (ISession Session = Scope.OpenSession())
                {
                    Session.Transaction.Begin();
                    IRepository r = new GenericRepository(Session);
                    EntityDataService <Business, BusinessValidator> bds = new EntityDataService <Business, BusinessValidator>(r, new BusinessValidator());

                    IDataService    ds = new DataService(null, bds, null, null, null, null, null, null, null, new UnitOfWork(Session));
                    BusinessActions ba = new BusinessActions(a, ds, new PraLoup.Infrastructure.Logging.Log4NetLogger(), null);
                    ba.CreateBusiness(b, a, Role.BusinessAdmin);
                    Session.Transaction.Commit();
                }

                using (ISession Session = Scope.OpenSession())
                {
                    Session.BeginTransaction();
                    IRepository r = new GenericRepository(Session);
                    EntityDataService <Business, BusinessValidator> bds = new EntityDataService <Business, BusinessValidator>(r, new BusinessValidator());
                    IDataService    ds = new DataService(null, bds, null, null, null, null, null, null, null, new UnitOfWork(Session));
                    BusinessActions ba = new BusinessActions(a, ds, new PraLoup.Infrastructure.Logging.Log4NetLogger(), null);

                    var b1 = ba.GetBusiness(b.Id);
                    ba.AddBusinessUser(b1, a2, Role.StoreStaff);
                    Session.Transaction.Commit();
                }
            }
        }
Esempio n. 2
0
        public void TestCreateBusiness()
        {
            var a = EntityHelper.GetAccount("first", "lastName");
            var b = EntityHelper.GetBusiness("business1", Category.ActiveLife);

            using (var Scope = new SQLiteDatabaseScope<PraLoupAutoMappingConfiguration>())
            {
                using (ISession Session = Scope.OpenSession())
                {
                    Session.Transaction.Begin();
                    IRepository r = new GenericRepository(Session);
                    EntityDataService<Business, BusinessValidator> bds = new EntityDataService<Business, BusinessValidator>(r, new BusinessValidator());

                    IDataService ds = new DataService(null, bds, null, null, null, null, null, null, null, new UnitOfWork(Session));
                    BusinessActions ba = new BusinessActions(a, ds, new PraLoup.Infrastructure.Logging.Log4NetLogger(), null);
                    ba.CreateBusiness(b, a, Role.BusinessAdmin);
                    Session.Transaction.Commit();
                }

                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService<Business, BusinessValidator> bds = new EntityDataService<Business, BusinessValidator>(r, new BusinessValidator());

                    var b1 = bds.Find(b.Id);
                    Assert.IsNotNull(b1);
                    Assert.AreEqual(b, b1);
                }
            }
        }
Esempio n. 3
0
        public void IsFriend_Success()
        {
            using (var Scope = new SQLiteDatabaseScope <PraLoupAutoMappingConfiguration>())
            {
                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);

                    EntityDataService <Account, AccountValidator>       ads = new EntityDataService <Account, AccountValidator>(r, new AccountValidator());
                    EntityDataService <Connection, ConnectionValidator> cds = new EntityDataService <Connection, ConnectionValidator>(r, new ConnectionValidator());
                    DataService ds = new DataService(ads, null, null, null, null, cds, null, null, null, new UnitOfWork(Session));
                    Session.BeginTransaction();
                    IEnumerable <string> s;
                    ds.Account.SaveOrUpdateAll(new Account[] { myself, friend, friend2, friend3, friend4 }, out s);
                    Session.Transaction.Commit();

                    Assert.IsTrue(myself.IsFriend(friend, ds));
                    Assert.IsTrue(myself.IsFriend(friend2, ds));
                    Assert.IsTrue(friend.IsFriend(myself, ds));
                    Assert.IsTrue(friend2.IsFriend(myself, ds));
                    Assert.IsFalse(myself.IsFriend(friend3, ds));
                    Assert.IsFalse(friend3.IsFriend(myself, ds));
                }
            }
        }
Esempio n. 4
0
        public void TestCreatePromotion()
        {
            var a = EntityHelper.GetAccount("first", "lastName");
            var b = EntityHelper.GetBusiness("business1", Category.ActiveLife);
            var e = EntityHelper.GetEvent("ev name", "venue name");
            var d = EntityHelper.GetDeal("dealname", 10);
            var p = new Promotion(b, e, d, 100, 5);

            using (var Scope = new SQLiteDatabaseScope<PraLoupAutoMappingConfiguration>())
            {
                using (ISession Session = Scope.OpenSession())
                {

                    IRepository r = new GenericRepository(Session);
                    EntityDataService<Business, BusinessValidator> bds = new EntityDataService<Business, BusinessValidator>(r, new BusinessValidator());
                    EntityDataService<Promotion, PromotionValidator> pds = new EntityDataService<Promotion, PromotionValidator>(r, new PromotionValidator());

                    IDataService ds = new DataService(null, bds, pds, null, null, null, null, null, null, new UnitOfWork(Scope.GetSessionFactory().OpenSession()));
                    BusinessActions ba = new BusinessActions(a, ds, Log, null);
                    PromotionActions pa = new PromotionActions(a, ds, Log, null);

                    Session.Transaction.Begin();
                    b = ba.CreateBusiness(b, a, Role.BusinessAdmin);
                    Assert.IsNotNull(b, "business should be saved succesfully");
                    Session.Transaction.Commit();
                }

                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService<Business, BusinessValidator> bds = new EntityDataService<Business, BusinessValidator>(r, new BusinessValidator());
                    EntityDataService<Promotion, PromotionValidator> pds = new EntityDataService<Promotion, PromotionValidator>(r, new PromotionValidator());

                    IDataService ds = new DataService(null, bds, pds, null, null, null, null, null, null, new UnitOfWork(Scope.GetSessionFactory().OpenSession()));
                    BusinessActions ba = new BusinessActions(a, ds, Log, null);
                    PromotionActions pa = new PromotionActions(a, ds, Log, null);

                    Session.Transaction.Begin();
                    p = pa.SavePromotion(p);
                    Assert.IsNotNull(p, "promotion should be saved succesfully");

                    Session.Transaction.Commit();
                }

                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService<Promotion, PromotionValidator> pds = new EntityDataService<Promotion, PromotionValidator>(r, new PromotionValidator());

                    var p1 = pds.Find(p.Id);
                    Assert.IsNotNull(p1);
                    Assert.AreEqual(p, p1);
                }
            }
        }
Esempio n. 5
0
        public void TestCreatePromotion()
        {
            var a = EntityHelper.GetAccount("first", "lastName");
            var b = EntityHelper.GetBusiness("business1", Category.ActiveLife);
            var e = EntityHelper.GetEvent("ev name", "venue name");
            var d = EntityHelper.GetDeal("dealname", 10);
            var p = new Promotion(b, e, d, 100, 5);

            using (var Scope = new SQLiteDatabaseScope <PraLoupAutoMappingConfiguration>())
            {
                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService <Business, BusinessValidator>   bds = new EntityDataService <Business, BusinessValidator>(r, new BusinessValidator());
                    EntityDataService <Promotion, PromotionValidator> pds = new EntityDataService <Promotion, PromotionValidator>(r, new PromotionValidator());

                    IDataService     ds = new DataService(null, bds, pds, null, null, null, null, null, null, new UnitOfWork(Scope.GetSessionFactory().OpenSession()));
                    BusinessActions  ba = new BusinessActions(a, ds, Log, null);
                    PromotionActions pa = new PromotionActions(a, ds, Log, null);

                    Session.Transaction.Begin();
                    b = ba.CreateBusiness(b, a, Role.BusinessAdmin);
                    Assert.IsNotNull(b, "business should be saved succesfully");
                    Session.Transaction.Commit();
                }

                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService <Business, BusinessValidator>   bds = new EntityDataService <Business, BusinessValidator>(r, new BusinessValidator());
                    EntityDataService <Promotion, PromotionValidator> pds = new EntityDataService <Promotion, PromotionValidator>(r, new PromotionValidator());

                    IDataService     ds = new DataService(null, bds, pds, null, null, null, null, null, null, new UnitOfWork(Scope.GetSessionFactory().OpenSession()));
                    BusinessActions  ba = new BusinessActions(a, ds, Log, null);
                    PromotionActions pa = new PromotionActions(a, ds, Log, null);

                    Session.Transaction.Begin();
                    p = pa.SavePromotion(p);
                    Assert.IsNotNull(p, "promotion should be saved succesfully");

                    Session.Transaction.Commit();
                }

                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService <Promotion, PromotionValidator> pds = new EntityDataService <Promotion, PromotionValidator>(r, new PromotionValidator());

                    var p1 = pds.Find(p.Id);
                    Assert.IsNotNull(p1);
                    Assert.AreEqual(p, p1);
                }
            }
        }
Esempio n. 6
0
        public void CreateActivityAndQuery()
        {
            using (var Scope = new SQLiteDatabaseScope<PraLoupAutoMappingConfiguration>())
            {
                using (ISession Session = Scope.OpenSession())
                {
                    //var ev = GetEvent("mytestevent", "mytestvenue");
                    //var a = GetAccount("fristname", "lastname");
                    //var act = new Activity(a, ev, Privacy.Public);

                    //var r = new DataServ

                }
            }
        }
Esempio n. 7
0
        public void IsFriendGenerateOkSQL_Success()
        {
            using (var Scope = new SQLiteDatabaseScope<PraLoupAutoMappingConfiguration>())
            {
                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService<Account, AccountValidator> ads = new EntityDataService<Account, AccountValidator>(r, new AccountValidator());

                    Session.BeginTransaction();
                    Assert.IsTrue(ads.SaveOrUpdate(myself));
                    Assert.IsTrue(ads.SaveOrUpdate(friend));
                    Assert.IsTrue(ads.SaveOrUpdate(friend2));
                    Assert.IsTrue(ads.SaveOrUpdate(friend3));
                    Assert.IsTrue(ads.SaveOrUpdate(friend4));
                    Session.Transaction.Commit();
                }

                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService<Account, AccountValidator> ads = new EntityDataService<Account, AccountValidator>(r, new AccountValidator());
                    EntityDataService<Connection, ConnectionValidator> cds = new EntityDataService<Connection, ConnectionValidator>(r, new ConnectionValidator());

                    var m = ads.Find(myself.Id);
                    var f = ads.Find(friend.Id);
                    var f3 = ads.Find(friend3.Id);
                    var f4 = ads.Find(friend4.Id);

                    // there should be 1 friend for f
                    Log.Debug("executing isfriend");
                    var spec = new AccountGetFriendQuery(f);
                    Assert.IsTrue(ads.ExecuteQuery(spec).RowCount() == 1);
                    spec = new AccountGetFriendQuery(m);
                    Assert.IsTrue(ads.ExecuteQuery(spec).RowCount() == 2);

                    // m should be friends of friend of f3
                    Log.Debug("executing isfriendoffriend");
                    var fof = new ConnectionIsFriendOfFriendQuery(m, f3);
                    Assert.IsTrue(cds.ExecuteQuery(fof).RowCount() > 0);

                    // negative case
                    fof = new ConnectionIsFriendOfFriendQuery(m, f4);
                    Assert.IsTrue(cds.ExecuteQuery(fof).RowCount() == 0);
                }
            }
        }
Esempio n. 8
0
 public void AccountBasicCRUD_Success()
 {
     using (var Scope = new SQLiteDatabaseScope<PraLoupAutoMappingConfiguration>())
     {
         using (ISession Session = Scope.OpenSession())
         {
             var now = DateTime.Now;
             new PersistenceSpecification<Account>(Session, new CustomEqualityComparer())
            .CheckProperty(c => c.FirstName, "John")
            .CheckProperty(c => c.LastName, "Doe")
            .CheckProperty(c => c.FacebookLogon, new FacebookLogon() { FacebookId = 1000, AccessToken = "abc", Expires = now })
            .CheckProperty(c => c.Email, "*****@*****.**")
            .CheckProperty(c => c.Connections, new List<Connection>() { new Connection(1, 2), new Connection(1, 3) })
            .VerifyTheMappings();
         }
     }
 }
Esempio n. 9
0
        public void InvitationBasicCRUD_Success()
        {
            using (var Scope = new SQLiteDatabaseScope<PraLoupAutoMappingConfiguration>())
            {
                using (ISession Session = Scope.OpenSession())
                {
                    var updatedTime = DateTime.Now.Date;
                    // var organizer = GetAccount("firstname", "lastname");
                    // var ev = GetEvent("my test event", "my test venue name");

                    // new PersistenceSpecification<Invitation>(Session)
                    //.CheckProperty(i => i.Activity, 1234)
                    //     //.CheckReference(i => i.Comments, )
                    //.CheckReference(c => c.Organizer, organizer)
                    //.CheckProperty(c => c.Privacy, Privacy.Public)
                    //.CheckProperty(c => c.UpdatedTime, updatedTime)
                    //.VerifyTheMappings();
                }
            }
        }
Esempio n. 10
0
 public void IsFriendOfFriend_Success()
 {
     using (var Scope = new SQLiteDatabaseScope<PraLoupAutoMappingConfiguration>())
     {
         using (ISession Session = Scope.OpenSession())
         {
             IRepository r = new GenericRepository(Session);
             EntityDataService<Account, AccountValidator> ads = new EntityDataService<Account, AccountValidator>(r, new AccountValidator());
             EntityDataService<Connection, ConnectionValidator> cds = new EntityDataService<Connection, ConnectionValidator>(r, new ConnectionValidator());
             DataService ds = new DataService(ads, null, null, null, null, cds, null, null, null, new UnitOfWork(Session));
             ds.UnitOfWork.Begin();
             IEnumerable<string> s;
             ds.Account.SaveOrUpdateAll(new Account[] { myself, friend, friend2, friend3, friend4 }, out s);
             ds.UnitOfWork.Commit();
             Assert.IsTrue(myself.IsFriendOfFriend(friend3, ds));
             Assert.IsTrue(friend3.IsFriendOfFriend(myself, ds));
             Assert.IsFalse(myself.IsFriendOfFriend(friend4, ds));
             Assert.IsFalse(friend4.IsFriendOfFriend(myself, ds));
         }
     }
 }
Esempio n. 11
0
        public void IsFriendGenerateOkSQL_Success()
        {
            using (var Scope = new SQLiteDatabaseScope<PraLoupAutoMappingConfiguration>())
            {
                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService<Account, AccountValidator> ads = new EntityDataService<Account, AccountValidator>(r, new AccountValidator());
                    var cds = new EntityDataService<Connection, ConnectionValidator>(r, new ConnectionValidator());
                    DataService ds = new DataService(ads, null, null, null, null, cds, null, null, null, new UnitOfWork(Session));
                    ds.UnitOfWork.Begin();
                    IEnumerable<string> s;
                    ds.Account.SaveOrUpdateAll(new Account[] { myself, friend, friend2, friend3, friend4 }, out s);
                    ds.UnitOfWork.End();
                }
                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService<Account, AccountValidator> ads = new EntityDataService<Account, AccountValidator>(r, new AccountValidator());
                    var cds = new EntityDataService<Connection, ConnectionValidator>(r, new ConnectionValidator());
                    DataService ds = new DataService(ads, null, null, null, null, cds, null, null, null, new UnitOfWork(Session));
                    ds.UnitOfWork.Begin();
                    var c = ads.GetAll().ToList();
                    var m = ads.Find(myself.Id);
                    var f = ads.Find(friend.Id);
                    var f3 = ads.Find(friend3.Id);

                    Log.Debug("executing isfriend");
                    Assert.IsTrue(m.IsFriend(f, ds));

                    Log.Debug("executing isfriendoffriend");
                    Assert.IsTrue(m.IsFriendOfFriend(f3, ds));
                    ds.UnitOfWork.End();
                }
            }
        }
Esempio n. 12
0
        public void IsFriendGenerateOkSQL_Success()
        {
            using (var Scope = new SQLiteDatabaseScope <PraLoupAutoMappingConfiguration>())
            {
                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService <Account, AccountValidator> ads = new EntityDataService <Account, AccountValidator>(r, new AccountValidator());
                    var         cds = new EntityDataService <Connection, ConnectionValidator>(r, new ConnectionValidator());
                    DataService ds  = new DataService(ads, null, null, null, null, cds, null, null, null, new UnitOfWork(Session));
                    ds.UnitOfWork.Begin();
                    IEnumerable <string> s;
                    ds.Account.SaveOrUpdateAll(new Account[] { myself, friend, friend2, friend3, friend4 }, out s);
                    ds.UnitOfWork.End();
                }
                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService <Account, AccountValidator> ads = new EntityDataService <Account, AccountValidator>(r, new AccountValidator());
                    var         cds = new EntityDataService <Connection, ConnectionValidator>(r, new ConnectionValidator());
                    DataService ds  = new DataService(ads, null, null, null, null, cds, null, null, null, new UnitOfWork(Session));
                    ds.UnitOfWork.Begin();
                    var c  = ads.GetAll().ToList();
                    var m  = ads.Find(myself.Id);
                    var f  = ads.Find(friend.Id);
                    var f3 = ads.Find(friend3.Id);

                    Log.Debug("executing isfriend");
                    Assert.IsTrue(m.IsFriend(f, ds));

                    Log.Debug("executing isfriendoffriend");
                    Assert.IsTrue(m.IsFriendOfFriend(f3, ds));
                    ds.UnitOfWork.End();
                }
            }
        }
Esempio n. 13
0
 public void PromotionBasicCRUD_Success()
 {
     using (var Scope = new SQLiteDatabaseScope<PraLoupAutoMappingConfiguration>())
     {
         using (ISession Session = Scope.OpenSession())
         {
             var updatedTime = DateTime.Now.Date;
             var ev = EntityHelper.GetEvent("my test event", "my test venue name");
             var d = EntityHelper.GetDeal("buy one get one beer", 100);
             IList<Deal> deals = new List<Deal>() { d };
             new PersistenceSpecification<Promotion>(Session, new PromotionEqualityComparer())
            .CheckProperty(c => c.Event, ev)
            .CheckProperty(c => c.Deals, deals)
            .VerifyTheMappings();
         }
     }
 }
        public void TestAcceptDeclinePromotionInstance()
        {
            var a  = EntityHelper.GetAccount("first", "lastName");
            var i1 = EntityHelper.GetAccount("invite1", "lastName");
            var i2 = EntityHelper.GetAccount("invite2", "lastName");
            var i3 = EntityHelper.GetAccount("invite3", "lastName");
            var b  = EntityHelper.GetBusiness("business1", Category.ActiveLife);
            var e  = EntityHelper.GetEvent("ev name", "venue name");
            var d  = EntityHelper.GetDeal("dealname", 10);
            var p  = new Promotion(b, e, d, 100, 5);

            using (var Scope = new SQLiteDatabaseScope <PraLoupAutoMappingConfiguration>())
            {
                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService <Business, BusinessValidator>   bds = new EntityDataService <Business, BusinessValidator>(r, new BusinessValidator());
                    EntityDataService <Promotion, PromotionValidator> pds = new EntityDataService <Promotion, PromotionValidator>(r, new PromotionValidator());

                    IDataService     ds = new DataService(null, bds, pds, null, null, null, null, null, null, new UnitOfWork(Session));
                    BusinessActions  ba = new BusinessActions(a, ds, Log, null);
                    PromotionActions pa = new PromotionActions(a, ds, Log, null);

                    Session.Transaction.Begin();
                    b = ba.CreateBusiness(b, a, Role.BusinessAdmin);
                    Assert.IsNotNull(b, "business should be saved succesfully");
                    Session.Transaction.Commit();
                }

                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService <Business, BusinessValidator>   bds = new EntityDataService <Business, BusinessValidator>(r, new BusinessValidator());
                    EntityDataService <Promotion, PromotionValidator> pds = new EntityDataService <Promotion, PromotionValidator>(r, new PromotionValidator());

                    IDataService     ds = new DataService(null, bds, pds, null, null, null, null, null, null, new UnitOfWork(Session));
                    BusinessActions  ba = new BusinessActions(a, ds, Log, null);
                    PromotionActions pa = new PromotionActions(a, ds, Log, null);

                    Session.Transaction.Begin();
                    p = pa.SavePromotion(p);
                    Assert.IsNotNull(p, "promotion should be saved succesfully");

                    Session.Transaction.Commit();
                }
                IEnumerable <PromotionInstance> promoInstances;
                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r    = new GenericRepository(Session);
                    var         bds  = new EntityDataService <Business, BusinessValidator>(r, new BusinessValidator());
                    var         pds  = new EntityDataService <Promotion, PromotionValidator>(r, new PromotionValidator());
                    var         pids = new EntityDataService <PromotionInstance, PromotionInstanceValidator>(r, new PromotionInstanceValidator());

                    IDataService             ds  = new DataService(null, bds, pds, null, pids, null, null, null, null, new UnitOfWork(Session));
                    BusinessActions          ba  = new BusinessActions(a, ds, Log, null);
                    PromotionActions         pa  = new PromotionActions(a, ds, Log, null);
                    PromotionInstanceActions pia = new PromotionInstanceActions(a, ds, Log, null);

                    Session.Transaction.Begin();
                    promoInstances = pia.CreatePromoInstance(p, new Account[] { i1, i2, i3 }, "going here");
                    Assert.IsNotNull(promoInstances, "promotion should be saved succesfully");
                    Assert.AreEqual(3, promoInstances.Count(), "we should get 2 promotion instance");

                    Session.Transaction.Commit();
                }

                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r    = new GenericRepository(Session);
                    var         bds  = new EntityDataService <Business, BusinessValidator>(r, new BusinessValidator());
                    var         pds  = new EntityDataService <Promotion, PromotionValidator>(r, new PromotionValidator());
                    var         pids = new EntityDataService <PromotionInstance, PromotionInstanceValidator>(r, new PromotionInstanceValidator());

                    IDataService             ds  = new DataService(null, bds, pds, null, pids, null, null, null, null, new UnitOfWork(Session));
                    PromotionInstanceActions pia = new PromotionInstanceActions(i1, ds, Log, null);

                    Session.Transaction.Begin();
                    var pia1 = pia.Accept(promoInstances.First(), "this sound like fun");

                    Assert.IsNotNull(pia1);
                    Assert.AreEqual(StatusType.Accept, pia1.Status.StatusType);
                    Assert.IsNotNull(pia1.Coupons, "Coupoin should not be null");
                    Assert.IsNotNull(pia1.Coupons.First().CouponCode, "Coupon code should be generated");
                    Session.Transaction.Commit();
                }

                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r    = new GenericRepository(Session);
                    var         bds  = new EntityDataService <Business, BusinessValidator>(r, new BusinessValidator());
                    var         pds  = new EntityDataService <Promotion, PromotionValidator>(r, new PromotionValidator());
                    var         pids = new EntityDataService <PromotionInstance, PromotionInstanceValidator>(r, new PromotionInstanceValidator());

                    IDataService             ds  = new DataService(null, bds, pds, null, pids, null, null, null, null, new UnitOfWork(Session));
                    PromotionInstanceActions pia = new PromotionInstanceActions(i2, ds, Log, null);

                    Session.Transaction.Begin();
                    var pia2 = pia.Decline(promoInstances.ElementAt(1), "this sound like fun");

                    Assert.IsNotNull(pia2);
                    Assert.AreEqual(StatusType.Decline, pia2.Status.StatusType);
                    Assert.IsNull(pia2.Coupons, "Coupoin should not be null");
                    Session.Transaction.Commit();
                }
            }
        }
        public void TestAcceptDeclinePromotionInstance()
        {
            var a = EntityHelper.GetAccount("first", "lastName");
            var i1 = EntityHelper.GetAccount("invite1", "lastName");
            var i2 = EntityHelper.GetAccount("invite2", "lastName");
            var i3 = EntityHelper.GetAccount("invite3", "lastName");
            var b = EntityHelper.GetBusiness("business1", Category.ActiveLife);
            var e = EntityHelper.GetEvent("ev name", "venue name");
            var d = EntityHelper.GetDeal("dealname", 10);
            var p = new Promotion(b, e, d, 100, 5);

            using (var Scope = new SQLiteDatabaseScope<PraLoupAutoMappingConfiguration>())
            {
                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService<Business, BusinessValidator> bds = new EntityDataService<Business, BusinessValidator>(r, new BusinessValidator());
                    EntityDataService<Promotion, PromotionValidator> pds = new EntityDataService<Promotion, PromotionValidator>(r, new PromotionValidator());

                    IDataService ds = new DataService(null, bds, pds, null, null, null, null, null, null, new UnitOfWork(Session));
                    BusinessActions ba = new BusinessActions(a, ds, Log, null);
                    PromotionActions pa = new PromotionActions(a, ds, Log, null);

                    Session.Transaction.Begin();
                    b = ba.CreateBusiness(b, a, Role.BusinessAdmin);
                    Assert.IsNotNull(b, "business should be saved succesfully");
                    Session.Transaction.Commit();
                }

                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    EntityDataService<Business, BusinessValidator> bds = new EntityDataService<Business, BusinessValidator>(r, new BusinessValidator());
                    EntityDataService<Promotion, PromotionValidator> pds = new EntityDataService<Promotion, PromotionValidator>(r, new PromotionValidator());

                    IDataService ds = new DataService(null, bds, pds, null, null, null, null, null, null, new UnitOfWork(Session));
                    BusinessActions ba = new BusinessActions(a, ds, Log, null);
                    PromotionActions pa = new PromotionActions(a, ds, Log, null);

                    Session.Transaction.Begin();
                    p = pa.SavePromotion(p);
                    Assert.IsNotNull(p, "promotion should be saved succesfully");

                    Session.Transaction.Commit();
                }
                IEnumerable<PromotionInstance> promoInstances;
                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    var bds = new EntityDataService<Business, BusinessValidator>(r, new BusinessValidator());
                    var pds = new EntityDataService<Promotion, PromotionValidator>(r, new PromotionValidator());
                    var pids = new EntityDataService<PromotionInstance, PromotionInstanceValidator>(r, new PromotionInstanceValidator());

                    IDataService ds = new DataService(null, bds, pds, null, pids, null, null, null, null, new UnitOfWork(Session));
                    BusinessActions ba = new BusinessActions(a, ds, Log, null);
                    PromotionActions pa = new PromotionActions(a, ds, Log, null);
                    PromotionInstanceActions pia = new PromotionInstanceActions(a, ds, Log, null);

                    Session.Transaction.Begin();
                    promoInstances = pia.CreatePromoInstance(p, new Account[] { i1, i2, i3 }, "going here");
                    Assert.IsNotNull(promoInstances, "promotion should be saved succesfully");
                    Assert.AreEqual(3, promoInstances.Count(), "we should get 2 promotion instance");

                    Session.Transaction.Commit();
                }

                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    var bds = new EntityDataService<Business, BusinessValidator>(r, new BusinessValidator());
                    var pds = new EntityDataService<Promotion, PromotionValidator>(r, new PromotionValidator());
                    var pids = new EntityDataService<PromotionInstance, PromotionInstanceValidator>(r, new PromotionInstanceValidator());

                    IDataService ds = new DataService(null, bds, pds, null, pids, null, null, null, null, new UnitOfWork(Session));
                    PromotionInstanceActions pia = new PromotionInstanceActions(i1, ds, Log, null);

                    Session.Transaction.Begin();
                    var pia1 = pia.Accept(promoInstances.First(), "this sound like fun");

                    Assert.IsNotNull(pia1);
                    Assert.AreEqual(StatusType.Accept, pia1.Status.StatusType);
                    Assert.IsNotNull(pia1.Coupons, "Coupoin should not be null");
                    Assert.IsNotNull(pia1.Coupons.First().CouponCode, "Coupon code should be generated");
                    Session.Transaction.Commit();
                }

                using (ISession Session = Scope.OpenSession())
                {
                    IRepository r = new GenericRepository(Session);
                    var bds = new EntityDataService<Business, BusinessValidator>(r, new BusinessValidator());
                    var pds = new EntityDataService<Promotion, PromotionValidator>(r, new PromotionValidator());
                    var pids = new EntityDataService<PromotionInstance, PromotionInstanceValidator>(r, new PromotionInstanceValidator());

                    IDataService ds = new DataService(null, bds, pds, null, pids, null, null, null, null, new UnitOfWork(Session));
                    PromotionInstanceActions pia = new PromotionInstanceActions(i2, ds, Log, null);

                    Session.Transaction.Begin();
                    var pia2 = pia.Decline(promoInstances.ElementAt(1), "this sound like fun");

                    Assert.IsNotNull(pia2);
                    Assert.AreEqual(StatusType.Decline, pia2.Status.StatusType);
                    Assert.IsNull(pia2.Coupons, "Coupoin should not be null");
                    Session.Transaction.Commit();
                }
            }
        }