Пример #1
0
        public void vendiFotoStampaDirettaTest()
        {
            using (new UnitOfWorkScope(false))
            {
                // Ho bisogno di una stampante con il formato carta A5
                StampantiAbbinateCollection stampantiAbbinate = StampantiAbbinateUtil.deserializza(Configurazione.UserConfigLumen.stampantiAbbinate);


                // TODO  il test presume che ci sia una stampante abbinata con la carta A5.
                //       se non esiste, creare un abbinamento ad hoc.

                _impl.carrello.intestazione = VenditoreSrvImpl.INTESTAZIONE_STAMPA_RAPIDA;

                ParamStampaFoto p = ricavaParamStampa();

                LumenEntities     dbContext = UnitOfWorkScope.currentDbContext;
                List <Fotografia> fotos     = (from f in dbContext.Fotografie.Include("fotografo")
                                               select f).Take(QUANTE).ToList();

                contaStampate = 0;

                _impl.aggiungereStampe(fotos, p);

                _impl.vendereCarrello();

                Assert.IsTrue(_impl.carrello.venduto);
                Assert.IsTrue(_impl.carrello.totaleAPagare > 0);
            }

            Console.WriteLine("FINITO");
        }
Пример #2
0
        public void stampaProviniFotoProviniTest()
        {
            using (new UnitOfWorkScope(false))
            {
                LumenEntities     dbContext = UnitOfWorkScope.currentDbContext;
                List <Fotografia> fotos     = (from f in dbContext.Fotografie.Include("fotografo")
                                               select f).Take(QUANTE).ToList();

                //Carico una stampa Provini
                ParamStampaProvini p = ricavaParamStampaProvini();
                p.numeroColonne  = 5;
                p.numeroRighe    = 5;
                p.macchiaProvini = false;

                _impl.aggiungereStampe(fotos, p);

                //Carico una stampa Foto
                ParamStampaFoto p2 = ricavaParamStampaFoto();

                CodaDiStampe c1 = new CodaDiStampe(p2, Costanti.NomeStampantePdf);

                Fotografia foto = (from f in dbContext.Fotografie.Include("fotografo")
                                   select f).Take(QUANTE + 1).ToList().Last();

                c1.EnqueueItem(new LavoroDiStampaFoto(foto, p2));
                c1.Start();

                List <Fotografia> fotos2 = (from f in dbContext.Fotografie.Include("fotografo")
                                            select f).Take(2 * QUANTE + 1).ToList();

                // Carico una stampa Provini
                ParamStampaProvini p3 = ricavaParamStampaProvini();
                p3.numeroColonne  = 3;
                p3.numeroRighe    = 4;
                p3.macchiaProvini = true;

                fotos2.RemoveRange(0, QUANTE + 1);

                _impl.aggiungereStampe(fotos2, p3);

                //Carico una stampa Foto
                ParamStampaFoto p4 = ricavaParamStampaFoto();

                CodaDiStampe c2 = new CodaDiStampe(p4, Costanti.NomeStampantePdf);

                Fotografia foto2 = (from f in dbContext.Fotografie.Include("fotografo")
                                    select f).Take(2 * QUANTE + 2).ToList().Last();

                c2.EnqueueItem(new LavoroDiStampaFoto(foto2, p4));
                c2.Start();
            }

            while (_contaElaborazioniTerminate != 2)
            {
                Thread.Sleep(1000);
            }
            Assert.IsTrue(esitoStampa == EsitoStampa.Ok);
        }
        private ParamStampaFoto creaParamStampaFoto(StampanteAbbinata stampanteAbbinata, bool autoZoomNoBordiBianchi)
        {
            ParamStampaFoto p = venditoreSrv.creaParamStampaFoto();

            p.nomeStampante          = stampanteAbbinata.StampanteInstallata.NomeStampante;
            p.formatoCarta           = stampanteAbbinata.FormatoCarta;
            p.autoZoomNoBordiBianchi = autoZoomNoBordiBianchi;
            // TODO per ora il nome della Porta a cui è collegata la stampante non lo uso. Non so cosa farci.

            return(p);
        }
