Example #1
0
        public async Task GetKlantByIdReturnsKlant()
        {
            var klant = new Klant
            {
                Id             = "1",
                Voornaam       = "Hans",
                Achternaam     = "van Huizen",
                AdresRegel     = "Voorstraat 8",
                Plaats         = "Groningen",
                Postcode       = "1345df",
                Telefoonnummer = "0665234365",
            };

            using (var context = new WebshopContext(options))
            {
                var dataMapper = new KlantDatamapper(context);
                dataMapper.Insert(klant);
            }

            using (var context = new WebshopContext(options))
            {
                var klantmapper = new KlantDatamapper(context);
                var result      = await klantmapper.GetKlant("1");

                Assert.IsNotNull(result);
                Assert.AreEqual("Hans", result.Voornaam);
                Assert.AreEqual("van Huizen", result.Achternaam);
                Assert.AreEqual("Voorstraat 8", result.AdresRegel);
                Assert.AreEqual("Groningen", result.Plaats);
                Assert.AreEqual("1345df", result.Postcode);
                Assert.AreEqual("0665234365", result.Telefoonnummer);
            }
        }
Example #2
0
        public async Task InsertAddsKlantToDatabase()
        {
            var klant = new Klant
            {
                Id             = "1",
                Voornaam       = "Hans",
                Achternaam     = "van Huizen",
                AdresRegel     = "Voorstraat 8",
                Plaats         = "Groningen",
                Postcode       = "1345df",
                Telefoonnummer = "0665234365"
            };

            using (var context = new KlantContext(_options))
            {
                var dataMapper = new KlantDatamapper(context);
                await dataMapper.Insert(klant);
            }

            using (var context = new KlantContext(_options))
            {
                var result = context.Klanten.SingleOrDefault(a => a.Id == "1");
                Assert.IsNotNull(result);
                Assert.AreEqual("Hans", result.Voornaam);
                Assert.AreEqual("van Huizen", result.Achternaam);
                Assert.AreEqual("Voorstraat 8", result.AdresRegel);
                Assert.AreEqual("Groningen", result.Plaats);
                Assert.AreEqual("1345df", result.Postcode);
                Assert.AreEqual("0665234365", result.Telefoonnummer);
            }
        }
Example #3
0
        public async Task GetKlantWithBestellingIdReturnsKlant()
        {
            var klant = new Klant {
                Voornaam = "Hans", Achternaam = "Van Huizen", Id = "1"
            };

            var bestelling = new Bestelling
            {
                KlantId          = "1",
                AdresRegel1      = "Laagstraat 11",
                Plaats           = "Laaghoven",
                Postcode         = "1234FG",
                BestellingStatus = BestellingStatus.TerControleVoorSales,
            };

            using (var context = new BeheerContext(_options))
            {
                var mapper = new KlantDatamapper(context);
                mapper.Insert(klant);

                var bestellingmapper = new BestellingDatamapper(context);
                await bestellingmapper.Insert(bestelling);
            }

            using (var context = new BeheerContext(_options))
            {
                var mapper      = new KlantDatamapper(context);
                var resultKlant = await mapper.GetKlantWithBestellingId(1);

                Assert.AreEqual("1", resultKlant.Id);
                Assert.AreEqual("Van Huizen", resultKlant.Achternaam);
                Assert.AreEqual("Hans", resultKlant.Voornaam);
            }
        }
        public void Initialize()
        {
            _connection = new SqliteConnection("DataSource=:memory:");
            _connection.Open();
            _options = new DbContextOptionsBuilder <WebshopContext>()
                       .UseSqlite(_connection)
                       .Options;

            using (var context = new WebshopContext(_options))
            {
                context.Database.EnsureCreated();
            }

            var artikel = new Artikel
            {
                Artikelnummer  = 1,
                Beschrijving   = "Grote fiets voor iedereen",
                LeverbaarTot   = new DateTime(2018, 5, 5),
                LeverbaarVanaf = new DateTime(2017, 1, 1),
                Naam           = "Fiets",
                Prijs          = 100.50m,
                Voorraad       = 5
            };

            var artikel2 = new Artikel
            {
                Artikelnummer  = 2,
                Beschrijving   = "HELE grote fiets voor iedereen",
                LeverbaarTot   = new DateTime(2018, 5, 5),
                LeverbaarVanaf = new DateTime(2017, 1, 1),
                Naam           = "Fiets Groot",
                Prijs          = 600.50m,
                Voorraad       = 8
            };

            var klant = new Klant
            {
                Voornaam       = "Hans",
                Achternaam     = "Van Huizen",
                Id             = "1",
                Telefoonnummer = "0612341234",
                AdresRegel     = "Grote straat 1",
                Email          = "*****@*****.**",
                Plaats         = "Groningen",
                Postcode       = "6123AA",
                Wachtwoord     = "Geheim_101"
            };


            using (var context = new WebshopContext(_options))
            {
                var klantDatamapper = new KlantDatamapper(context);
                klantDatamapper.Insert(klant);

                var dataMapper = new ArtikelDatamapper(context);
                dataMapper.Insert(artikel);
                dataMapper.Insert(artikel2);
            }
        }
