Example #1
0
        public void ReceiveAddArtikelToCatalogusWithCompleteEventMessageShouldAddArtikelsToTheDatabase()
        {
            // Arrange
            ArtikelEntity insertParam = null;

            var mock = new Mock <IArtikelDataMapper>();

            mock.Setup(repo => repo.Insert(It.IsAny <ArtikelEntity>())).Returns(insertParam)
            .Callback <ArtikelEntity>(entity =>
            {
                insertParam = entity;
            });

            ArtikelEntity expected = new ArtikelEntityBuilder().SetDummy().SetDummyCategorie("Cat1").SetDummyCategorie("Cat2").Create();
            Artikel       artikel  = expected.ToArtikel();

            var auditLogListener = new EventListener(mock.Object, null, null);
            var eventMessage     = new EventMessage("", JsonConvert.SerializeObject(artikel));

            // Act
            auditLogListener.ReceiveAddArtikelToCatalogus(eventMessage);

            // Assert
            Assert.IsTrue(expected.IsEqual(insertParam));
        }
Example #2
0
        public void HandleVoorraadChanged_ShouldSetVoorraadTo_8_WhenNieuweVoorraadIsGreatherThen_8()
        {
            // Arrange
            ArtikelEntity artikel = new ArtikelEntityBuilder()
                                    .SetDummy()
                                    .SetVoorraad(10)
                                    .SetDummyCategorie("Cat1")
                                    .SetDummyCategorie("Cat2")
                                    .Create();

            var mock = new Mock <IArtikelDataMapper>();

            mock.Setup(repo => repo.GetById(1)).Returns(artikel);

            ArtikelEntity result = null;

            mock.Setup(repo => repo.Update(It.IsAny <ArtikelEntity>()))
            .Callback <ArtikelEntity>(entity =>
            {
                result = entity;
            });

            var voorraad = new Voorraad {
                Artikelnummer = 1, Aantal = 10, NieuweVoorraad = 9
            };

            var auditLogListener = new EventListener(mock.Object, null, null);
            var eventMessage     = new EventMessage("", JsonConvert.SerializeObject(voorraad));

            // Act
            auditLogListener.HandleVoorraadChanged(eventMessage);

            // Assert
            Assert.AreEqual(Constants.MaxVoorraad, result.Voorrraad);
        }
Example #3
0
 public ArtikelEntity Insert(ArtikelEntity entity)
 {
     InsertCategoryIfNonExistent(entity);
     _context.ArtikelEntities.Add(entity);
     _context.SaveChanges();
     return(entity);
 }
        public void ReceiveAddArtikelToCatalogus(EventMessage message)
        {
            Artikel artikel       = JsonConvert.DeserializeObject <Artikel>(message.Message);
            var     artikelEntity = new ArtikelEntity()
            {
                Artikelnummer   = artikel.Artikelnummer,
                Naam            = artikel.Naam,
                Beschrijving    = artikel.Beschrijving,
                Prijs           = artikel.Prijs,
                AfbeeldingUrl   = artikel.AfbeeldingUrl,
                LeverbaarVanaf  = artikel.LeverbaarVanaf,
                LeverbaarTot    = artikel.LeverbaarTot,
                Leveranciercode = artikel.Leveranciercode,
                Leverancier     = artikel.Leverancier,
            };

            foreach (var cat in artikel.Categorieen)
            {
                artikelEntity.ArtikelCategorieen.Add(new ArtikelCategorieEntity()
                {
                    Artikel   = artikelEntity,
                    Categorie = new CategorieEntity()
                    {
                        Categorie = cat
                    }
                });
            }

            _artikelDataMapper.Insert(artikelEntity);
        }
        public void InsertArtikelInDatabaseWithMultipleCategories()
        {
            // Arrange
            ArtikelEntity artikel1 = new ArtikelEntityBuilder().SetDummy().SetDummyCategorie("Cat1").SetDummyCategorie("Cat2").Create();
            ArtikelEntity artikel2 = new ArtikelEntityBuilder().SetDummy().SetDummyCategorie("Cat2").SetDummyCategorie("Cat3").SetArtikelnummer(2).Create();
            ArtikelEntity artikel3 = new ArtikelEntityBuilder().SetDummy().SetDummyCategorie("Cat2").SetDummyCategorie("Cat3").SetArtikelnummer(3).Create();

            // Act
            artikel1 = _target.Insert(artikel1);
            artikel2 = _target.Insert(artikel2);
            artikel3 = _target.Insert(artikel3);

            // Changing a category should cause the artikel3 assert to fail
            artikel3.ArtikelCategorieen.ElementAt(0).Categorie.Categorie = "Cat4";

            ArtikelEntity result1 = _target.GetById(1);
            ArtikelEntity result2 = _target.GetById(2);
            ArtikelEntity result3 = _target.GetById(3);

            // Assert
            Assert.IsNotNull(result1);
            Assert.IsNotNull(result2);
            Assert.IsNotNull(result3);

            Assert.AreEqual(3, _context.CategorieEntities.Count());

            Assert.IsTrue(artikel1.IsEqual(result1));
            Assert.IsTrue(artikel2.IsEqual(result2));
            Assert.IsTrue(artikel3.IsEqual(result3));
        }
