public async Task TestWeatherReaderServiceIsNull()
        {
            IWeatherReaderPort nullWeatherReaderPort = null;

            //Hexagon
            var result = Assert.Throws <ArgumentNullException>(() => CreateForecastPort(nullWeatherReaderPort));

            Assert.True(result.Message.Contains("IWeatherReaderPort"));
        }
        public async Task TestWeatherReaderServiceIsUnavailable()
        {
            //Driven port
            //Right side
            IWeatherReaderPort weatherReaderPort = WeatherReaderPortStub.WhichUnavailable();

            //Hexagon
            IWeatherForecastPort sut = CreateForecastPort(weatherReaderPort);
            var result = await Assert.ThrowsAnyAsync <WeatherReaderServiceUnavailableException>(() => sut.GetTodayWeather());

            Assert.Equal("سرویس در دسترس نمی باشد", result.Message);
        }
예제 #3
0
        public WeatherForecastService(IWeatherReaderPort weatherForecastPort, ITempratureConverter tempretureConverter, ISmsSenderPort smsSenderPort)
        {
            //Fail fast
            //Guard Clouse
            if (weatherForecastPort == null)
            {
                throw new ArgumentNullException(@"IWeatherReaderPort");
            }

            _weatherForecastPort = weatherForecastPort;
            _tempratureConverter = tempretureConverter;
            _smsSenderPort       = smsSenderPort;
        }
 //Factory Method
 private IWeatherForecastPort CreateForecastPort(IWeatherReaderPort weatherReaderPort, ISmsSenderPort smsSenderPort = null)
 {
     return(new WeatherForecastService(weatherReaderPort, CreateTempratureConverter(), smsSenderPort));
 }