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); }
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()); }
/// <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); }