Example #6
0
        public void Delete(ArtikelEntity entity)
        {
            var removedRelations = _context.ArtikelCategorieEntities.Where(x => x.ArtikelId == entity.Artikelnummer);

            _context.ArtikelCategorieEntities.RemoveRange(removedRelations);
            _context.ArtikelEntities.Remove(entity);
            _context.SaveChanges();
        }
Example #7
0
        public void Update(ArtikelEntity entity)
        {
            InsertCategoryIfNonExistent(entity);

            var removedRelations = _context.ArtikelCategorieEntities.Where(x => x.ArtikelId == entity.Artikelnummer &&
                                                                           entity.ArtikelCategorieen.FirstOrDefault(y => y.Categorie.Categorie == x.Categorie.Categorie) == null);

            _context.ArtikelEntities.Update(entity);
            _context.ArtikelCategorieEntities.RemoveRange(removedRelations);

            _context.SaveChanges();
        }
        public void InsertArtikelInDatabase()
        {
            // Arrange
            ArtikelEntity artikel = new ArtikelEntityBuilder().SetDummy().Create();

            // Act
            _target.Insert(artikel);

            ArtikelEntity result = _target.GetById(1);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(artikel.IsEqual(result));
        }
Example #9
0
 private void InsertCategoryIfNonExistent(ArtikelEntity entity)
 {
     foreach (var artikelcategorie in entity.ArtikelCategorieen)
     {
         var category = _context.CategorieEntities.FirstOrDefault(x => x.Categorie == artikelcategorie.Categorie.Categorie);
         if (category == null)
         {
             _context.CategorieEntities.Add(artikelcategorie.Categorie);
         }
         else
         {
             artikelcategorie.Categorie = category;
         }
     }
 }
        public void UpdateArtikelInDatabaseWithMultipleCategories()
        {
            // Arrange
            ArtikelEntity artikel1 = new ArtikelEntityBuilder().SetDummy().SetDummyCategorie("Cat1").SetDummyCategorie("Cat2").Create();
            ArtikelEntity artikel2 = new ArtikelEntityBuilder().SetDummy().SetDummyCategorie("Cat2").SetDummyCategorie("Cat3").SetArtikelnummer(2).Create();
            ArtikelEntity artikel3 = new ArtikelEntityBuilder().SetDummy().SetDummyCategorie("Cat2").SetDummyCategorie("Cat3").SetArtikelnummer(3).Create();

            _target.Insert(artikel1);
            artikel2 = _target.Insert(artikel2);
            _target.Insert(artikel3);

            // Act
            artikel2.ArtikelCategorieen.Remove(artikel2.ArtikelCategorieen.First());
            _target.Update(artikel2);

            var cat = artikel3.ArtikelCategorieen.ElementAt(0);

            artikel3.ArtikelCategorieen.Remove(cat);

            var newCat = new ArtikelCategorieEntity {
                Categorie = new CategorieEntity {
                    Categorie = "Cat4"
                }
            };

            artikel3.ArtikelCategorieen.Add(newCat);
            _target.Update(artikel3);

            ArtikelEntity result1 = _target.GetById(1);
            ArtikelEntity result2 = _target.GetById(2);
            ArtikelEntity result3 = _target.GetById(3);

            // Assert
            Assert.IsNotNull(result1);
            Assert.IsNotNull(result2);
            Assert.IsNotNull(result3);

            Assert.AreEqual(4, _context.CategorieEntities.Count());

            Assert.AreEqual(2, result1.ArtikelCategorieen.Count());
            Assert.AreEqual(1, result2.ArtikelCategorieen.Count());
            Assert.AreEqual(2, result3.ArtikelCategorieen.Count());

            Assert.IsTrue(artikel1.IsEqual(result1));
            Assert.IsTrue(artikel2.IsEqual(result2));
            Assert.IsTrue(artikel3.IsEqual(result3));
        }
        public void GetArtikelFromDatabaseById()
        {
            ArtikelEntity artikel = new ArtikelEntityBuilder().SetDummy().SetArtikelnummer(12).Create();

            _context.ArtikelEntities.Add(artikel);

            _context.SaveChanges();

            // Act
            ArtikelEntity result1 = _target.GetById(12);
            ArtikelEntity result2 = _target.GetById(23);

            // Assert
            Assert.IsNotNull(result1);
            Assert.IsTrue(result1.IsEqual(artikel));
            Assert.IsNull(result2);
        }
        public ArtikelEntity Create()
        {
            var artikelEntity = new ArtikelEntity()
            {
                Artikelnummer      = Artikelnummer,
                Naam               = Naam,
                Beschrijving       = Beschrijving,
                Prijs              = Prijs,
                AfbeeldingUrl      = AfbeeldingUrl,
                LeverbaarVanaf     = LeverbaarVanaf,
                LeverbaarTot       = LeverbaarTot,
                Leveranciercode    = Leveranciercode,
                Leverancier        = Leverancier,
                Voorrraad          = Voorraad,
                ArtikelCategorieen = ArtikelCategorieen
            };

            foreach (var ac in artikelEntity.ArtikelCategorieen)
            {
                ac.Artikel = artikelEntity;
            }

            return(artikelEntity);
        }
        public static bool IsEqual(this ArtikelEntity entity, ArtikelEntity comparable)
        {
            if (entity.Artikelnummer != comparable.Artikelnummer)
            {
                return(false);
            }
            if (entity.Naam != comparable.Naam)
            {
                return(false);
            }
            if (entity.Beschrijving != comparable.Beschrijving)
            {
                return(false);
            }
            if (entity.Prijs != comparable.Prijs)
            {
                return(false);
            }
            if (entity.AfbeeldingUrl != comparable.AfbeeldingUrl)
            {
                return(false);
            }
            if (entity.LeverbaarVanaf != comparable.LeverbaarVanaf)
            {
                return(false);
            }
            if (entity.LeverbaarTot != comparable.LeverbaarTot)
            {
                return(false);
            }
            if (entity.Leveranciercode != comparable.Leveranciercode)
            {
                return(false);
            }
            if (entity.Leverancier != comparable.Leverancier)
            {
                return(false);
            }
            if (entity.Voorrraad != comparable.Voorrraad)
            {
                return(false);
            }
            if (entity.ArtikelCategorieen.Count != comparable.ArtikelCategorieen.Count)
            {
                return(false);
            }

            var entityCatList     = entity.ArtikelCategorieen.OrderBy(x => x.Categorie.Categorie);
            var comparableCatList = comparable.ArtikelCategorieen.OrderBy(x => x.Categorie.Categorie);

            for (int i = 0; i < entityCatList.Count(); ++i)
            {
                if (entityCatList.ElementAt(i)?.Categorie.Categorie !=
                    comparableCatList.ElementAt(i)?.Categorie.Categorie)
                {
                    return(false);
                }
            }

            return(true);
        }