public void AdresToevoegenVoorkeurTest()
        {
            // ARRANGE

            var gelieerdePersoon = new GelieerdePersoon {
                Persoon = new Persoon()
            };

            gelieerdePersoon.Persoon.GelieerdePersoon.Add(gelieerdePersoon);

            var adres = new BelgischAdres();

            // ACT

            var target = new GelieerdePersonenManager();

            target.AdresToevoegen(new List <GelieerdePersoon> {
                gelieerdePersoon
            }, adres, AdresTypeEnum.Thuis, true);

            // ASSERT

            // vind het persoonsadresobject
            var persoonsAdres = gelieerdePersoon.Persoon.PersoonsAdres.First();

            // weet het persoonsadresobject dat het voorkeursadres is?
            Assert.IsNotNull(persoonsAdres.GelieerdePersoon.FirstOrDefault());
        }
        public void AdresGenotenZelfdeGroepTest()
        {
            // ARRANGE

            var gelieerdePersoon1 = new GelieerdePersoon {
                ID = 2, Persoon = new Persoon {
                    ID = 4
                }
            };

            gelieerdePersoon1.Persoon.GelieerdePersoon.Add(gelieerdePersoon1);

            var gelieerdePersoon2 = new GelieerdePersoon {
                ID = 3, Persoon = new Persoon {
                    ID = 5
                }
            };

            gelieerdePersoon2.Persoon.GelieerdePersoon.Add(gelieerdePersoon2);

            var groep = new ChiroGroep
            {
                ID = 1,
                GelieerdePersoon = new List <GelieerdePersoon> {
                    gelieerdePersoon1, gelieerdePersoon2
                }
            };

            gelieerdePersoon1.Groep = groep;
            gelieerdePersoon2.Groep = groep;

            var adres = new BelgischAdres();

            var persoonsAdres1 = new PersoonsAdres {
                ID = 6, Persoon = gelieerdePersoon1.Persoon, Adres = adres
            };
            var persoonsAdres2 = new PersoonsAdres {
                ID = 7, Persoon = gelieerdePersoon2.Persoon, Adres = adres
            };

            gelieerdePersoon1.Persoon.PersoonsAdres = new List <PersoonsAdres> {
                persoonsAdres1
            };
            gelieerdePersoon2.Persoon.PersoonsAdres = new List <PersoonsAdres> {
                persoonsAdres2
            };
            adres.PersoonsAdres = new List <PersoonsAdres> {
                persoonsAdres1, persoonsAdres2
            };

            // ACT

            var target = new GelieerdePersonenManager();
            var result = target.AdresGenotenUitZelfdeGroep(gelieerdePersoon1);

            // ASSERT

            Assert.IsTrue(result.Contains(gelieerdePersoon1));
            Assert.IsTrue(result.Contains(gelieerdePersoon2));
        }
        public void DubbelVerwijderenGedeeldAdresTest()
        {
            // ARRANGE

            var origineel = new Persoon();
            var dubbel    = new Persoon();

            var gelieerdeOrigineel = new GelieerdePersoon {
                Persoon = origineel, Groep = new ChiroGroep()
            };
            var gelieerdeDubbel = new GelieerdePersoon {
                Persoon = dubbel, Groep = new ChiroGroep()
            };

            origineel.GelieerdePersoon.Add(gelieerdeOrigineel);
            dubbel.GelieerdePersoon.Add(gelieerdeDubbel);

            var adres = new BelgischAdres();

            var origineelPa = new PersoonsAdres {
                Persoon = origineel, Adres = adres
            };
            var dubbelPa = new PersoonsAdres {
                Persoon = dubbel, Adres = adres
            };

            adres.PersoonsAdres.Add(origineelPa);
            adres.PersoonsAdres.Add(dubbelPa);

            origineel.PersoonsAdres.Add(origineelPa);
            dubbel.PersoonsAdres.Add(dubbelPa);

            var allePersonen = new List <Persoon> {
                origineel, dubbel
            };
            var allePersoonsAdressen = new List <PersoonsAdres> {
                origineelPa, dubbelPa
            };

            var repositoryProviderMock = new Mock <IRepositoryProvider>();

            repositoryProviderMock.Setup(src => src.RepositoryGet <Persoon>())
            .Returns(new DummyRepo <Persoon>(allePersonen));
            repositoryProviderMock.Setup(src => src.RepositoryGet <PersoonsAdres>())
            .Returns(new DummyRepo <PersoonsAdres>(allePersoonsAdressen));

            Factory.InstantieRegistreren(repositoryProviderMock.Object);

            // ACT
            var target = Factory.Maak <GapUpdater>();

            target.DubbelVerwijderen(origineel, dubbel);

            // ASSERT
            Assert.AreEqual(1, allePersoonsAdressen.Count);
        }
