/// <summary> /// Initialised when user logs in /// I probably would have created a container module for this /// </summary> public static UserSessionState Initialise(User user, IRepository <User, UserPet> userRepository, IRepository <Pet, PetMetric> petRepository, IRepository <Animal, AnimalMetric> animalRepository, IRepository <Interaction, MetricInteraction> interactionRepository, IConfiguration config, UserSessionBuilder userSessionBuilder, IContainer container) { //Validator var petRegistrationValidator = new PetRegistrationValidator(animalRepository, petRepository, userRepository); var petCareActionValidator = new PetCareActionValidator(petRepository, interactionRepository); var validator = new UserSessionRequestValidator(user, userRepository, petRepository, petRegistrationValidator, petCareActionValidator); //Persisters var petPersister = container.RecordPersister <Pet>(); var userPetPersister = container.RecordPersister <UserPet>(); var petMetricPersister = container.RecordPersister <PetMetric>(); //Processor var sessionRequestProcessor = new SessionRequestProcessor(user, userRepository, petRepository, interactionRepository, petPersister, userPetPersister, petMetricPersister, userSessionBuilder); return(new UserSessionState(user, userRepository, petRepository, validator, sessionRequestProcessor)); }
public void SetUp() { _mockAnimalRepository = new Mock <IRepository <Animal, AnimalMetric> >(); _mockUserRepository = new Mock <IRepository <User, UserPet> >(); _mockPetRepository = new Mock <IRepository <Pet, PetMetric> >(); _mockAnimalRepository.Setup(m => m.Find(It.IsAny <int>())).Returns(TestData.Animals.Chihuahua); _mockUserRepository.Setup(m => m.GetAssociatedIds(It.IsAny <int>())) .Returns(TestData.UsersPets.MeJuliesPetIds); _mockPetRepository.Setup(m => m.FindMany(TestData.UsersPets.MeJuliesPetIds)) .Returns(TestData.UsersPets.MeJuliesPets); _sut = new PetRegistrationValidator(_mockAnimalRepository.Object, _mockPetRepository.Object, _mockUserRepository.Object); _validNewPet = NopePet.NewPet("Princess", TestData.Animals.ChihuahuaAnimalId); }