public void GetByOwnerAsync_OwnerIdIsEmpty_ThrowsArgumentNullException(
            CloudVehicleService sut)
        {
            Func <Task> act = async() => await sut.GetByOwnerAsync(string.Empty);

            act.Should().Throw <ArgumentNullException>()
            .And.ParamName.Should().Be("ownerId");
        }
        public async Task GetByOwnerAsync_GivenOwnerId_ShouldGetByPartitionKey(
            string ownerId,
            [Frozen] ITableHandler <Vehicle> vehicleHandler,
            CloudVehicleService sut)
        {
            var results = await sut.GetByOwnerAsync(ownerId);

            await vehicleHandler.Received().GetAsync(ownerId);
        }
        public async Task GetAllAsync_ShouldGetVehicleViewModels(
            List <Vehicle> vehicles,
            [Frozen] ITableHandler <Vehicle> vehicleHandler,
            CloudVehicleService sut)
        {
            vehicleHandler.GetAsync().Returns(vehicles);

            var result = await sut.GetAllAsync();

            result.Should().BeEquivalentTo(vehicles, (x) => x.ExcludingMissingMembers());
        }
        public async Task GetByOwnerAsync_ShouldGetVehicleViewModels(
            string ownerId,
            List <Vehicle> vehicles,
            [Frozen] ITableHandler <Vehicle> vehicleHandler,
            CloudVehicleService sut)
        {
            vehicleHandler.GetAsync(Arg.Any <string>()).Returns(vehicles);

            var results = await sut.GetByOwnerAsync(ownerId);

            results.Should().BeEquivalentTo(vehicles, (x) => x.ExcludingMissingMembers());
        }
        public async Task GetAllAsync_SingleVehicle_ShouldSetOwner(
            string scheme,
            HostString host,
            Vehicle vehicle,
            [Frozen] IHttpContextAccessor context,
            [Frozen] ITableHandler <Vehicle> vehicleHandler,
            CloudVehicleService sut)
        {
            var expectedOwner = $"{scheme}://{host.Value}/api/owners/{vehicle.PartitionKey}";

            context.HttpContext.Request.Scheme.Returns(scheme);
            context.HttpContext.Request.Host.Returns(host);
            vehicleHandler.GetAsync().Returns(new List <Vehicle> {
                vehicle
            });

            var result = await sut.GetAllAsync();

            result.First().Owner.Href.Should().Be(expectedOwner);
        }