Esempio n. 4
0
        public void ZoekenOfMakenBusTest2()
        {
            // ARRANGE

            var adres = new BelgischAdres
            {
                ID         = 1,
                StraatNaam = new StraatNaam {
                    Naam = "Kipdorp", PostNummer = 2000
                },
                HuisNr     = 30,
                Bus        = null,
                WoonPlaats = new WoonPlaats {
                    Naam = "Antwerpen", PostNummer = 2000
                }
            };

            // ACT

            var target    = Factory.Maak <AdressenManager>();
            var adresInfo = new AdresInfo
            {
                StraatNaamNaam = adres.StraatNaam.Naam,
                HuisNr         = adres.HuisNr,
                Bus            = "",
                PostNr         = adres.StraatNaam.PostNummer,
                WoonPlaatsNaam = adres.WoonPlaats.Naam
            };

            var adressen = new List <Adres> {
                adres
            }.AsQueryable();
            var straatNamen = new List <StraatNaam> {
                adres.StraatNaam
            }.AsQueryable();
            var woonPlaatsen = new List <WoonPlaats> {
                adres.WoonPlaats
            }.AsQueryable();
            var landen = new List <Land>().AsQueryable();

            var actual = target.ZoekenOfMaken(adresInfo, adressen, straatNamen, woonPlaatsen, landen);

            // ASSERT

            Assert.AreEqual(adres, actual);
        }
        public void AdresToevoegenOudeVoorkeurTest()
        {
            // ARRANGE

            var gelieerdePersoon = new GelieerdePersoon {
                Persoon = new Persoon()
            };

            gelieerdePersoon.Persoon.GelieerdePersoon.Add(gelieerdePersoon);

            var oudVoorkeursAdres = new BelgischAdres {
                ID = 1
            };
            var oudPersoonsAdres = new PersoonsAdres
            {
                Persoon          = gelieerdePersoon.Persoon,
                Adres            = oudVoorkeursAdres,
                GelieerdePersoon = new List <GelieerdePersoon> {
                    gelieerdePersoon
                }
            };

            // Het voorkeursadres is gekoppeld aan gelieerde persoon, alle adressen aan persoon.
            gelieerdePersoon.PersoonsAdres = oudPersoonsAdres;
            gelieerdePersoon.Persoon.PersoonsAdres.Add(oudPersoonsAdres);

            var nieuwVoorkeursAdres = new BelgischAdres {
                ID = 2
            };

            // ACT

            var target = new GelieerdePersonenManager();

            target.AdresToevoegen(new List <GelieerdePersoon> {
                gelieerdePersoon
            }, nieuwVoorkeursAdres, AdresTypeEnum.Thuis, true);

            // ASSERT

            // het oude voorkeursadres mag niet meer aan gelieerdePersoon gekoppeld zijn.
            // (wel nog aan persoon, natuurlijk)
            Assert.IsFalse(oudPersoonsAdres.GelieerdePersoon.Any());
        }
