public async Task GetRecommendedSlot_WhenOneAppropriateAvailableSlot_ReturnSlot()
        {
            var startTime = DateTime.Now;
            var duration = 9;
            var airplane = new Airplane { AirplaneId = It.IsAny<int>(), Type = new AirplaneType { Name = "777", Size = 5 } };
            var emptySlot = new ScoredSlot { IsEmpty = true, Size = 1, SlotId = It.IsAny<int>(), Score = 1 };
            var slots = new List<Slot> { emptySlot };
            _mockSlotRepository.Setup(r => r.GetAvailableSlots()).ReturnsAsync(slots);
            _mockScoreProvider.Setup(s => s.ScoreSlot(emptySlot, airplane)).Returns(emptySlot);

            var sut = new SlotService(_mockScoreProvider.Object, _mockSlotRepository.Object);

            var result = await sut.GetRecommendedSlot(startTime, duration, airplane);

            result.Should().Be(emptySlot);
        }
        public void ScoreSlots_WhenSlotIsBestFit_ReturnFive()
        {
            var airplane = new Airplane {
                AirplaneId = It.IsAny <int>(), Type = new AirplaneType {
                    Name = "777", Size = 7
                }
            };
            var slot = new Slot {
                IsEmpty = true, Size = 7, SlotId = It.IsAny <int>()
            };
            var expected = new ScoredSlot {
                Score = 5, SlotId = slot.SlotId, Size = slot.Size, IsEmpty = true
            };
            var sut = new SlotSizeScoreProvider();

            var result = sut.ScoreSlot(slot, airplane);

            using (new AssertionScope())
            {
                result.Should().BeOfType(typeof(ScoredSlot));
                result.Score.Should().Be(expected.Score);
            }
        }