content: {-# LANGUAGE DeriveGeneric #-}
  {-# LANGUAGE DerivingStrategies #-}
  {-# LANGUAGE DuplicateRecordFields #-}
  {-# LANGUAGE MultiParamTypeClasses #-}
  {-# LANGUAGE OverloadedStrings #-}
  {-# LANGUAGE QuasiQuotes #-}
  {-# LANGUAGE TemplateHaskell #-}
  {-# LANGUAGE TypeFamilies #-}
  {-# LANGUAGE NoImplicitPrelude #-}
  
  module Case.Interface.Test
    ( test,
    )
  where
  
  import Data.Morpheus.Client
    ( declareLocalTypes,
    )
  import Relude
  import Spec.Utils
    ( assertFetch,
      path,
    )
  import Test.Tasty
    ( TestTree,
    )
  
  declareLocalTypes
    (path "Interface/schema.gql")
    (path "Interface/query.gql")
  
  test :: TestTree
  test =
    assertFetch
      "Interface"
      Nothing
      ()
      ( Right
          MyQuery
            { character =
                [ MyQueryCharacterVariantDeity
                    MyQueryCharacterDeity
                      { __typename = "Deity",
                        name = "Deity Name",
                        power = "Deity Power"
                      },
                  MyQueryCharacterVariantCharacter
                    MyQueryCharacterCharacter
                      { __typename = "Character",
                        name = "Character Name"
                      },
                  MyQueryCharacterVariantHero
                    MyQueryCharacterHero
                      { __typename = "Hero",
                        name = "Hero Name",
                        hobby = "Deity Power"
                      }
                ],
              character2 =
                [ MyQueryCharacter2
                    { name1 = "test name",
                      name = "test name"
                    }
                ],
              character3 =
                [ MyQueryCharacter3VariantHero
                    MyQueryCharacter3Hero
                      { __typename = "Hero",
                        name2 = "Hero name2",
                        hobby = "Hero Hobby"
                      },
                  MyQueryCharacter3VariantCharacter
                    MyQueryCharacter3Character
                      { name2 = "This should be a Deity!"
                      },
                  MyQueryCharacter3VariantCharacter
                    MyQueryCharacter3Character
                      { name2 = "Character name2"
                      }
                ],
              character4 =
                [ MyQueryCharacter4,
                  MyQueryCharacter4VariantHero
                    MyQueryCharacter4Hero
                      { __typename = "Hero",
                        hobby = "Hero Hobby"
                      },
                  MyQueryCharacter4
                ]
            }
      )
  