public void create_projections()
        {
            var projection = new SimpleEventStore.Query.AnagraficaArticolo();
            // Arrange
            var dispatcher = new Action<object>((evt) =>
            {
                var dispatchedEvent = evt as AnagraficaArticoloCensita;
                if(evt!=null)
                {
                    projection.Code = dispatchedEvent.Code;
                    projection.Description = dispatchedEvent.Description;
                }
            });

            var repository = new Repository(eventsDispatcher: dispatcher);

            var code = "001";
            var description = "SSD Crucial M4 256GB";
            var item = new AnagraficaArticolo();
            item.Censisci(TestConfig.Id, code, description, "NR", 100);

            // Act
            repository.Save(item);

            // Assert
            Assert.AreEqual(code, projection.Code);
            Assert.AreEqual(description, projection.Description);
        }
        public void censisci_AnagraficaArticolo()
        {
            var item = new AnagraficaArticolo();
            item.Censisci(TestConfig.Id, "001", "SSD Crucial M4 256GB", "NR", 50);

            Assert.AreEqual(1, item.Events.Count);
        }
        public void save_item_to_eventStream()
        {
            var item = new AnagraficaArticolo();
            item.Censisci(TestConfig.Id, "001", "SSD Crucial M4 256GB", "NR", 100);
            var stream = new EventStream();
            item.Save(stream);

            Assert.AreEqual(1, item.Version);
            Assert.AreEqual(1, stream.Events.Count);
        }
        public void save_to_repository()
        {
            // Arrange
            object dispatchedEvent = null;
            var dispatcher = new Action<object>((evt) =>
                {
                    dispatchedEvent = evt;
                });

            var repository = new Repository(eventsDispatcher: dispatcher);

            string fname = repository.MakeAggregateStreamFileName(TestConfig.Id);
            if (File.Exists(fname))
                File.Delete(fname);

            var item = new AnagraficaArticolo();
            item.Censisci(TestConfig.Id, "001", "SSD Crucial M4 256GB", "NR", 100);

            // Act
            repository.Save(item);

            // Assert
            Assert.IsTrue(File.Exists(fname));
            Assert.IsNotNull(dispatchedEvent);
            Assert.IsTrue(dispatchedEvent is AnagraficaArticoloCensita);
        }
 public void Scarica_genera_eccezione_se_la_quantità_richiesta_non_è_in_giacenza()
 {
     var stato = new AnagraficaArticolo.StatoAnagraficaArticolo()
     {
         Disabilitato = false,
         GiacenzaAttuale = 10,
         ScortaMinima = 20
     };
     var sut = new AnagraficaArticolo(stato);
     Executing.This(() => sut.Scarica(11))
         .Should()
         .Throw<ArgumentException>()
         .And
         .ValueOf
         .ParamName
         .Should()
         .Be
         .EqualTo("quantitàDaScaricare");
 }
 public void Scarica_diminuisce_la_GiacenzaAttuale_se_disponibile()
 {
     var stato = new AnagraficaArticolo.StatoAnagraficaArticolo()
     {
         Disabilitato = false,
         GiacenzaAttuale = 20,
         ScortaMinima = 20
     };
     var sut = new AnagraficaArticolo(stato);
     sut.Scarica(11);
     Assert.AreEqual(9, sut.stato.GiacenzaAttuale);
 }