Пример #4
0
        public void codaDiStampeConAbort()
        {
            ParamStampaFoto param = new ParamStampaFoto();

            CodaDiStampe c3 = new CodaDiStampe(param, "doPDF v7");

            c3.Stop();

            c3.EnqueueItem(new LavoroDiStampaFoto(new Fotografia(), new ParamStampaFoto()));
            // Accodo una stampa in modo da testare l'abort

            c3.Stop(Threading.PendingItemAction.AbortPendingItems);
            c3.Dispose();
        }
Пример #5
0
        private ParamStampaFoto ricavaParamStampa(string grandezza)
        {
            ParamStampaFoto p = new ParamStampaFoto();

            p.nomeStampante = "doPDF 9";

            LumenEntities dbContext = UnitOfWorkScope.currentDbContext;

            FormatoCarta formato = dbContext.FormatiCarta.FirstOrDefault(fc => fc.grandezza == grandezza);

            p.formatoCarta = formato;

            return(p);
        }
Пример #6
0
        public void vendiFotoTest()
        {
            using (new UnitOfWorkScope(false)) {
                _impl.creareNuovoCarrello();


                ParamStampaFoto p = ricavaParamStampa();

                LumenEntities     dbContext = UnitOfWorkScope.currentDbContext;
                List <Fotografia> fotos     = (from f in dbContext.Fotografie.Include("fotografo")
                                               select f).Take(QUANTE).ToList();

                if (fotos.Count == QUANTE)
                {
                    contaStampate = 0;

                    _impl.aggiungereStampe(fotos, p);

                    _impl.aggiungereMasterizzate(fotos);
                    _impl.setDatiDischetto(MasterizzaTarget.Cartella, Path.GetTempPath(), 7m);

                    Assert.IsFalse(_impl.carrello.venduto);

                    Assert.IsTrue(_impl.isPossibileSalvareCarrello);
                    Assert.IsTrue(_impl.isPossibileVendereCarrello);
                    Assert.IsTrue(_impl.isPossibileModificareCarrello);

                    _impl.vendereCarrello();

                    Assert.IsTrue(_impl.carrello.venduto);
                    Assert.IsTrue(_impl.carrello.totaleAPagare == 15 + 7);
                }
            }



            // TODO Qui non funziona e non capisco perché.
            // Mi va in fail durante la sleep
            //while( !venditaCompletata ) {
            //    System.Threading.Thread.Sleep( 6000 );
            //}

            //			_impl.stop();


            Console.WriteLine("FINITO");
        }
Пример #7
0
        private void PromoCalcGenerico(int qtaP, int qtaM, int qtaG, decimal prezzoPromoDesiderato)
        {
            using (new UnitOfWorkScope(false)) {
                _impl.creareNuovoCarrello();

                ParamStampaFoto paramP = ricavaParamStampa("P");
                ParamStampaFoto paramM = ricavaParamStampa("M");
                ParamStampaFoto paramG = ricavaParamStampa("G");

                Dictionary <string, int> mappa = new Dictionary <string, int> {
                    { "P", qtaP },
                    { "M", qtaM },
                    { "G", qtaG }
                };
                int totFoto = mappa.Values.Sum();

                LumenEntities     dbContext = UnitOfWorkScope.currentDbContext;
                List <Fotografia> fotos     = (from f in dbContext.Fotografie.Include("fotografo")
                                               select f).Take(totFoto).ToList();

                // Controllo che ci siano abbastanza foto nel database
                Assert.IsTrue(fotos.Count == totFoto);

                contaStampate = 0;

                int qq = 0;
                _impl.aggiungereStampe(fotos.Skip(qq).Take(mappa["P"]), paramP);
                qq += mappa["P"];
                _impl.aggiungereStampe(fotos.Skip(qq).Take(mappa["M"]), paramM);
                qq += mappa["M"];
                _impl.aggiungereStampe(fotos.Skip(qq).Take(mappa["G"]), paramG);

                _impl.ricalcolaTotaleCarrello();
                var totPagarePrima = _impl.carrello.totaleAPagare;

                Carrello cart = _impl.CalcolaPromozioni(true);

                var totPagareDopo = cart.totaleAPagare;

                Assert.AreEqual(totPagareDopo, prezzoPromoDesiderato);
            }



            Console.WriteLine("FINITO");
        }
