Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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));
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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
        }
Exemple #7
0
 public static Pet ToPetModel(this NopePet nopePet)
 {
     return(new Pet(nopePet.PetId, nopePet.Species.SpeciesId, nopePet.PetName));
 }
Exemple #8
0
 public static UserPet ToUserPetModel(this NopePet pet)
 {
     return(new UserPet(pet.Owner.UserId, pet.PetId, pet.Birthday));
 }