Esempio n. 6
0
        /// <summary>
        /// Maakt een nieuw adres op basis van de info in <paramref name="adresInfo"/>, en persisteert
        /// </summary>
        /// <param name="adresInfo">
        /// Gegevens voor het nieuwe adres
        /// </param>
        /// <param name="straatNamen">beschikbare straatnamen als queryable</param>
        /// <param name="woonPlaatsen">beschikbare woonplaatsen als queryable</param>
        /// <param name="landen">beschikbare landen als queryable</param>
        /// <returns>
        /// Het nieuw gemaakte adres
        /// </returns>
        /// <remarks>
        /// TODO: Dit ziet er een veel te ingewikkelde method uit. Best eens refactoren.
        /// </remarks>
        private Adres Maken(AdresInfo adresInfo, IQueryable <StraatNaam> straatNamen,
                            IQueryable <WoonPlaats> woonPlaatsen, IQueryable <Land> landen)
        {
            var problemen = new Dictionary <string, FoutBericht>();

            // Al maar preventief een collectie fouten verzamelen.  Als daar uiteindelijk
            // geen foutberichten in zitten, dan is er geen probleem.  Anders
            // creëer ik een exception.
            // FIXME: de manier waarop de problemen worden doorgegeven, is niet erg proper.
            // Kan dat niet eleganter?

            if (adresInfo.StraatNaamNaam == string.Empty)
            {
                problemen.Add("StraatNaamNaam",
                              new FoutBericht
                {
                    FoutNummer = FoutNummer.StraatOntbreekt,
                    Bericht    = string.Format(
                        Resources.StraatOntbreekt,
                        adresInfo.StraatNaamNaam,
                        adresInfo.PostNr)
                });
            }

            // Controle formaat postnummer enkel voor Belgische adressen.
            if ((string.IsNullOrEmpty(adresInfo.LandNaam) ||
                 String.Compare(adresInfo.LandNaam, Resources.Belgie, StringComparison.OrdinalIgnoreCase) == 0) &&
                (adresInfo.PostNr < 1000 || adresInfo.PostNr > 9999))
            {
                problemen.Add("PostNr",
                              new FoutBericht
                {
                    FoutNummer = FoutNummer.OngeldigPostNummer,
                    Bericht    = string.Format(
                        Resources.OngeldigPostNummer,
                        adresInfo.StraatNaamNaam,
                        adresInfo.PostNr)
                });
            }

            if (adresInfo.WoonPlaatsNaam == string.Empty)
            {
                problemen.Add("WoonPlaatsNaam",
                              new FoutBericht
                {
                    FoutNummer = FoutNummer.WoonPlaatsOntbreekt,
                    Bericht    = string.Format(
                        Resources.WoonPlaatsOntbreekt,
                        adresInfo.StraatNaamNaam,
                        adresInfo.PostNr)
                });
            }

            // Als er hier al fouten zijn: gewoon throwen.  Me hiel 't stad, mor ni me maa!
            if (problemen.Count != 0)
            {
                throw new OngeldigObjectException(problemen);
            }


            Adres adr;

            if (string.IsNullOrEmpty(adresInfo.LandNaam) ||
                String.Compare(adresInfo.LandNaam, Resources.Belgie, StringComparison.OrdinalIgnoreCase) == 0)
            {
                // Belgisch adres.  Zoek en koppel straat en gemeente
                adr = new BelgischAdres();

                var s = (from strt in straatNamen
                         where
                         String.Compare(adresInfo.StraatNaamNaam, strt.Naam,
                                        StringComparison.OrdinalIgnoreCase) == 0 &&
                         adresInfo.PostNr == strt.PostNummer
                         select strt).FirstOrDefault();

                if (s != null)
                {
                    // Straat gevonden: aan adres koppelen
                    ((BelgischAdres)adr).StraatNaam = s;
                    s.BelgischAdres.Add((BelgischAdres)adr);
                }
                else
                {
                    // Straat niet gevonden: foutbericht toevoegen
                    problemen.Add("StraatNaamNaam",
                                  new FoutBericht
                    {
                        FoutNummer = FoutNummer.StraatNietGevonden,
                        Bericht    = string.Format(
                            Resources.StraatNietGevonden,
                            adresInfo.StraatNaamNaam,
                            adresInfo.PostNr)
                    });
                }

                var sg = (from wpl in woonPlaatsen
                          where
                          String.Compare(adresInfo.WoonPlaatsNaam, wpl.Naam,
                                         StringComparison.OrdinalIgnoreCase) == 0 &&
                          adresInfo.PostNr == wpl.PostNummer
                          select wpl).FirstOrDefault();

                if (sg != null)
                {
                    // Gemeente gevonden: aan adres koppelen
                    ((BelgischAdres)adr).WoonPlaats = sg;
                    sg.BelgischAdres.Add((BelgischAdres)adr);
                }
                else
                {
                    // Gemeente niet gevonden: foutbericht toevoegen
                    problemen.Add("WoonPlaatsNaam",
                                  new FoutBericht
                    {
                        FoutNummer = FoutNummer.WoonPlaatsNietGevonden,
                        Bericht    = Resources.GemeenteNietGevonden
                    });
                }
            }
            else
            {
                // Buitenlands adres.  Straat en gemeente zijn gewone strings.
                // Zoek en koppel land.
                adr = new BuitenLandsAdres();

                ((BuitenLandsAdres)adr).Straat     = adresInfo.StraatNaamNaam;
                ((BuitenLandsAdres)adr).WoonPlaats = adresInfo.WoonPlaatsNaam;
                ((BuitenLandsAdres)adr).PostCode   = adresInfo.PostCode;

                Land l = (from lnd in landen
                          where String.Compare(lnd.Naam, adresInfo.LandNaam, StringComparison.OrdinalIgnoreCase) == 0
                          select lnd).FirstOrDefault();

                if (l != null)
                {
                    // Gemeente gevonden: aan adres koppelen
                    ((BuitenLandsAdres)adr).Land = l;
                    l.BuitenLandsAdres.Add((BuitenLandsAdres)adr);
                }
                else
                {
                    // Gemeente niet gevonden: foutbericht toevoegen
                    problemen.Add("LandNaam",
                                  new FoutBericht
                    {
                        FoutNummer = FoutNummer.LandNietGevonden,
                        Bericht    = Resources.LandNietGevonden
                    });
                }
            }

            if (problemen.Count != 0)
            {
                throw new OngeldigObjectException(problemen);
            }

            adr.HuisNr = adresInfo.HuisNr;
            adr.Bus    = adresInfo.Bus;

            // bewaren brengt Versie en ID automatisch in orde.
            return(adr);
        }
        public void RechtenMaarGeenPermissiesPersoonsAdresTest()
        {
            // ARRANGE

            var gebruikersRecht = new GebruikersRechtV2
            {
                Persoon = new Persoon {
                    ID = 1, AdNummer = 2
                },
                Groep = new ChiroGroep {
                    ID = 3
                },
                VervalDatum = DateTime.Now.AddDays(1)       // geldig tot morgen.
            };

            gebruikersRecht.Persoon.GebruikersRechtV2.Add(gebruikersRecht);
            gebruikersRecht.Groep.GebruikersRechtV2.Add(gebruikersRecht);

            var adres = new BelgischAdres {
                ID = 6
            };

            var gp1 = new GelieerdePersoon {
                ID = 4, Groep = gebruikersRecht.Groep, Persoon = new Persoon {
                    ID = 7
                }
            };
            var gp2 = new GelieerdePersoon {
                ID = 5, Groep = gebruikersRecht.Groep, Persoon = new Persoon {
                    ID = 8
                }
            };

            gp1.Persoon.GelieerdePersoon.Add(gp1);
            gp2.Persoon.GelieerdePersoon.Add(gp2);

            gebruikersRecht.Groep.GelieerdePersoon.Add(gp1);
            gebruikersRecht.Groep.GelieerdePersoon.Add(gp2);

            var pa1 = new PersoonsAdres {
                Persoon = gp1.Persoon, Adres = adres
            };
            var pa2 = new PersoonsAdres {
                Persoon = gp2.Persoon, Adres = adres
            };

            gp1.Persoon.PersoonsAdres.Add(pa1);
            gp2.Persoon.PersoonsAdres.Add(pa2);
            adres.PersoonsAdres.Add(pa1);
            adres.PersoonsAdres.Add(pa2);

            var authenticatieManagerMock = new Mock <IAuthenticatieManager>();

            authenticatieManagerMock.Setup(mgr => mgr.AdNummerGet()).Returns(gebruikersRecht.Persoon.AdNummer);
            Factory.InstantieRegistreren(authenticatieManagerMock.Object);

            // ACT

            var  target = Factory.Maak <AutorisatieManager>();
            bool actual = target.IsGav(new[] { pa1, pa2 });

            // ASSERT

            Assert.IsFalse(actual);
        }