Пример #8
0
        public void PromoCalTest9()
        {
            using (new UnitOfWorkScope()) {
                _impl.creareNuovoCarrello();

                ParamStampaFoto paramM4 = ricavaParamStampa("M");

                int totFoto = 12;

                LumenEntities     dbContext = UnitOfWorkScope.currentDbContext;
                List <Fotografia> fotos     = (from f in dbContext.Fotografie.Include("fotografo")
                                               select f).Take(totFoto).ToList();

                // Controllo che ci siano abbastanza foto nel database
                Assert.IsTrue(fotos.Count == totFoto);

                contaStampate = 0;

                int qq = 0;
                // Delle 12 foto, metto solo le prime 4 in stampa.
                _impl.aggiungereStampe(fotos.Take(4), paramM4);

                // Poi metto tutte e 12 da masterizzare
                _impl.aggiungereMasterizzate(fotos);

                Assert.AreEqual(_impl.carrello.righeCarrello.Count, 4 + 12);

                _impl.ricalcolaTotaleCarrello();

                decimal totalePrePromo = (4 * PRZ_FRM_MED) + (totFoto * PRZ_FRM_FILE);
                Assert.AreEqual(_impl.carrello.totaleAPagare, totalePrePromo);

                Carrello cart = _impl.CalcolaPromozioni(true);

                var totalePostPromo = 0
                                      + (4 * PRZ_FRM_MED)                               /* 4 stampe a prezzo pieno */
                                      + (3 * 0)                                         /* 3 file in omaggio per il 10+3 */
                                      + (5 * PRZ_FRM_FILE)                              /* 6 file a prezzo pieno */
                                      + (4 * 1)                                         /* 4 file a prezzo scontato */
                ;

                Assert.AreEqual(cart.totaleAPagare, totalePostPromo, "tot carrello errato x promozioni");
            }
        }
Пример #9
0
        public void PromoCalTest8()
        {
            using (new UnitOfWorkScope()) {
                _impl.creareNuovoCarrello();

                ParamStampaFoto paramM2 = ricavaParamStampa("M");
                paramM2.numCopie = 2;
                ParamStampaFoto paramM16 = ricavaParamStampa("M");
                paramM16.numCopie = 16;

                int totFoto = 2;

                LumenEntities     dbContext = UnitOfWorkScope.currentDbContext;
                List <Fotografia> fotos     = (from f in dbContext.Fotografie.Include("fotografo")
                                               select f).Take(totFoto).ToList();

                // Controllo che ci siano abbastanza foto nel database
                Assert.IsTrue(fotos.Count == totFoto);

                contaStampate = 0;

                int qq = 0;
                _impl.aggiungereStampe(fotos[0], paramM2);

                Assert.AreEqual(_impl.carrello.totaleAPagare, paramM2.numCopie * PRZ_FRM_MED);
                Assert.AreEqual(_impl.carrello.righeCarrello.Count, 1);

                _impl.aggiungereStampe(fotos[1], paramM16);

                Assert.AreEqual(_impl.carrello.righeCarrello.Count, 2);

                _impl.ricalcolaTotaleCarrello();
                var totPagarePrima = _impl.carrello.totaleAPagare;

                Assert.AreEqual(totPagarePrima, PRZ_FRM_MED * 18);

                Carrello cart = _impl.CalcolaPromozioni(true);

                var totPagareDopo = cart.totaleAPagare;

                Assert.AreEqual(totPagareDopo, PRZ_FRM_MED * 15, "valore carrello errato");
            }
        }
