Exemple #1
0
        public async Task FinishBestellingLowersVoorraad()
        {
            _magazijnCalled = 0;

            using (var context = new BeheerContext(options))
            {
                var bestelling = new Bestelling
                {
                    KlantId           = "1",
                    AdresRegel1       = "Laagstraat 11",
                    Plaats            = "Laaghoven",
                    Postcode          = "1234FG",
                    BesteldeArtikelen = new List <BestellingItem>
                    {
                        new BestellingItem(1, 3),
                        new BestellingItem(2, 5)
                    }
                };
                var datamapper = new BestellingDatamapper(context);
                await datamapper.Insert(bestelling);
            }


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

            Thread.Sleep(1000);

            Assert.AreEqual(2, _magazijnCalled);
        }
        public void InsertArtikelFromEvent()
        {
            var artikelEvent = new ArtikelAanCatalogusToegevoegd
            {
                AfbeeldingUrl   = "Afbeelding.jpg",
                Artikelnummer   = 1234,
                Beschrijving    = "Grote fiets voor iedereen",
                Leverancier     = "Fietsen bv",
                Leveranciercode = "1",
                LeverbaarTot    = new DateTime(2018, 5, 5),
                LeverbaarVanaf  = new DateTime(2017, 1, 1),
                Naam            = "Fiets",
                Prijs           = 299.3m
            };

            var eventPublisher = new EventPublisher(_context);

            eventPublisher.Publish(artikelEvent);

            Thread.Sleep(4000);

            using (var context = new BeheerContext(options))
            {
                var result = context.Artikelen.SingleOrDefault(a => a.Artikelnummer == 1234);
                Assert.IsNotNull(result);
                Assert.AreEqual("Fiets", result.Naam);
                Assert.AreEqual(0, result.Voorraad);
            }
        }
        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 services = new ServiceCollection();

            services.AddSingleton <DbContextOptions>(options);
            services.AddTransient <BeheerContext, BeheerContext>();
            services.AddTransient <IArtikelDatamapper, ArtikelDatamapper>();
            services.AddTransient <IEventPublisher, EventPublisher>();
            services.AddTransient <IKlantDatamapper, KlantDatamapper>();

            _context = new TestBusContext();

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

            _host = builder.CreateHost();

            _host.StartListening();
        }
Exemple #4
0
        public void InsertAddsArtikelToDatabase()
        {
            var artikel = new Artikel
            {
                Artikelnummer  = 1234,
                Beschrijving   = "Grote fiets voor iedereen",
                LeverbaarTot   = new DateTime(2018, 5, 5),
                LeverbaarVanaf = new DateTime(2017, 1, 1),
                Naam           = "Fiets",
                Prijs          = 299.3m
            };

            using (var context = new BeheerContext(_options))
            {
                var dataMapper = new ArtikelDatamapper(context);
                dataMapper.Insert(artikel);
            }

            using (var context = new BeheerContext(_options))
            {
                var result = context.Artikelen.SingleOrDefault(a => a.Artikelnummer == 1234);
                Assert.IsNotNull(result);
                Assert.AreEqual("Fiets", result.Naam);
                Assert.AreEqual(0, result.Voorraad);
            }
        }
Exemple #5
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);
            }
        }
Exemple #6
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"));
            }
        }
        public void ChangeVoorraadEvent()
        {
            using (var context = new BeheerContext(options))
            {
                var artikel = new Artikel
                {
                    Artikelnummer  = 1234,
                    Beschrijving   = "Grote fiets voor iedereen",
                    LeverbaarTot   = new DateTime(2018, 5, 5),
                    LeverbaarVanaf = new DateTime(2017, 1, 1),
                    Naam           = "Fiets",
                    Prijs          = 299.3m
                };

                new ArtikelDatamapper(context).Insert(artikel);
            }

            var voorraadEvent = new VoorraadVerhoogdEvent
            {
                Artikelnummer  = 1234,
                Aantal         = 5,
                NieuweVoorraad = 5
            };


            var eventPublisher = new EventPublisher(_context);

            eventPublisher.Publish(voorraadEvent);

            Thread.Sleep(4000);

            using (var context = new BeheerContext(options))
            {
                var result = context.Artikelen.SingleOrDefault(a => a.Artikelnummer == 1234);
                Assert.IsNotNull(result);
                Assert.AreEqual("Fiets", result.Naam);
                Assert.AreEqual(5, result.Voorraad);
            }

            var voorraadVerlaagdEvent = new VoorraadVerlaagdEvent
            {
                Artikelnummer  = 1234,
                Aantal         = 3,
                NieuweVoorraad = 2
            };

            eventPublisher.Publish(voorraadVerlaagdEvent);

            Thread.Sleep(4000);

            using (var context = new BeheerContext(options))
            {
                var result = context.Artikelen.SingleOrDefault(a => a.Artikelnummer == 1234);
                Assert.IsNotNull(result);
                Assert.AreEqual("Fiets", result.Naam);
                Assert.AreEqual(2, result.Voorraad);
            }
        }