Example #5
0
        public async Task GetUnfinishedBestellingenOfKlant()
        {
            var klant = new Klant {
                Voornaam = "Hans", Achternaam = "Van Huizen", Id = "1"
            };


            var bestelling1 = new Bestelling
            {
                KlantId          = "1",
                AdresRegel1      = "Laagstraat 11",
                Plaats           = "Laaghoven",
                Postcode         = "1234FG",
                BestellingStatus = BestellingStatus.TerControleVoorSales,
            };

            var bestelling2 = new Bestelling
            {
                KlantId          = "1",
                AdresRegel1      = "Laagstraat 11",
                Plaats           = "Middenhoven",
                Postcode         = "1234FG",
                BestellingStatus = BestellingStatus.TerControleVoorSales,
            };

            var bestelling3 = new Bestelling
            {
                KlantId          = "1",
                AdresRegel1      = "Laagstraat 11",
                Plaats           = "Hooghoven",
                Postcode         = "1234FG",
                BestellingStatus = BestellingStatus.InBehandelingDoorMagazijn,
            };

            using (var context = new BeheerContext(_options))
            {
                var mapper = new KlantDatamapper(context);
                mapper.Insert(klant);

                var bestellingmapper = new BestellingDatamapper(context);
                await bestellingmapper.Insert(bestelling1);

                await bestellingmapper.Insert(bestelling2);

                await bestellingmapper.Insert(bestelling3);
            }

            using (var context = new BeheerContext(_options))
            {
                var mapper       = new KlantDatamapper(context);
                var bestellingen = await mapper.GetUnFinishedBestellingenOfKlant("1");

                Assert.AreEqual(2, bestellingen.Count);
                Assert.IsTrue(bestellingen.Any(b => b.Plaats == "Laaghoven"));
                Assert.IsTrue(bestellingen.Any(b => b.Plaats == "Middenhoven"));

                Assert.IsFalse(bestellingen.Any(b => b.Plaats == "Hooghoven"));
            }
        }
Example #6
0
        public async Task WhenDeBestellingIsGeplaatst()
        {
            using (var context = new BeheerContext(options))
            {
                BestellingDatamapper bestellingDatamapper = new BestellingDatamapper(context);
                KlantDatamapper      klantDatamapper      = new KlantDatamapper(context);
                TestBusContext       testBusContext       = new TestBusContext();
                CommandPublisher     commandPublisher     = new CommandPublisher(testBusContext);
                EventPublisher       eventPublisher       = new EventPublisher(testBusContext);

                bestellingListener = new BestellingListener(bestellingDatamapper, klantDatamapper, commandPublisher, eventPublisher);

                id = await bestellingListener.PlaatsBestelling(bestelling);
            }
        }
Example #7
0
        public void GivenHetKredietVanVanDeKlantBovenDeLimietVanIs(decimal kredietBedrag, decimal limietBedrag)
        {
            klant = new Klant {
                Id              = "1",
                Voornaam        = "Negin",
                Achternaam      = "Nafissi",
                KredietMetSales = kredietBedrag
            };

            using (var context = new BeheerContext(options))
            {
                KlantDatamapper klantDatamapper = new KlantDatamapper(context);
                klantDatamapper.Insert(klant);
            }
        }