Пример #10
0
        private ParamStampaFoto ricavaParamStampaFoto()
        {
            ParamStampaFoto p = new ParamStampaFoto();

            // Vediamo se esiste il formato
            // TODO : creare un nuovo attributo che identifica il formato carta come chiave naturale (per esempio A4 oppure 6x8)

            LumenEntities dbContext = UnitOfWorkScope.currentDbContext;

            FormatoCarta formato = Utilita.ottieniFormatoCarta(dbContext, "A5");

            formato.prezzo  = 5;
            p.formatoCarta  = formato;
            p.nomeStampante = Costanti.NomeStampantePdf;

            // Qui non si deve spaccare
            Digiphoto.Lumen.Database.OrmUtil.forseAttacca <FormatoCarta>(ref formato);

            return(p);
        }
Пример #11
0
        public void codaDiStampaTestJoin()
        {
            ParamStampaFoto param = new ParamStampaFoto();

            // Istanzio una coda di stampa e la chiudo
            CodaDiStampe c1 = new CodaDiStampe(param, "coda1");

            c1.Start();
            c1.Stop();
            c1.Dispose();

            CodaDiStampe c2 = new CodaDiStampe(param, "coda2");

            c2.Dispose();

            CodaDiStampe c3 = new CodaDiStampe(param, "coda3");

            c3.Stop();
            c3.Stop();
            c3.Dispose();
        }
Пример #12
0
        public void PromoAncheFileTest()
        {
            using (new UnitOfWorkScope(false)) {
                LumenEntities dbContext = UnitOfWorkScope.currentDbContext;

                var psfsf = dbContext.Promozioni.OfType <PromoStessaFotoSuFile>().SingleOrDefault(af => af.attiva == true);
                if (psfsf == null)
                {
                    throw new InvalidOperationException("La PromoStessaFotoSuFile non è attiva. Impossibile testare");
                }

                _impl.creareNuovoCarrello();

                ParamStampaFoto p = ricavaParamStampa("P");

                List <Fotografia> fotos = (from f in dbContext.Fotografie.Include("fotografo")
                                           select f).Take(4).ToList();

                Assert.IsTrue(fotos.Count == 4);

                contaStampate = 0;

                // Prendo solo i primi 3 elementi
                _impl.aggiungereStampe(fotos.Take(3), p);
                _impl.aggiungereMasterizzate(new[] { fotos[0], fotos[3] });                     // Solo una foto in promo
                _impl.carrello.prezzoDischetto = 123;

                Assert.IsFalse(_impl.carrello.venduto);

                Assert.IsTrue(_impl.isPossibileSalvareCarrello);
                Assert.IsTrue(_impl.isPossibileVendereCarrello);
                Assert.IsTrue(_impl.isPossibileModificareCarrello);

                var newCart = _impl.CalcolaPromozioni();

                Assert.IsTrue(newCart.totaleAPagare == (decimal)((3 * 4.5) + (1 * 1) + (1 * 3.5)));
            }

            Console.WriteLine("FINITO");
        }
Пример #13
0
        public void PromoCalTest10()
        {
            using (new UnitOfWorkScope()) {
                _impl.creareNuovoCarrello();

                ParamStampaFoto paramM = ricavaParamStampa("M");

                int totFoto = 12;

                LumenEntities     dbContext = UnitOfWorkScope.currentDbContext;
                List <Fotografia> fotos     = (from f in dbContext.Fotografie.Include("fotografo")
                                               select f).Take(totFoto).ToList();

                // Controllo che ci siano abbastanza foto nel database
                Assert.IsTrue(fotos.Count == totFoto);

                contaStampate = 0;

                int qq = 0;
                // Delle 12 foto in stampa.
                _impl.aggiungereStampe(fotos, paramM);

                // Poi metto 4 da masterizzare
                _impl.aggiungereMasterizzate(fotos.Take(4));

                Assert.AreEqual(_impl.carrello.righeCarrello.Count, 4 + 12);

                _impl.ricalcolaTotaleCarrello();

                decimal totalePrePromo = (totFoto * PRZ_FRM_MED) + (4 * PRZ_FRM_FILE);
                Assert.AreEqual(_impl.carrello.totaleAPagare, totalePrePromo);

                Carrello cart = _impl.CalcolaPromozioni(true);

                var totalePostPromo = ((12 - 2) * PRZ_FRM_MED) + (4 * 1);

                Assert.AreEqual(cart.totaleAPagare, totalePostPromo, "tot carrello errato x promozioni");
            }
        }