Exemple #8
0
        public async Task GetFirstUndoneReturnsNullWhenNoBestelling()
        {
            using (var context = new BeheerContext(_options))
            {
                var mapper = new BestellingDatamapper(context);
                var result = await mapper.GetFirstUndone();

                Assert.AreEqual(0, result);
            }
        }
        private static void Main(string[] args)
        {
            var connectionString = Environment.GetEnvironmentVariable("SPRINTERDB");
            var options          = new DbContextOptionsBuilder <BeheerContext>()
                                   .UseNpgsql(connectionString)
                                   .Options;

            ILoggerFactory loggerFactory = new LoggerFactory();

            loggerFactory.AddProvider(
                new ConsoleLoggerProvider(
                    (text, logLevel) => logLevel >= LogLevel.Debug, true));

            var connectionBuilder = new RabbitMQContextBuilder()
                                    .ReadFromEnvironmentVariables();

            var nijnContext = connectionBuilder.CreateContext();

            var services = new ServiceCollection();

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

            var builder = new MicroserviceHostBuilder()
                          .SetLoggerFactory(loggerFactory)
                          .RegisterDependencies(services)
                          .WithContext(nijnContext)
                          .UseConventions();

            var host = builder.CreateHost();

            host.CreateQueues();

            using (var context = new BeheerContext(options))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();
                if (!context.Artikelen.Any())
                {
                    ScrapeAuditLog(nijnContext, services, DateTime.Now).Wait();
                }
            }

            host.StartListeningInOtherThread();

            var logger = NijnLogger.CreateLogger <Program>();

            logger.LogInformation("Started...");
        }
Exemple #10
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();
            }
        }
Exemple #11
0
        public async Task GetVolgendeBestellingGivesNextBestelling()
        {
            var bestelling = new Bestelling
            {
                KlantId          = "1",
                AdresRegel1      = "Laagstraat 11",
                Plaats           = "Laaghoven",
                Postcode         = "1234FG",
                BestellingStatus = BestellingStatus.GereedVoorBehandeling
            };
            var bestelling2Finished = new Bestelling
            {
                KlantId          = "1",
                AdresRegel1      = "Middenland 34",
                Plaats           = "Middenhoven",
                Postcode         = "4535FF",
                BestellingStatus = BestellingStatus.Verzonden
            };
            var bestelling3 = new Bestelling
            {
                KlantId          = "1",
                AdresRegel1      = "Hoogstraat 27",
                Plaats           = "Hooghoven",
                Postcode         = "4321PD",
                BestellingStatus = BestellingStatus.GereedVoorBehandeling
            };

            using (var context = new BeheerContext(_options))
            {
                var mapper = new BestellingDatamapper(context);
                await mapper.Insert(bestelling);

                await mapper.Insert(bestelling2Finished);

                await mapper.Insert(bestelling3);
            }

            using (var context = new BeheerContext(_options))
            {
                var mapper = new BestellingDatamapper(context);
                var result = await mapper.GetFirstUndone();

                Assert.AreEqual(1, result);

                //Should skip the second one
                var result2 = await mapper.GetFirstUndone();

                Assert.AreEqual(3, result2);
            }
        }
Exemple #12
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);
            }
        }
Exemple #13
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);
            }
        }
Exemple #14
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);
            }
        }
Exemple #15
0
        public async Task ThenDeBestellingNaarSalesWordtDoorgestuurd(string toestand)
        {
            using (var context = new BeheerContext(options))
            {
                BestellingDatamapper bestellingDatamapper = new BestellingDatamapper(context);
                var bestaandeBestelling = await bestellingDatamapper.GetBestelling(id);

                if (toestand == "wel")
                {
                    Assert.IsTrue(bestaandeBestelling.BestellingStatus == BestellingStatus.TerControleVoorSales);
                }
                else
                {
                    Assert.IsTrue(bestaandeBestelling.BestellingStatus == BestellingStatus.GereedVoorBehandeling);
                }
            }
        }
Exemple #16
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");
            }
        }
Exemple #17
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);
            }
        }
Exemple #18
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);
            }
        }
Exemple #19
0
        public void GivenDatErEenBestellingVanIsGeplaatst(decimal totaalBedrag)
        {
            connection = new SqliteConnection("DataSource=:memory:");
            connection.Open();
            options = new DbContextOptionsBuilder <BeheerContext>()
                      .UseSqlite(connection)
                      .Options;

            using (var context = new BeheerContext(options))
            {
                context.Database.EnsureCreated();
            }
            artikel = new Artikel
            {
                Artikelnummer  = 1,
                Beschrijving   = "Test beschrijving",
                LeverbaarTot   = new DateTime(2019, 01, 22),
                LeverbaarVanaf = new DateTime(2019, 01, 21),
                Naam           = "Fiets",
                Prijs          = (totaalBedrag / 1.21M),
                Voorraad       = 10
            };

            using (var context = new BeheerContext(options))
            {
                ArtikelDatamapper artikelDatamapper = new ArtikelDatamapper(context);
                artikelDatamapper.Insert(artikel);
            }

            bestelling = new NieuweBestellingCommand
            {
                KlantId           = "1",
                AdresRegel1       = "Laagstraat 11",
                Plaats            = "Laaghoven",
                Postcode          = "1234FG",
                BesteldeArtikelen = new List <BestellingItem>
                {
                    new BestellingItem(1, 1)
                }
            };
        }