Example #8
0
        public void Initialize()
        {
            _connection = new SqliteConnection("DataSource=:memory:");
            _connection.Open();
            _options = new DbContextOptionsBuilder <BeheerContext>()
                       .UseSqlite(_connection)
                       .Options;

            using (var context = new BeheerContext(_options))
            {
                context.Database.EnsureCreated();
            }

            var artikel = new Artikel
            {
                Artikelnummer  = 1,
                Beschrijving   = "Grote fiets voor iedereen",
                LeverbaarTot   = new DateTime(2018, 5, 5),
                LeverbaarVanaf = new DateTime(2017, 1, 1),
                Naam           = "Fiets",
                Prijs          = 299.3m,
                Voorraad       = 5
            };
            var artikel2 = new Artikel
            {
                Artikelnummer  = 2,
                Beschrijving   = "HELE grote fiets voor iedereen",
                LeverbaarTot   = new DateTime(2018, 5, 5),
                LeverbaarVanaf = new DateTime(2017, 1, 1),
                Naam           = "Fiets Groot",
                Prijs          = 299.3m,
                Voorraad       = 8
            };
            var klant = new Klant {
                Voornaam = "Hans", Achternaam = "Van Huizen", Id = "1"
            };

            using (var context = new BeheerContext(_options))
            {
                var klantDatamapper = new KlantDatamapper(context);
                klantDatamapper.Insert(klant);

                var dataMapper = new ArtikelDatamapper(context);
                dataMapper.Insert(artikel);
                dataMapper.Insert(artikel2);
            }
        }
Example #9
0
        public async Task KeurBestellingGoedChangesBestellingToGereedVoorBehandeling()
        {
            using (var context = new BeheerContext(options))
            {
                var bestelling = new Bestelling
                {
                    Id                = 1,
                    KlantId           = "1",
                    AdresRegel1       = "Laagstraat 11",
                    Plaats            = "Laaghoven",
                    Postcode          = "1234FG",
                    BestellingStatus  = BestellingStatus.TerControleVoorSales,
                    BesteldeArtikelen = new List <BestellingItem>
                    {
                        new BestellingItem(1, 3)
                        {
                            Id = 1
                        },
                        new BestellingItem(2, 5)
                        {
                            Id = 2
                        }
                    }
                };
                var datamapper = new BestellingDatamapper(context);
                await datamapper.Insert(bestelling);
            }

            var commandPublisher = new CommandPublisher(_context);
            await commandPublisher.Publish <int>(new BestellingGoedkeurenCommand { Id = 1 },
                                                 NameConstants.BestellingGoedKeurenCommandQueue);

            Thread.Sleep(1000);

            using (var context = new BeheerContext(options))
            {
                var datamapper = new BestellingDatamapper(context);
                var result     = await datamapper.GetBestelling(1);

                Assert.AreEqual(BestellingStatus.GereedVoorBehandeling, result.BestellingStatus);

                var klantmapper = new KlantDatamapper(context);
                var klant       = await klantmapper.GetKlant("1");
            }
        }
Example #10
0
        public async Task NieuweBestellingThatGoesAboveKredietLimitGoesToSale()
        {
            var bestelling = new NieuweBestellingCommand
            {
                KlantId           = "1",
                AdresRegel1       = "Laagstraat 11",
                Plaats            = "Laaghoven",
                Postcode          = "1234FG",
                BesteldeArtikelen = new List <BestellingItem>
                {
                    new BestellingItem(1, 3),
                    new BestellingItem(2, 3)
                }
            };


            var commandPublisher = new CommandPublisher(_context);
            await commandPublisher.Publish <bool>(bestelling, NameConstants.NieuweBestellingCommandQueue);

            Thread.Sleep(500);

            using (var context = new BeheerContext(options))
            {
                var datamapper = new BestellingDatamapper(context);
                var result     = await datamapper.GetBestelling(1);

                Assert.AreEqual("Hans", result.Klant.Voornaam);
                Assert.AreEqual("Van Huizen", result.Klant.Achternaam);
                Assert.AreEqual("1", result.KlantId);
                Assert.AreEqual("Laagstraat 11", result.AdresRegel1);
                Assert.AreEqual("Laaghoven", result.Plaats);
                Assert.AreEqual("1234FG", result.Postcode);
                Assert.AreEqual(2, result.BesteldeArtikelen.Count);
                Assert.AreEqual(BestellingStatus.TerControleVoorSales, result.BestellingStatus);
                Assert.IsTrue(result.BesteldeArtikelen.Any(b => b.Artikel.Naam == "Fiets" && b.Aantal == 3));

                var klantMapper = new KlantDatamapper(context);
                var klant       = await klantMapper.GetKlant("1");

                //Krediet should not be added yet
                Assert.AreEqual(508.2m, klant.KredietMetSales);
            }
        }
