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

module RewriteSpec where

import qualified Data.Text as T
import qualified Data.Text.IO as T
import qualified File
import OurPrelude
import qualified Polysemy.Error as Error
import qualified Polysemy.Output as Output
import qualified Process
import qualified Rewrite
import Test.Hspec
import qualified Utils

main :: IO ()
main = hspec spec

spec :: Spec
spec = do
  describe "Rewrite.quotedUrls" do
    it "quotes an unquoted meta.homepage URL" do
      nixQuotedHomepageBad <- T.readFile "test_data/quoted_homepage_bad.nix"
      nixQuotedHomepageGood <- T.readFile "test_data/quoted_homepage_good.nix"
      let options = Utils.Options False False "r-ryantm" "" False False False
      let updateEnv = Utils.UpdateEnv "inadyn" "2.5" "2.6" Nothing options
      -- TODO test correct file is being read
      let rwArgs = Rewrite.Args updateEnv "inadyn" undefined undefined False
      (logs, (newContents, result)) <-
        ( runFinal
            . embedToFinal
            . Output.runOutputList
            . File.runPure [nixQuotedHomepageBad]
            . Process.runPure ["\"http://troglobit.com/project/inadyn/\""]
            . Error.errorToIOFinal
            $ Rewrite.quotedUrls rwArgs
          )
      T.putStrLn $ T.unlines logs
      head logs `shouldBe` "[quotedUrls]"
      result `shouldBe` Right (Just "Quoted meta.homepage for [RFC 45](https://github.com/NixOS/rfcs/pull/45)")
      head newContents `shouldBe` nixQuotedHomepageGood