public void when_creating_a_person()
        {
            // TODO: Use a registry to do this.
            var repository = new Repository(database);
            var dogRepository = new DogRepository(repository, database.GetCollection<Dog>(typeof(Dog).Name));
            var personRepository = new PersonRepository(repository, database.GetCollection<Person>(typeof(Person).Name));

            new DogMapper().RegisterClassMaps();
            new PersonMapper(repository).RegisterClassMaps();
            new AggregateRootMapper().RegisterClassMaps();

            var person = new Person();
            person.Registration = new Registration(person, new IdentityGenerator().NewId());
            var dog = new Dog() { Name = "Dog 2"};
            person.Dog = new MongoAggregateRootReference<Dog>(dog);

            dogRepository.CreateDogAggregate(dog);

            personRepository.CreatePersonAggregate(person);

            var personQ = personRepository.GetById(person.Identity);
            Assert.AreNotEqual(personQ, person); // Just to make sure we pulled it from the db
            Assert.AreNotEqual(personQ.Dog, dog);
            Assert.AreEqual(personQ.Dog.GetAggregateRoot().Identity, dog.Identity);
            Assert.AreEqual(personQ.Dog.GetAggregateRoot().Name, dog.Name);
            Assert.AreNotEqual(personQ.Registration, person.Registration);
            Assert.AreEqual(personQ.Registration.RegistrationPeriodInDays, person.Registration.RegistrationPeriodInDays);
        }
Exemplo n.º 2
0
        public bool AddNomination(Dog dog, AdvertisedEvent advertisedEvent)
        {
            if (!isValidDistanceForTrack())
            {
                return false;
            }

            var raceEvent = GetExistingRaceEvent(advertisedEvent) ??
                            new RaceEvent(this, identityGenerator.NewId(), advertisedEvent);

            nominations.Add(new Nomination(this, identityGenerator.NewId(), dog, raceEvent));
            return true;
        }
Exemplo n.º 3
0
        public bool AddNomination(Dog dog, RaceType raceType, int distanceInMetres)
        {
            if (!isValidDistanceForTrack())
            {
                return false;
            }

            var raceEvent = GetExistingRaceEvent(raceType, distanceInMetres) ??
                            new RaceEvent(this, identityGenerator.NewId(), raceType, distanceInMetres);

            nominations.Add(new Nomination(this, identityGenerator.NewId(), dog, raceEvent));
            return true;
        }
Exemplo n.º 4
0
 public void CreateDogAggregate(Dog dog)
 {
     dogCollection.Insert(dog);
 }