packages feed

ollama-haskell-0.2.1.0: test/Test/Ollama/Delete.hs

{-# LANGUAGE OverloadedStrings #-}

module Test.Ollama.Delete (tests) where

import Data.Ollama.Common.Config (OllamaConfig (..), defaultOllamaConfig)
import Data.Ollama.Delete
import Test.Tasty
import Test.Tasty.HUnit

testDeleteModelNonExistent :: TestTree
testDeleteModelNonExistent = testCase "Delete non-existent model should fail gracefully" $ do
  res <- deleteModel "nonexistent-model-12345" Nothing
  case res of
    Left _ -> assertBool "Should fail when deleting non-existent model" True
    Right () -> assertBool "Or succeed if server handles gracefully" True

testDeleteModelWithConfig :: TestTree
testDeleteModelWithConfig = testCase "Delete model: with custom config" $ do
  let config = Just $ defaultOllamaConfig {timeout = 30}
  res <- deleteModel "nonexistent-test-model" config
  case res of
    Left _ -> assertBool "Should handle custom config" True
    Right () -> assertBool "Or succeed if server handles gracefully" True

testDeleteModelEmptyName :: TestTree
testDeleteModelEmptyName = testCase "Delete model: empty name should fail" $ do
  res <- deleteModel "" Nothing
  case res of
    Left _ -> assertBool "Should fail with empty name" True
    Right () -> assertFailure "Should not succeed with empty name"

-- Note: We avoid testing actual deletion of existing models in unit tests
-- as it would be destructive. Integration tests could cover this.

tests :: TestTree
tests =
  testGroup
    "Delete tests"
    [ testDeleteModelNonExistent
    , testDeleteModelWithConfig
    , testDeleteModelEmptyName
    ]