public async Task DeleteWeather_WhenCityNotAssigned_ThrowsException()
        {
            var mapperStub         = new Mock <IMapper>();
            var weatherServiceStub = new Mock <IWeatherService>();

            weatherServiceStub.Setup
                (e => e.DeleteWeather(It.IsAny <string>(), It.IsAny <Guid>()))
            .Throws <CityNotAssignedException>();

            var user = new ClaimsPrincipal(new ClaimsIdentity(new[]
            {
                new Claim(JwtClaimTypes.Subject, Guid.NewGuid().ToString())
            }));

            var controller = new WeatherController
                                 (weatherServiceStub.Object, mapperStub.Object)
            {
                ControllerContext = new ControllerContext
                {
                    HttpContext = new DefaultHttpContext {
                        User = user
                    }
                }
            };

            var result = controller.DeleteWeather(It.IsAny <string>());

            await Assert.ThrowsAsync <CityNotAssignedException>(() => result);
        }
        public async Task DeleteWeather_ByDefault_ReturnsCorrectType()
        {
            var mapperStub         = new Mock <IMapper>();
            var weatherServiceStub = new Mock <IWeatherService>();

            weatherServiceStub.Setup
                (e => e.DeleteWeather(It.IsAny <string>(), It.IsAny <Guid>()))
            .Returns(Task.FromResult <ICollection <WeatherDto> >(new List <WeatherDto>()));

            var user = new ClaimsPrincipal(new ClaimsIdentity(new[]
            {
                new Claim(JwtClaimTypes.Subject, Guid.NewGuid().ToString())
            }));

            var controller = new WeatherController
                                 (weatherServiceStub.Object, mapperStub.Object)
            {
                ControllerContext = new ControllerContext
                {
                    HttpContext = new DefaultHttpContext {
                        User = user
                    }
                }
            };

            var result = await controller.DeleteWeather(It.IsAny <string>());

            Assert.IsType <OkObjectResult>(result);
        }