Пример #1
0
        public void CarrelloTest1()
        {
            using (new UnitOfWorkScope()) {
                Carrello carrelloTest = recuperaCarrelloPerTest();

                gestoreCarrello.caricaCarrello(carrelloTest.id);

                // Cambio una info nella testata e una descrizione in un riga
                carrelloTest.note = DateTime.Now.ToString();

                // Cambio anche una nota sulle righe per causare
                foreach (var riga in carrello.righeCarrello)
                {
                    riga.descrizione = DateTime.Now.ToString();
                }

                int numRigheOrig = carrello.righeCarrello.Count;

                // ora aggiungo una riga in fondo. Prendo una foto caso che non sia già nel carrello
                var          fotos = carrello.righeCarrello.Select(r => r.fotografia).Distinct();
                RigaCarrello riga3 = new RigaCarrello();
                riga3.fotografia    = UnitOfWorkScope.currentDbContext.Fotografie.AsEnumerable().Except(fotos).First();
                riga3.quantita      = 1;
                riga3.fotografo     = riga3.fotografia.fotografo;
                riga3.prodotto      = UnitOfWorkScope.currentDbContext.FormatiCarta.First();
                riga3.discriminator = RigaCarrello.TIPORIGA_STAMPA;
                riga3.descrizione   = "DACANC";
                riga3.nomeStampante = Costanti.NomeStampantePdf;
                gestoreCarrello.aggiungiRiga(riga3);

                // Prima salvo senza cambiare niente.
                gestoreCarrello.salvare();

                // -----
                // Eseguo una query sql con un altra connessione, per vedere che la riga sia stata aggiunta
                object[] parametri = { carrello.id };
                var      cntQuery  = UnitOfWorkScope.currentDbContext.Database.SqlQuery <int>("select count(*) from RigheCarrelli where carrello_id = {0}", parametri);
                int      numRigheA = cntQuery.First <int>();
                Assert.IsTrue(numRigheA == numRigheOrig + 1);

                // Ora riprendo il carrello ed elimino la riga 3
                gestoreCarrello.caricaCarrello(carrelloTest.id);
                RigaCarrello rigaDacanc = carrello.righeCarrello.Single(r => r.descrizione == "DACANC");
                gestoreCarrello.removeRiga(rigaDacanc);

                // Eseguo una query sql con un altra connessione, per vedere che ancora non c'è stato il commit
                cntQuery = UnitOfWorkScope.currentDbContext.Database.SqlQuery <int>("select count(*) from RigheCarrelli where carrello_id = {0}", parametri);
                int numRigheB = cntQuery.First <int>();
                Assert.IsTrue(numRigheB == numRigheA);


                gestoreCarrello.salvare();


                // Eseguo una query sql con un altra connessione, per vedere che la riga sia stata eliminata
                cntQuery = UnitOfWorkScope.currentDbContext.Database.SqlQuery <int>("select count(*) from RigheCarrelli where carrello_id = {0}", parametri);
                int numRigheC = cntQuery.First <int>();
                Assert.IsTrue(numRigheC == numRigheOrig);
            }
        }
Пример #2
0
        public void CarrelloTest3EliminaRiga()
        {
#if COSI_FUNZIONA_BENE
            Guid guid = new Guid("625a1ed1-6e22-4de7-b8c9-2420de1bcb5e");
            using (LumenEntities ctx = new LumenEntities()) {
                Carrello carrello = ctx.Carrelli
                                    .Include("righeCarrello")
                                    .Single(r => r.id == guid);

                int          conta      = 0;
                RigaCarrello rigaDacanc = null;
                foreach (var riga in carrello.righeCarrello)
                {
                    if (++conta == 2)
                    {
                        rigaDacanc = riga;
                    }
                }

                if (rigaDacanc != null)
                {
                    carrello.righeCarrello.Remove(rigaDacanc);
                    ctx.RigheCarrelli.Remove(rigaDacanc);
                }

                ctx.SaveChanges();
            }
#endif
            // Cerco un carrello che non sia venduto, con almeno due righe
            Guid guid = Guid.Empty;

            using (LumenEntities ctx = new LumenEntities()) {
                Carrello carrello = ctx.Carrelli
                                    .Include("righeCarrello")
                                    .Where(c => c.venduto == false && c.righeCarrello.Count > 1)
                                    .FirstOrDefault();

                if (carrello != null)
                {
                    guid = carrello.id;
                }
            }

            if (guid != Guid.Empty)
            {
                // Carrello carrelloTest = recuperaCarrelloPerTest();
                using (GestoreCarrello ges = new GestoreCarrello()) {
                    ges.caricaCarrello(guid);

                    RigaCarrello rigaDacanc = ges.carrello.righeCarrello.AsEnumerable().ElementAt(1);
                    ges.removeRiga(rigaDacanc);
                    ges.salvare();
                }
            }
        }