Example #1
0
        private void SnowAnimalIsHiredForSummer_ThrowsNullReferenceException_WhenAnimalsAreNull()
        {
            //Arrange
            List <Animal> animals = null;
            var           animalSelectionValidator = new AnimalSelectionValidator();

            //Act && Assert
            Assert.Throws <NullReferenceException>(() => animalSelectionValidator.SnowAnimalIsHiredForSummer(animals, DateTime.Now));
        }
Example #2
0
        private void IsAnAnimalSelected_ThrowsNullReferenceException_WhenAnimalsAreNull()
        {
            //Arrange
            List <Animal> animals = null;
            var           animalSelectionValidator = new AnimalSelectionValidator();

            //Act && Assert
            Assert.Throws <NullReferenceException>(() => animalSelectionValidator.IsAnAnimalSelected(animals));
        }
Example #3
0
        private void PenguinIsHiredInWeekend_ThrowsNullReferenceException_WhenAnimalsAreNull()
        {
            //Arrange
            List <Animal> animals = null;
            var           animalSelectionValidator = new AnimalSelectionValidator();

            //Act && Assert
            Assert.Throws <NullReferenceException>(() => animalSelectionValidator.PenguinIsHiredInWeekend(animals, DateTime.Now));
        }
Example #4
0
        private void FarmAnimalHasNoLionOrIceBear_ThrowNullReferenceException_WhenAnimalsAreNull()
        {
            //Arrange
            List <Animal> animals = null;
            var           animalSelectionValidator = new AnimalSelectionValidator();

            //Act & Assert
            Assert.Throws <NullReferenceException>(() => animalSelectionValidator.FarmAnimalHasNoLionOrIceBear(animals));
        }
Example #5
0
        private void IsAnimalAlreadyBooked_ThrowsNullReferenceException_WhenAnimalsAreNull()
        {
            //Arrange
            List <BookingAnimal> bookingAnimals = null;
            var animalSelectionValidator        = new AnimalSelectionValidator();

            //Act
            Assert.Throws <NullReferenceException>(() => animalSelectionValidator.IsAnimalAlreadyBooked(bookingAnimals, 1));

            //Assert
        }
Example #6
0
        private void FarmAnimalHasNoLionOrIceBear_ReturnTrue_WhenAnimalsAreZero()
        {
            //Arrange
            List <Animal> animals = new List <Animal>();
            var           animalSelectionValidator = new AnimalSelectionValidator();

            //Act
            var result = animalSelectionValidator.FarmAnimalHasNoLionOrIceBear(animals);

            //Assert
            Assert.True(result);
        }
Example #7
0
        private void IsAnimalAlreadyBooked_ReturnsFalse_WhenIdIsInvalid()
        {
            //Arrange
            List <BookingAnimal> bookingAnimals = GetBookingAnimals();
            var animalSelectionValidator        = new AnimalSelectionValidator();

            //Act
            var result = animalSelectionValidator.IsAnimalAlreadyBooked(bookingAnimals, -1);

            //Assert
            Assert.False(result);
        }
Example #8
0
        private void IsAnimalAlreadyBooked_ReturnsTrue_WhenDataIsValid()
        {
            //Arrange
            List <BookingAnimal> bookingAnimals = GetBookingAnimals();
            var animalSelectionValidator        = new AnimalSelectionValidator();

            //Act
            var result = animalSelectionValidator.IsAnimalAlreadyBooked(bookingAnimals, 1);

            //Assert
            Assert.True(result);
        }
Example #9
0
        private void FarmAnimalHasNoLionOrIceBear_ReturnFalse_WhenAnimalAreFarmAndPolarBear()
        {
            //Arrange
            List <Animal> animals = GetAnimals();
            var           animalSelectionValidator = new AnimalSelectionValidator();

            //Act
            var result = animalSelectionValidator.FarmAnimalHasNoLionOrIceBear(animals);

            //Assert
            Assert.False(result);
        }
Example #10
0
        private void IsAnAnimalSelected_ReturnsTrue_WhenAnimalsAreAboveZero()
        {
            //Arrange
            List <Animal> animals = GetAnimals();
            var           animalSelectionValidator = new AnimalSelectionValidator();

            //Act
            var result = animalSelectionValidator.IsAnAnimalSelected(animals);

            //Assert
            Assert.True(result);
        }
Example #11
0
        private void IsAnAnimalSelected_ReturnsFalse_WhenAnimalsAreZero()
        {
            //Arrange
            List <Animal> animals = new List <Animal>();
            var           animalSelectionValidator = new AnimalSelectionValidator();

            //Act
            var result = animalSelectionValidator.IsAnAnimalSelected(animals);

            //Assert
            Assert.False(result);
        }
Example #12
0
        private void PenguinIsHiredInWeekend_ReturnFalse_WhenPinguinIsFalse()
        {
            //Arrange
            List <Animal> animals = GetAnimals();
            var           animalSelectionValidator = new AnimalSelectionValidator();

            DateTime dateTime = new DateTime(2020, 01, 18);

            //Act
            var restult = animalSelectionValidator.PenguinIsHiredInWeekend(animals, dateTime);

            //Assert
            Assert.False(restult);
        }