Пример #14
0
        public void accodaStampaTest()
        {
            // EsecutoreStampaNet s = new EsecutoreStampaNet();
            const int QUANTE = 1;

            using (new UnitOfWorkScope()) {
                ParamStampaFoto param = new ParamStampaFoto();
                param.numCopie      = 1;
                param.autoRuota     = true;
                param.nomeStampante = Costanti.NomeStampantePdf;

                LumenEntities dbContext     = UnitOfWorkScope.currentDbContext;
                var           fotos         = (from f in dbContext.Fotografie.Include("fotografo") select f).Take(QUANTE);
                int           quanteDavvero = 0;
                foreach (Fotografia foto in fotos)
                {
                    ++quanteDavvero;

                    // stampo la stessa foto senza bordi bianchi ...
                    param.autoZoomNoBordiBianchi = true;
                    _impl.accodaStampaFoto(foto, param);

                    // ... poi anche con i bordi bianchi
                    ParamStampaFoto p2 = (ParamStampaFoto)param.Clone();
                    p2.autoZoomNoBordiBianchi = false;
                    _impl.accodaStampaFoto(foto, p2);
                }

                // Attendo che le due stampe siano terminate
                do
                {
                    Thread.Sleep(5000);
                    //Assert.Fail( "TODO questo sleep non va bene. occorre sostituire con qualcosa di altro" );
                } while(_contaStampe < quanteDavvero * 2);
            }

            Assert.IsTrue(_contaErrate == 0);
        }
Пример #15
0
        public void spaccatoIncassiFotografiTest()
        {
            using (new UnitOfWorkScope()) {
                FormatoCarta formatoCarta = UnitOfWorkScope.currentDbContext.FormatiCarta.First();

                ParamStampaFoto paramStampa = new ParamStampaFoto {
                    nomeStampante = "doPDF 9",
                    formatoCarta  = formatoCarta,
                };



                _impl.creareNuovoCarrello();

                _impl.carrello.prezzoDischetto = (decimal)27.9;

                // Carico 3 fotografi tra quelli che hanno delle foto
                var          idFotografi = UnitOfWorkScope.currentDbContext.Fotografie.Select(f => f.fotografo).Distinct().Take(3);
                Fotografo [] arrayF      = idFotografi.ToArray();
                if (idFotografi.Count() != 3)
                {
                    return;
                }

                string par1   = arrayF[0].id;
                var    fotos1 = UnitOfWorkScope.currentDbContext.Fotografie.Where(f => f.fotografo.id == par1).Take(2).ToList();
                string par2   = arrayF[1].id;
                var    fotos2 = UnitOfWorkScope.currentDbContext.Fotografie.Where(f => f.fotografo.id == par2).Take(3).ToList();
                string par3   = arrayF[2].id;
                var    fotos3 = UnitOfWorkScope.currentDbContext.Fotografie.Where(f => f.fotografo.id == par3).Take(4).ToList();

                paramStampa.numCopie = 1;
                _impl.aggiungereStampe(fotos1, paramStampa);

                paramStampa.numCopie = 2;
                _impl.aggiungereStampe(fotos2, paramStampa);

                paramStampa.numCopie = 3;
                _impl.aggiungereStampe(fotos3, paramStampa);

                _impl.aggiungereMasterizzate(fotos1);
                _impl.aggiungereMasterizzate(fotos2);
                _impl.aggiungereMasterizzate(fotos3);

                string msgEsito = _impl.salvareCarrello();
                bool   esito    = (msgEsito == null);
                Assert.IsTrue(esito);

                Carrello cc = _impl.carrello;


                decimal soldi1 = (fotos1.Count() * 1 * formatoCarta.prezzo);
                decimal soldi2 = (fotos2.Count() * 2 * formatoCarta.prezzo);
                decimal soldi3 = (fotos3.Count() * 3 * formatoCarta.prezzo);
                decimal soldi  = soldi1 + soldi2 + soldi3 + (decimal)27.9;

                // Ora faccio un pò di verifiche
                Assert.IsTrue(cc.totaleAPagare == soldi);


                // Il totale da pagare, deve essere la somma degli incassi dei fotografi
                decimal somma = cc.incassiFotografi.Sum(ii => ii.incasso);
                Assert.IsTrue(cc.totaleAPagare == somma);

                // La somma dei ...DI CUI.. deve essere uguale al totale
                decimal ima = cc.incassiFotografi.Sum(ii => ii.incassoMasterizzate);
                decimal ist = cc.incassiFotografi.Sum(ii => ii.incassoStampe);
                Assert.IsTrue(ima + ist == somma);

                Assert.IsTrue(ima == cc.prezzoDischetto);
            }
        }
