repos / handle-examples.hs.git


handle-examples.hs.git / vinyl-handle / test
Evgenii Akentev  ·  2021-01-09

Test.hs

 1import Test.Hspec
 2
 3import qualified TestWeatherProvider
 4import qualified WeatherProvider
 5import qualified TemperatureProvider
 6import qualified WindProvider
 7import qualified WeatherReporter
 8
 9main :: IO ()
10main = hspec spec
11
12weatherWithTempAndWind
13  :: TemperatureProvider.Temperature
14  -> WindProvider.WindSpeed
15  -> WeatherReporter.Handle
16weatherWithTempAndWind t w = WeatherReporter.new
17  $ TestWeatherProvider.new
18  $ TestWeatherProvider.Config t w
19
20spec :: Spec
21spec = describe "WeatherReporter" $ do
22  it "weather in London is 0 and wind is 5" $ do
23    weatherReportInLondon <- WeatherReporter.getCurrentWeatherReportInLondon $
24      weatherWithTempAndWind 0 5
25    weatherReportInLondon `shouldBe` "The current temperature in London is 0 and wind speed is 5"
26  it "weather in London is -5 and wind is 10" $ do
27    weatherReportInLondon <- WeatherReporter.getCurrentWeatherReportInLondon $
28      weatherWithTempAndWind (-5) 10
29    weatherReportInLondon `shouldBe` "The current temperature in London is -5 and wind speed is 10"