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); }
/// <summary> /// Koppelt het gegeven Adres via nieuwe PersoonsAdresObjecten /// aan de Personen gekoppeld aan de gelieerde personen <paramref name="gelieerdePersonen"/>. /// Persisteert niet. /// </summary> /// <param name="gelieerdePersonen"> /// Gelieerde die er een adres bij krijgen, met daaraan gekoppeld hun huidige /// adressen, en de gelieerde personen waarop de gebruiker GAV-rechten heeft. /// </param> /// <param name="adres"> /// Toe te voegen adres /// </param> /// <param name="adrestype"> /// Het adrestype (thuis, kot, enz.) /// </param> /// <param name="voorkeur"> /// Indien true, wordt het nieuwe adres voorkeursadres van de gegeven gelieerde personen /// </param> /// <returns> /// De nieuwe koppelingen tussen de <paramref name="gelieerdePersonen"/> en /// <paramref name="adres"/>. /// </returns> public List <PersoonsAdres> AdresToevoegen(IList <GelieerdePersoon> gelieerdePersonen, Adres adres, AdresTypeEnum adrestype, bool voorkeur) { var resultaat = new List <PersoonsAdres>(); // Vind personen waaraan het adres al gekoppeld is. var bestaand = gelieerdePersonen.Select(gp => gp.Persoon).SelectMany( p => p.PersoonsAdres.Where(pa => pa.Adres.ID == adres.ID)).ToList(); if (bestaand.FirstOrDefault() != null) { // Sommige personen hebben het adres al. Geef een exception met daarin de // betreffende persoonsadres-objecten. throw new BlokkerendeObjectenException <PersoonsAdres>( bestaand, bestaand.Count(), Resources.WonenDaarAl); } // En dan nu het echte werk: foreach (var gelieerdePersoon in gelieerdePersonen) { // Maak PersoonsAdres dat het adres aan de persoon koppelt. var pa = new PersoonsAdres { Adres = adres, Persoon = gelieerdePersoon.Persoon, AdresType = adrestype }; gelieerdePersoon.Persoon.PersoonsAdres.Add(pa); adres.PersoonsAdres.Add(pa); // Maak zo nodig voorkeursadres if (gelieerdePersoon.Persoon.PersoonsAdres.Count() == 1) { // Eerste adres van de persoon. Dit moet bij elke gelieerde persoon het voorkeursadres // worden. foreach (var gp2 in gelieerdePersoon.Persoon.GelieerdePersoon) { gp2.PersoonsAdres = pa; pa.GelieerdePersoon.Add(gp2); } } else if (voorkeur) { // Onderstaande vreemde lange lijn is een fix voor #3844: // verwijder link persoonsadres-gelieerdepersoon voor oude voorkeursadres. gelieerdePersoon.PersoonsAdres.GelieerdePersoon.Remove(gelieerdePersoon); gelieerdePersoon.PersoonsAdres = pa; pa.GelieerdePersoon.Add(gelieerdePersoon); } resultaat.Add(pa); } return(resultaat); }
public void StandaardAdressenBewarenTest() { // ARRANGE var adres = new BuitenLandsAdres { Land = new Land() }; var persoonsAdres1 = new PersoonsAdres { Adres = adres, Persoon = new Persoon { InSync = true } }; var persoonsAdres2 = new PersoonsAdres { Adres = adres, Persoon = new Persoon { InSync = true } }; adres.PersoonsAdres.Add(persoonsAdres1); adres.PersoonsAdres.Add(persoonsAdres2); IEnumerable <Bewoner> teSyncenBewoners = null; // we mocken kipsync; registreer te syncen bewoners var kipSyncMock = new Mock <ISyncPersoonService>(); kipSyncMock.Setup( src => src.StandaardAdresBewaren(It.IsAny <Adres>(), It.IsAny <IEnumerable <Bewoner> >())) .Callback <Adres, IEnumerable <Bewoner> >( (a, b) => teSyncenBewoners = b); Factory.InstantieRegistreren(kipSyncMock.Object); // ACT var target = Factory.Maak <AdressenSync>(); target.StandaardAdressenBewaren(new List <PersoonsAdres> { persoonsAdres1 }); // ASSERT Assert.IsNotNull(teSyncenBewoners); Assert.AreEqual(1, teSyncenBewoners.Count()); }
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()); }
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); }