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));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        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);
        }