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); }
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; }
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; }
public void CreateDogAggregate(Dog dog) { dogCollection.Insert(dog); }