packages feed

neuron-0.4.0.0: test/Neuron/VersionSpec.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE NoImplicitPrelude #-}

module Neuron.VersionSpec
  ( spec,
  )
where

import qualified Data.Text as T
import Neuron.Version
import Relude
import Test.Hspec

spec :: Spec
spec = do
  describe "Application version" $ do
    it "should have dots" $ do
      neuronVersion `shouldSatisfy` T.isInfixOf "."
  -- TODO: Check minVersion in Default.dhall is same as the one in Paths_neuron
  describe "must compare" $ do
    let isGreater = shouldSatisfy
        isLesserOrEqual = shouldNotSatisfy
    it "simple versions" $ do
      -- If the user requires 0.4, and we are "older than" than that, fail (aka. isGreater)
      "0.5" `isGreater` olderThan
      "0.4" `isLesserOrEqual` olderThan -- This is current version
      "0.2" `isLesserOrEqual` olderThan
    it "full versions" $ do
      "0.5.1.2" `isGreater` olderThan
      "0.4.3" `isGreater` olderThan
      "0.4.1.8" `isGreater` olderThan
      "0.4.0.0" `isLesserOrEqual` olderThan -- This is current version
      "0.3.1.0" `isLesserOrEqual` olderThan
    it "within same major version" $ do
      "0.4.1.8" `isGreater` olderThan
      "0.4.0.0" `isLesserOrEqual` olderThan -- This is current version