Esempio n. 1
0
        public IActionResult AddNew([FromBody] ArtikelViewModel newArticle)
        {
            var command = new ArtikelNeuanlageCommand()
            {
                Artikelnummer      = newArticle.ArtikelNummer,
                Artikelbezeichnung = newArticle.Bezeichnung,
            };

            if (newArticle.Kategorien != null)
            {
                command.Kategorien = newArticle.Kategorien.Select(k => k.Name).ToArray();
            }

            try
            {
                _handler.Handle(command);
            }
            catch (ArtikelException ex)
            {
                return(BadRequest(ex.Message));
            }
            catch (Exception)
            {
                return(new StatusCodeResult(500));
            }

            return(Ok());
        }
Esempio n. 2
0
        public void Should_Store_New_Article()
        {
            // Arrange
            IEvent evt        = null;
            var    newArtikel = new Art(new TypeBasedEventDispatcher <Art>(null), 1);

            newArtikel.EventRaised += (s, e) => evt = e.Event;

            var cmd = new ArtikelNeuanlageCommand()
            {
                Artikelnummer = 1, Artikelbezeichnung = "Dummy"
            };

            var repoMock = new Mock <IArtikelRepository>(MockBehavior.Strict);

            repoMock.Setup(r => r.LadeArtikelMitKategorien(1))
            .Returns(default(Art));
            repoMock.Setup(r => r.CreateNew(1)).Returns(newArtikel);


            var subject = new Article.Services.ArtikelCommandHandler(repoMock.Object);

            // Act
            subject.Handle(cmd);

            // Assert
            repoMock.Verify(r => r.LadeArtikelMitKategorien(1), Times.Once);
            repoMock.Verify(r => r.CreateNew(1), Times.Once);

            newArtikel.Bezeichnung.Should().Be("Dummy");
            evt.Should().NotBeNull();
            evt.AggregateId.Should().Be(1);
            evt.Should().BeAssignableTo <ArtikelAngelegtEvent>();
            (evt as ArtikelAngelegtEvent).Artikelbezeichnung.Should().Be("Dummy");
        }
        public void Handle(ArtikelNeuanlageCommand command)
        {
            var artikel = _repo.LadeArtikelMitKategorien(command.Artikelnummer);

            // pre-checks
            if (artikel != null)
            {
                throw new InvalidOperationException("Artikel existiert schon");
            }

            artikel = _repo.CreateNew(command.Artikelnummer);
            artikel.Neuanlage(command.Artikelbezeichnung, command.Kategorien);
        }
Esempio n. 4
0
        public void Should_Throw_On_Existing_Article()
        {
            // Arrange
            var cmd = new ArtikelNeuanlageCommand()
            {
                Artikelnummer = 1
            };

            var repoMock = new Mock <IArtikelRepository>(MockBehavior.Strict);

            repoMock.Setup(r => r.LadeArtikelMitKategorien(1))
            .Returns(new Art(null, 1));

            var subject = new Article.Services.ArtikelCommandHandler(repoMock.Object);

            // Act
            Action action = () => subject.Handle(cmd);

            // Assert
            action.Should().Throw <InvalidOperationException>();
            repoMock.Verify(r => r.LadeArtikelMitKategorien(1), Times.Once);
        }