{-# LANGUAGE OverloadedStrings #-} module CodeAction.UseDataConSpec where import qualified Data.Text as T import Wingman.Types import Test.Hspec import Utils spec :: Spec spec = do let useTest = goldenTest UseDataCon describe "provider" $ do mkTest "Suggests all data cons for Either" "ConProviders" 5 6 [ (id, UseDataCon, "Left") , (id, UseDataCon, "Right") , (not, UseDataCon, ":") , (not, UseDataCon, "[]") , (not, UseDataCon, "C1") ] mkTest "Suggests no data cons for big types" "ConProviders" 11 17 $ do c <- [1 :: Int .. 10] pure $ (not, UseDataCon, T.pack $ show c) mkTest "Suggests only matching data cons for GADT" "ConProviders" 20 12 [ (id, UseDataCon, "IntGADT") , (id, UseDataCon, "VarGADT") , (not, UseDataCon, "BoolGADT") ] describe "golden" $ do useTest "(,)" 2 8 "UseConPair" useTest "Left" 2 8 "UseConLeft" useTest "Right" 2 8 "UseConRight"