Test nullability on value completion
This commit is contained in:
		@@ -106,6 +106,7 @@ philosopherType = Out.ObjectType "Philosopher" Nothing []
 | 
			
		||||
        , ("interest", ValueResolver interestField interestResolver)
 | 
			
		||||
        , ("majorWork", ValueResolver majorWorkField majorWorkResolver)
 | 
			
		||||
        , ("century", ValueResolver centuryField centuryResolver)
 | 
			
		||||
        , ("firstLanguage", ValueResolver firstLanguageField firstLanguageResolver)
 | 
			
		||||
        ]
 | 
			
		||||
    firstNameField =
 | 
			
		||||
        Out.Field Nothing (Out.NonNullScalarType string) HashMap.empty
 | 
			
		||||
@@ -131,6 +132,9 @@ philosopherType = Out.ObjectType "Philosopher" Nothing []
 | 
			
		||||
    centuryField =
 | 
			
		||||
        Out.Field Nothing (Out.NonNullScalarType int) HashMap.empty
 | 
			
		||||
    centuryResolver = pure $ Float 18.5
 | 
			
		||||
    firstLanguageField
 | 
			
		||||
        = Out.Field Nothing (Out.NonNullScalarType string) HashMap.empty
 | 
			
		||||
    firstLanguageResolver = pure Null
 | 
			
		||||
 | 
			
		||||
workType :: Out.InterfaceType (Either SomeException)
 | 
			
		||||
workType = Out.InterfaceType "Work" Nothing []
 | 
			
		||||
@@ -333,6 +337,20 @@ spec =
 | 
			
		||||
                        $ parse document "" "{ count }"
 | 
			
		||||
                in actual `shouldBe` expected
 | 
			
		||||
 | 
			
		||||
            it "detects nullability errors" $
 | 
			
		||||
                let data'' = Aeson.object
 | 
			
		||||
                        [ "philosopher" .= Aeson.Null
 | 
			
		||||
                        ]
 | 
			
		||||
                    executionErrors = pure $ Error
 | 
			
		||||
                        { message = "Value completion error. Expected type !String, found: null."
 | 
			
		||||
                        , locations = [Location 1 26]
 | 
			
		||||
                        , path = [Segment "philosopher", Segment "firstLanguage"]
 | 
			
		||||
                        }
 | 
			
		||||
                    expected = Response data'' executionErrors
 | 
			
		||||
                    Right (Right actual) = either (pure . parseError) execute'
 | 
			
		||||
                        $ parse document "" "{ philosopher(id: \"1\") { firstLanguage } }"
 | 
			
		||||
                in actual `shouldBe` expected
 | 
			
		||||
 | 
			
		||||
        context "Subscription" $
 | 
			
		||||
            it "subscribes" $
 | 
			
		||||
                let data'' = Aeson.object
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user