Example #11
0
        public async Task InsertNieuweBestellingUnder500EuroFromEventSetsStatusToGereed()
        {
            var bestelling = new NieuweBestellingCommand
            {
                KlantId           = "1",
                AdresRegel1       = "Laagstraat 11",
                Plaats            = "Laaghoven",
                Postcode          = "1234FG",
                BesteldeArtikelen = new List <BestellingItem>
                {
                    new BestellingItem(1, 1),
                    new BestellingItem(2, 1)
                }
            };


            var commandPublisher = new CommandPublisher(_context);
            await commandPublisher.Publish <bool>(bestelling, NameConstants.NieuweBestellingCommandQueue);

            Thread.Sleep(500);

            using (var context = new BeheerContext(options))
            {
                var datamapper = new BestellingDatamapper(context);
                var result     = await datamapper.GetBestelling(1);

                Assert.AreEqual("Hans", result.Klant.Voornaam);
                Assert.AreEqual("Van Huizen", result.Klant.Achternaam);
                Assert.AreEqual("1", result.KlantId);
                Assert.AreEqual("Laagstraat 11", result.AdresRegel1);
                Assert.AreEqual("Laaghoven", result.Plaats);
                Assert.AreEqual("1234FG", result.Postcode);
                Assert.AreEqual(2, result.BesteldeArtikelen.Count);
                Assert.AreEqual(BestellingStatus.GereedVoorBehandeling, result.BestellingStatus);
                Assert.IsTrue(result.BesteldeArtikelen.Any(b => b.Artikel.Naam == "Fiets" && b.Aantal == 1));

                var klantMapper = new KlantDatamapper(context);
                var klant       = await klantMapper.GetKlant("1");

                Assert.AreEqual(169.4m, klant.KredietMetSales);
            }
        }
Example #12
0
        public async Task InsertBestellingIntoDatabase()
        {
            var klant = new Klant {
                Voornaam = "Hans", Achternaam = "Van Huizen", Id = "1"
            };

            using (var context = new BeheerContext(_options))
            {
                var mapper = new KlantDatamapper(context);
                mapper.Insert(klant);
            }

            using (var context = new BeheerContext(_options))
            {
                var mapper = new KlantDatamapper(context);
                var result = await mapper.GetKlant("1");

                Assert.AreEqual("Hans", result.Voornaam);
                Assert.AreEqual("Van Huizen", result.Achternaam);
                Assert.AreEqual("1", result.Id);
            }
        }
Example #13
0
        public void Initialize()
        {
            connection = new SqliteConnection("DataSource=:memory:");
            connection.Open();
            options = new DbContextOptionsBuilder <BeheerContext>()
                      .UseSqlite(connection)
                      .Options;

            using (var context = new BeheerContext(options))
            {
                context.Database.EnsureCreated();
                var artikel = new Artikel
                {
                    Artikelnummer  = 1,
                    Beschrijving   = "Grote fiets voor iedereen",
                    LeverbaarTot   = new DateTime(2018, 5, 5),
                    LeverbaarVanaf = new DateTime(2017, 1, 1),
                    Naam           = "Fiets",
                    Prijs          = 40m,
                    Voorraad       = 5
                };
                var artikel2 = new Artikel
                {
                    Artikelnummer  = 2,
                    Beschrijving   = "HELE grote fiets voor iedereen",
                    LeverbaarTot   = new DateTime(2018, 5, 5),
                    LeverbaarVanaf = new DateTime(2017, 1, 1),
                    Naam           = "Fiets Groot",
                    Prijs          = 100m,
                    Voorraad       = 8
                };
                var klant = new Klant {
                    Voornaam = "Hans", Achternaam = "Van Huizen", Id = "1"
                };

                var klantDatamapper = new KlantDatamapper(context);
                klantDatamapper.Insert(klant);

                var datamapper = new ArtikelDatamapper(context);
                datamapper.Insert(artikel);
                datamapper.Insert(artikel2);
            }


            _context = new TestBusContext();

            var services = new ServiceCollection();

            services.AddTransient <ICommandPublisher, CommandPublisher>();
            services.AddSingleton <DbContextOptions>(options);
            services.AddTransient <BeheerContext, BeheerContext>();
            services.AddTransient <IArtikelDatamapper, ArtikelDatamapper>();
            services.AddTransient <IBestellingDatamapper, BestellingDatamapper>();
            services.AddSingleton <IBusContext <IConnection> >(_context);
            services.AddTransient <IEventPublisher, EventPublisher>();
            services.AddTransient <IKlantDatamapper, KlantDatamapper>();

            var builder = new MicroserviceHostBuilder()
                          .RegisterDependencies(services)
                          .WithContext(_context)
                          .AddCommandListener <BestellingListener>()
                          .AddCommandListener <BestellingListenerIntegratieTest>()
                          .AddEventListener <BestellingListener>();

            _host = builder.CreateHost();

            _host.StartListening();
        }