Example #13
0
        private void SnowAnimalIsHiredForSummer_ReturnTrue_WhenDataIsValid()
        {
            //Arrange
            List <Animal> animals = GetAnimals();

            animals[1].Type = AnimalTypes.Sneeuw;

            var animalSelectionValidator = new AnimalSelectionValidator();

            DateTime dateTime = new DateTime(2020, 7, 1);

            //Act
            var result = animalSelectionValidator.SnowAnimalIsHiredForSummer(animals, dateTime);

            //Assert
            Assert.True(result);
        }
Example #14
0
        private void DesertAnimalIsHiredInWinter_ReturnFalse_WhenTypeIsInvalid()
        {
            //Arrange
            List <Animal> animals = GetAnimals();

            animals[1].Type = AnimalTypes.Sneeuw;

            var animalSelectionValidator = new AnimalSelectionValidator();

            DateTime dateTime = new DateTime(2020, 01, 18);

            //Act
            var restult = animalSelectionValidator.DesertAnimalIsHiredInWinter(animals, dateTime);

            //Assert
            Assert.False(restult);
        }
Example #15
0
        private void DesertAnimalIsHiredInWinter_ReturnTrue_WhenDataIsValid()
        {
            //Arrange
            List <Animal> animals = GetAnimals();

            animals[1].Type = AnimalTypes.Woestijn;

            var animalSelectionValidator = new AnimalSelectionValidator();

            DateTime dateTime = new DateTime(2020, 1, 1);

            //Act
            var result = animalSelectionValidator.DesertAnimalIsHiredInWinter(animals, dateTime);

            //Assert
            Assert.True(result);
        }
Example #16
0
        private void PenguinIsHiredInWeekend_ReturnTrue_WhenDataIsValid()
        {
            //Arrange
            List <Animal> animals = GetAnimals();

            animals.Add(new Animal()
            {
                ID          = 4,
                Name        = "Pinguin",
                Type        = AnimalTypes.Sneeuw,
                Price       = 45.00,
                PicturePath = "/images/animals/pingwing.png"
            });

            var animalSelectionValidator = new AnimalSelectionValidator();

            DateTime dateTime = new DateTime(2020, 01, 18);

            //Act
            var result = animalSelectionValidator.PenguinIsHiredInWeekend(animals, dateTime);

            //Assert
            Assert.True(result);
        }
Example #17
0
        public async Task <IActionResult> AnimalsSelected(BookingProcess data)
        {
            AnimalSelectionValidator animalSelectionValidator = new AnimalSelectionValidator();

            Booking       booking         = await((BookingDBRepository)_bookingRepository).GetFromDate(data.Booking.Date);
            List <Animal> selectedAnimals = new List <Animal>();

            foreach (Animal animal in data.Animals)
            {
                if (booking != null && animal.BookingIsSelected)
                {
                    if (animalSelectionValidator.IsAnimalAlreadyBooked(booking.BookingAnimals, animal.ID))
                    {
                        TempData["error"] = "Selected animals are already booked";
                        return(RedirectToActionPermanent(nameof(AnimalSelection), booking));
                    }
                }

                if (animal.BookingIsSelected)
                {
                    Animal dAnimal = await((AnimalDbRepository)_animalRepository).Get(animal.ID);
                    selectedAnimals.Add(dAnimal);
                }
            }

            booking = data.Booking;
            if (!animalSelectionValidator.IsAnAnimalSelected(selectedAnimals))
            {
                TempData["error"] = "Please select an animal";
                return(RedirectToActionPermanent(nameof(AnimalSelection), booking));
            }

            if (!animalSelectionValidator.FarmAnimalHasNoLionOrIceBear(selectedAnimals))
            {
                TempData["error"] = "An animal from the farm can not be along with Lion and Ice Bear";
                return(RedirectToActionPermanent(nameof(AnimalSelection), booking));
            }

            if (animalSelectionValidator.PenguinIsHiredInWeekend(selectedAnimals, data.Booking.Date))
            {
                TempData["error"] = "Penguin can not be booked during the weekend";
                return(RedirectToActionPermanent(nameof(AnimalSelection), booking));
            }

            if (animalSelectionValidator.DesertAnimalIsHiredInWinter(selectedAnimals, data.Booking.Date))
            {
                TempData["error"] = "Desert animal can not be selected for the Winter";
                return(RedirectToActionPermanent(nameof(AnimalSelection), booking));
            }

            if (animalSelectionValidator.SnowAnimalIsHiredForSummer(selectedAnimals, data.Booking.Date))
            {
                TempData["error"] = "Snow Animal cannot be selected for the Summer";
                return(RedirectToActionPermanent(nameof(AnimalSelection), booking));
            }

            data.DateTime             = data.Booking.Date;
            data.Animals              = selectedAnimals;
            data.Booking.BookingState = BookingState.Accessories;
            return(View("AnimalSelection", data));
        }