Exemple #20
0
        public async Task UpdateBestellingUpdatesIntoDatabase()
        {
            var bestelling = new Bestelling
            {
                KlantId           = "1",
                AdresRegel1       = "Laagstraat 11",
                Plaats            = "Laaghoven",
                Postcode          = "1234FG",
                BesteldeArtikelen = new List <BestellingItem>
                {
                    new BestellingItem(1, 3),
                    new BestellingItem(2, 5)
                }
            };

            using (var context = new BeheerContext(_options))
            {
                var mapper = new BestellingDatamapper(context);
                await mapper.Insert(bestelling);
            }

            bestelling.BestellingStatus = BestellingStatus.GereedVoorBehandeling;


            using (var context = new BeheerContext(_options))
            {
                var mapper = new BestellingDatamapper(context);
                await mapper.Update(bestelling);
            }


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

                Assert.AreEqual(BestellingStatus.GereedVoorBehandeling, result.BestellingStatus);
            }
        }
Exemple #21
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);
            }
        }
Exemple #22
0
        public async Task getAllArtikelenReturnsAll()
        {
            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
            };

            using (var context = new BeheerContext(_options))
            {
                var dataMapper = new ArtikelDatamapper(context);
                dataMapper.Insert(artikel);
                dataMapper.Insert(artikel2);
            }

            using (var context = new BeheerContext(_options))
            {
                var dataMapper = new ArtikelDatamapper(context);
                var all        = await dataMapper.GetAll();

                Assert.AreEqual(2, all.Count);
                Assert.IsTrue(all.Any(a => a.Naam == "Fiets Groot"));
            }
        }
Exemple #23
0
        public async Task InsertBestellingIntoDatabase()
        {
            var bestelling = new Bestelling
            {
                BestellingStatus  = BestellingStatus.GereedVoorBehandeling,
                KlantId           = "1",
                AdresRegel1       = "Laagstraat 11",
                Plaats            = "Laaghoven",
                Postcode          = "1234FG",
                BesteldeArtikelen = new List <BestellingItem>
                {
                    new BestellingItem(1, 3),
                    new BestellingItem(2, 5)
                }
            };

            using (var context = new BeheerContext(_options))
            {
                var mapper = new BestellingDatamapper(context);
                await mapper.Insert(bestelling);
            }

            using (var context = new BeheerContext(_options))
            {
                var mapper = new BestellingDatamapper(context);
                var result = await mapper.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 == 3));
            }
        }
Exemple #24
0
        public async Task VolgendeBestellingInpakkenGivesVolgendeBestellingSetsStatusToInbehandeling()
        {
            using (var context = new BeheerContext(options))
            {
                var bestelling = new Bestelling
                {
                    BestellingStatus  = BestellingStatus.GereedVoorBehandeling,
                    KlantId           = "1",
                    AdresRegel1       = "Laagstraat 11",
                    Plaats            = "Laaghoven",
                    Postcode          = "1234FG",
                    BesteldeArtikelen = new List <BestellingItem>
                    {
                        new BestellingItem(1, 3),
                        new BestellingItem(2, 5)
                    }
                };
                var bestelling2 = new Bestelling
                {
                    BestellingStatus  = BestellingStatus.GereedVoorBehandeling,
                    KlantId           = "1",
                    AdresRegel1       = "Hoogstraat 77",
                    Plaats            = "Hooghoven",
                    Postcode          = "4321FE",
                    BesteldeArtikelen = new List <BestellingItem>
                    {
                        new BestellingItem(1, 3),
                        new BestellingItem(2, 5)
                    }
                };

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

                await datamapper.Insert(bestelling2);
            }

            var commandPublisher = new CommandPublisher(_context);
            var result           = await commandPublisher.Publish <int>(new VolgendeBestellingCommand(),
                                                                        NameConstants.VolgendeBestellingCommandQueue);

            Assert.AreEqual(1, result);

            var result2 = await commandPublisher.Publish <int>(new VolgendeBestellingCommand(),
                                                               NameConstants.VolgendeBestellingCommandQueue);

            Assert.AreEqual(2, result2);

            var resultShouldbeZero = await commandPublisher.Publish <int>(new VolgendeBestellingCommand(),
                                                                          NameConstants.VolgendeBestellingCommandQueue);

            Assert.AreEqual(0, resultShouldbeZero);


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

                Assert.AreEqual(BestellingStatus.InBehandelingDoorMagazijn, bestelling.BestellingStatus);
            }
        }
Exemple #25
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();
        }