Given_a_New_NopePet_request_with_missing_payload_fields_then_when_validated_returns_false_with_correct_error(string petName, int speciesId) { //Arrange var payload = new NopePet() { PetName = petName, SpeciesId = speciesId }; //Act ErrorMessage error; var result = _sut.IsValid(TestData.Users.MeJulie, payload, out error); //Assert Assert.IsFalse(result); Assert.AreEqual(error.Code, ErrorCode.MissingField); if (speciesId == default(int)) { StringAssert.Contains(nameof(payload.SpeciesId), error.Message); } if (string.IsNullOrEmpty(petName)) { StringAssert.Contains(nameof(payload.PetName), error.Message); } }
Given_a_New_NopePet_request_for_which_the_user_already_has_a_NopePet_with_the_same_name_then_when_validated_returns_false_with_correct_error() { //Arrange var payload = NopePet.NewPet(TestData.UsersPets.Versace.Name, TestData.Animals.ChihuahuaAnimalId); //Act ErrorMessage error; var result = _sut.IsValid(TestData.Users.MeJulie, payload, out error); //Assert Assert.IsFalse(result); Assert.AreEqual(error.Code, ErrorCode.PetAlreadyExists); }
private bool TryCreateNewPetDbRecord(NopePet requestData, out IResponse response) { var newPet = requestData.ToNewPetModel(); ErrorMessage errorMessage; if (!_petPersister.TryPersist(ref newPet, out errorMessage)) { response = new UserSessionPetResponse().SetErrorResponse(errorMessage); return(false); } return(TryCreateNewPetMetricsDbRecord(ref newPet, out response)); }
Given_a_New_NopePet_request_is_not_associated_with_a_known_Animal_then_when_validated_returns_false_with_correct_error() { //Arrange var bogusSpeciesId = 2345; var payload = NopePet.NewPet("Princess", bogusSpeciesId); _mockAnimalRepository.Setup(m => m.Find(bogusSpeciesId)).Returns((Animal)null); //Act ErrorMessage error; var result = _sut.IsValid(TestData.Users.MeJulie, payload, out error); //Assert Assert.IsFalse(result); Assert.AreEqual(error.Code, ErrorCode.SpeciesDoesNotExist); }
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); }
Given_a_valid_and_persisted_pet_registration_request_then_when_processed_returns_the_new_pet_data_and_updates_the_user_and_pet_repositories() { var sut = SetupMockMeJulieLogin(); ErrorMessage error; MockPetPersister.Setup(m => m.TryPersist(ref It.Ref <Pet> .IsAny, out error)) .Callback(new CallbackPet((ref Pet pet, out ErrorMessage errorCallback) => { pet.PetId = TestData.UsersPets.BurberryPetId + 1; errorCallback = null; })).Returns(true); MockPetMetricPersister.Setup(m => m.TryPersist(ref It.Ref <PetMetric> .IsAny, out error)) .Callback(new CallbackPetMetric((ref PetMetric metric, out ErrorMessage errorCallback) => { metric = new PetMetric(TestData.UsersPets.BurberryPetId + 1, TestData.AnimalMetrics.Confidence.MetricId, 0, DateTime.UtcNow); errorCallback = null; })).Returns(true); var request = new UserSessionRequest <NopePet>() { RequestType = RequestType.Create, Payload = NopePet.NewPet("Smeagle", TestData.Animals.ChihuahuaAnimalId), UserId = TestData.Users.MeJulie.UserId, PayloadType = typeof(NopePet) }; IResponse response; var result = sut.ProcessRequest(request, out response); Assert.IsTrue(result); Assert.IsNotNull(response as UserSessionPetResponse); var responseData = (response as UserSessionPetResponse).Pets; Assert.AreEqual(responseData.Count, 1); var newPet = responseData.First(item => item.PetName == "Smeagle"); AssertPetOwnerIsCorrect(newPet.Owner, TestData.Users.MeJulie); //Todo additional asserts }
public static Pet ToPetModel(this NopePet nopePet) { return(new Pet(nopePet.PetId, nopePet.Species.SpeciesId, nopePet.PetName)); }
public static UserPet ToUserPetModel(this NopePet pet) { return(new UserPet(pet.Owner.UserId, pet.PetId, pet.Birthday)); }