Пример #16
0
        public void simulaUiStaccando3()
        {
            Carrello      carrello;
            String        notePrec;
            String        numAggiunto;
            IVenditoreSrv venditoreSrv;

            using (new UnitOfWorkScope()) {
                var context = UnitOfWorkScope.currentDbContext;
                carrello = context.Carrelli.Include("righeCarrello").Where(c => c.righeCarrello.Count > 0 && c.righeCarrello.Count < 3 && c.venduto == false).FirstOrDefault();
            }

            using (new UnitOfWorkScope()) {
                var context = UnitOfWorkScope.currentDbContext;
                venditoreSrv = LumenApplication.Instance.getServizioAvviato <IVenditoreSrv>();
                venditoreSrv.caricareCarrello(carrello);
                // Salvo le note precedenti.
                notePrec = venditoreSrv.carrello.note;
                if (notePrec == null)
                {
                    notePrec = String.Empty;
                }
            }

            bool aggiungiUnaRiga = true;

            List <Fotografia> fotos = new List <Fotografia>();
            ParamStampaFoto   par   = null;

            if (aggiungiUnaRiga)
            {
                using (new UnitOfWorkScope()) {
                    // Cerco una fotografia a caso
                    IFotoExplorerSrv fotoExplorerSrv = LumenApplication.Instance.getServizioAvviato <IFotoExplorerSrv>();
                    fotoExplorerSrv.cercaFoto(new ParamCercaFoto {
                        paginazione = new Paginazione {
                            take = 1
                        }
                    });

                    var dbContext = UnitOfWorkScope.currentDbContext;
                    par = new ParamStampaFoto {
                        formatoCarta  = dbContext.FormatiCarta.First(),
                        nomeStampante = Costanti.NomeStampantePdf
                    };

                    fotos = fotoExplorerSrv.fotografie;
                }
            }

            using (new UnitOfWorkScope()) {
                // Modifico l'oggetto da staccato
                Random rnd          = new Random();
                int    randomNumber = rnd.Next(0, 9);
                numAggiunto = randomNumber.ToString();

                venditoreSrv.carrello.note = venditoreSrv.carrello.note + numAggiunto;

                if (aggiungiUnaRiga)
                {
                    venditoreSrv.aggiungereStampe(fotos, par);
                }
            }

            using (new UnitOfWorkScope()) {
                var context = UnitOfWorkScope.currentDbContext;

                string msgErrore = venditoreSrv.salvareCarrello();
                bool   esito     = (msgErrore == null);
                Assert.IsTrue(esito);
            }

            using (new UnitOfWorkScope()) {
                var      context   = UnitOfWorkScope.currentDbContext;
                Carrello carrello2 = context.Carrelli.Where(c => c.id == carrello.id).Single();
                Assert.AreEqual(carrello2.note, notePrec + numAggiunto);
            }
        }