module Ribosome.Test.Unit(
  unitSpec,
  tempDir,
  tempFile,
  uPrefix,
) where

import System.FilePath (takeDirectory, takeFileName, (</>))
import Neovim (Neovim)
import Ribosome.Data.Ribo (Ribo)
import Ribosome.Test.Embed (TestConfig(..), setupPluginEnv, unsafeEmbeddedSpec)
import qualified Ribosome.Test.File as F (tempDir)

uPrefix :: String
uPrefix = "u"

uSpec :: TestConfig -> Neovim env () -> Neovim env ()
uSpec conf spec = do
  setupPluginEnv conf
  spec

unitSpec :: TestConfig -> e -> Ribo e () -> IO ()
unitSpec =
  unsafeEmbeddedSpec uSpec

tempDir :: FilePath -> Neovim e FilePath
tempDir = F.tempDir uPrefix

tempFile :: FilePath -> Neovim e FilePath
tempFile file = do
  absDir <- tempDir $ takeDirectory file
  return $ absDir </> takeFileName file