Skip to content

Commit

Permalink
fix: Updated mock function descriptor handling (apollographql#3150)
Browse files Browse the repository at this point in the history
  • Loading branch information
BobaFetters authored Jul 25, 2023
1 parent 1d0badc commit e95cec8
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 4 deletions.
16 changes: 12 additions & 4 deletions Sources/ApolloCodegenLib/Templates/MockObjectTemplate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,18 @@ struct MockObjectTemplate: TemplateRenderer {

private func mockFunctionDescriptor(_ graphQLType: GraphQLType) -> String {
switch graphQLType {
case .list(.nonNull(.scalar(_))):
return "ScalarList"
case .list(_):
return "List"
case .list(let type):
switch type {
case .nonNull(.list(_)),
.list(_):
return mockFunctionDescriptor(type)
case .nonNull(.entity(_)),
.entity(_):
return "List"
default:
break
}
return "ScalarList"
case .scalar(_), .enum(_):
return "Scalar"
case .entity(_):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -486,8 +486,12 @@ class MockObjectTemplateTests: XCTestCase {

subject.graphqlObject.fields = [
"string": .mock("string", type: .nonNull(.string())),
"stringList": .mock("stringList", type: .list(.nonNull(.string()))),
"stringNestedList": .mock("stringNestedList", type: .list(.list(.nonNull(.string())))),
"stringOptionalList": .mock("stringOptionalList", type: .list(.string())),
"customScalar": .mock("customScalar", type: .nonNull(.scalar(.mock(name: "CustomScalar")))),
"customScalarList": .mock("customScalarList", type: .list(.nonNull(.scalar(.mock(name: "CustomScalar"))))),
"customScalarOptionalList": .mock("customScalarOptionalList", type: .list(.scalar(.mock(name: "CustomScalar")))),
"optionalString": .mock("optionalString", type: .string()),
"object": .mock("object", type: Cat),
"objectList": .mock("objectList", type: .list(.nonNull(Cat))),
Expand All @@ -502,6 +506,8 @@ class MockObjectTemplateTests: XCTestCase {
"unionNestedList": .mock("unionNestedList", type: .list(.nonNull(.list(.nonNull(Pet))))),
"unionOptionalList": .mock("unionOptionalList", type: .list(Pet)),
"enumType": .mock("enumType", type: .enum(.mock(name: "enumType"))),
"enumList": .mock("enumList", type: .list(.nonNull(.enum(.mock(name: "enumType"))))),
"enumOptionalList": .mock("enumOptionalList", type: .list(.enum(.mock(name: "enumType"))))
]

ir.fieldCollector.add(
Expand All @@ -518,6 +524,9 @@ class MockObjectTemplateTests: XCTestCase {
convenience init(
customScalar: TestSchema.CustomScalar? = nil,
customScalarList: [TestSchema.CustomScalar]? = nil,
customScalarOptionalList: [TestSchema.CustomScalar]? = nil,
enumList: [GraphQLEnum<TestSchema.EnumType>]? = nil,
enumOptionalList: [GraphQLEnum<TestSchema.EnumType>]? = nil,
enumType: GraphQLEnum<TestSchema.EnumType>? = nil,
interface: AnyMock? = nil,
interfaceList: [AnyMock]? = nil,
Expand All @@ -529,6 +538,9 @@ class MockObjectTemplateTests: XCTestCase {
objectOptionalList: [Mock<Cat>?]? = nil,
optionalString: String? = nil,
string: String? = nil,
stringList: [String]? = nil,
stringNestedList: [[String]]? = nil,
stringOptionalList: [String]? = nil,
union: AnyMock? = nil,
unionList: [AnyMock]? = nil,
unionNestedList: [[AnyMock]]? = nil,
Expand All @@ -537,6 +549,9 @@ class MockObjectTemplateTests: XCTestCase {
self.init()
_setScalar(customScalar, for: \\.customScalar)
_setScalarList(customScalarList, for: \\.customScalarList)
_setScalarList(customScalarOptionalList, for: \\.customScalarOptionalList)
_setScalarList(enumList, for: \\.enumList)
_setScalarList(enumOptionalList, for: \\.enumOptionalList)
_setScalar(enumType, for: \\.enumType)
_setEntity(interface, for: \\.interface)
_setList(interfaceList, for: \\.interfaceList)
Expand All @@ -548,6 +563,9 @@ class MockObjectTemplateTests: XCTestCase {
_setList(objectOptionalList, for: \\.objectOptionalList)
_setScalar(optionalString, for: \\.optionalString)
_setScalar(string, for: \\.string)
_setScalarList(stringList, for: \\.stringList)
_setScalarList(stringNestedList, for: \\.stringNestedList)
_setScalarList(stringOptionalList, for: \\.stringOptionalList)
_setEntity(union, for: \\.union)
_setList(unionList, for: \\.unionList)
_setList(unionNestedList, for: \\.unionNestedList)
Expand Down

0 comments on commit e95cec8

Please sign in to comment.