Skip to content

Commit 326db4a

Browse files
[EE-3024] remove dead code (#50)
* remove dead code * more unit tests * 2.0.4
1 parent 490173c commit 326db4a

File tree

5 files changed

+223
-8
lines changed

5 files changed

+223
-8
lines changed

CLAUDE.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,3 @@ The library processes GraphQL Abstract Syntax Trees (AST) from the `graphql` lib
6363
- Validates that all variables referenced in query are provided
6464
- Throws descriptive errors for malformed GraphQL syntax
6565
- Prevents multiple operations in single query string
66-
67-
### Coverage Limitations
68-
Line 111 (`argsObj[arg.name.value] = getSelections(arg.selectionSet.selections)`) handles arguments with selection sets, but this is not valid GraphQL syntax and appears to be unreachable defensive code.

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "graphql-query-to-json",
3-
"version": "2.0.3",
3+
"version": "2.0.4",
44
"description": "Convert graphQL queries and mutations to easily readable JSON representations.",
55
"main": "dist/index.js",
66
"scripts": {

src/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,6 @@ const getArguments = (args) => {
106106
} else if (arg.value.kind === "Variable") {
107107
argsObj[arg.name.value] =
108108
`${arg.value.name.value}${isVariableDropinConst}`
109-
} else if (arg.selectionSet) {
110-
argsObj[arg.name.value] = getSelections(arg.selectionSet.selections)
111109
} else if (arg.value.kind === "EnumValue") {
112110
argsObj[arg.name.value] = new EnumType(arg.value.value)
113111
} else if (arg.value.kind === "IntValue") {

src/test/full_functionality.spec.ts

Lines changed: 220 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -940,3 +940,223 @@ mutation CreatePost {
940940
}).toThrow("The parsed query has more than one set of definitions")
941941
})
942942
})
943+
944+
describe("Edge Cases and Additional Coverage", () => {
945+
it("Handles query with no variable definitions", () => {
946+
const query = `
947+
query {
948+
viewer {
949+
name
950+
}
951+
}
952+
`
953+
expect(() => graphQlQueryToJson(query, {variables: {}})).not.toThrow()
954+
})
955+
956+
it("Handles boolean arguments", () => {
957+
const query = `
958+
query {
959+
viewer {
960+
posts(published: true, featured: false) {
961+
title
962+
}
963+
}
964+
}
965+
`
966+
expect(graphQlQueryToJson(query)).toEqual({
967+
query: {
968+
viewer: {
969+
posts: {
970+
__args: {
971+
published: true,
972+
featured: false,
973+
},
974+
title: true,
975+
},
976+
},
977+
},
978+
})
979+
})
980+
981+
it("Handles float arguments as strings", () => {
982+
const query = `
983+
query {
984+
viewer {
985+
products(rating: 4.5, price: 99.99) {
986+
name
987+
}
988+
}
989+
}
990+
`
991+
expect(graphQlQueryToJson(query)).toEqual({
992+
query: {
993+
viewer: {
994+
products: {
995+
__args: {
996+
rating: "4.5",
997+
price: "99.99",
998+
},
999+
name: true,
1000+
},
1001+
},
1002+
},
1003+
})
1004+
})
1005+
1006+
it("Handles null arguments as undefined", () => {
1007+
const query = `
1008+
query {
1009+
viewer {
1010+
profile(avatar: null) {
1011+
name
1012+
}
1013+
}
1014+
}
1015+
`
1016+
expect(graphQlQueryToJson(query)).toEqual({
1017+
query: {
1018+
viewer: {
1019+
profile: {
1020+
__args: {
1021+
avatar: undefined,
1022+
},
1023+
name: true,
1024+
},
1025+
},
1026+
},
1027+
})
1028+
})
1029+
1030+
it("Handles simple string arrays in arguments", () => {
1031+
const query = `
1032+
query {
1033+
search(tags: ["tech", "news"]) {
1034+
results
1035+
}
1036+
}
1037+
`
1038+
expect(graphQlQueryToJson(query)).toEqual({
1039+
query: {
1040+
search: {
1041+
__args: {
1042+
tags: ["tech", "news"],
1043+
},
1044+
results: true,
1045+
},
1046+
},
1047+
})
1048+
})
1049+
1050+
it("Handles variables with mixed types", () => {
1051+
const query = `
1052+
query TestQuery($text: String!, $count: Int!, $active: Boolean!, $rating: Float!) {
1053+
search(filter: {
1054+
text: $text,
1055+
count: $count,
1056+
active: $active,
1057+
rating: $rating
1058+
}) {
1059+
results
1060+
}
1061+
}
1062+
`
1063+
const result = graphQlQueryToJson(query, {
1064+
variables: {
1065+
text: "test",
1066+
count: 5,
1067+
active: true,
1068+
rating: 3.7,
1069+
},
1070+
})
1071+
expect(result).toEqual({
1072+
query: {
1073+
search: {
1074+
__args: {
1075+
filter: {
1076+
text: "test",
1077+
count: 5,
1078+
active: true,
1079+
rating: 3.7,
1080+
},
1081+
},
1082+
results: true,
1083+
},
1084+
},
1085+
})
1086+
})
1087+
1088+
it("Handles simple variable replacement in nested objects", () => {
1089+
const query = `
1090+
query TestQuery($name: String!) {
1091+
user(filter: { name: $name, active: true }) {
1092+
id
1093+
name
1094+
}
1095+
}
1096+
`
1097+
const result = graphQlQueryToJson(query, {
1098+
variables: {
1099+
name: "Alice",
1100+
},
1101+
})
1102+
expect(result).toEqual({
1103+
query: {
1104+
user: {
1105+
__args: {
1106+
filter: {
1107+
name: "Alice",
1108+
active: true,
1109+
},
1110+
},
1111+
id: true,
1112+
name: true,
1113+
},
1114+
},
1115+
})
1116+
})
1117+
1118+
it("Handles enums in lists", () => {
1119+
const query = `
1120+
query {
1121+
posts(statuses: [PUBLISHED, DRAFT, ARCHIVED]) {
1122+
title
1123+
}
1124+
}
1125+
`
1126+
expect(graphQlQueryToJson(query)).toEqual({
1127+
query: {
1128+
posts: {
1129+
__args: {
1130+
statuses: ["PUBLISHED", "DRAFT", "ARCHIVED"],
1131+
},
1132+
title: true,
1133+
},
1134+
},
1135+
})
1136+
})
1137+
1138+
it("Handles string concatenation edge case in variable replacement", () => {
1139+
const query = `
1140+
query TestQuery($prefix: String!) {
1141+
search(term: $prefix) {
1142+
results
1143+
}
1144+
}
1145+
`
1146+
const result = graphQlQueryToJson(query, {
1147+
variables: {
1148+
prefix: "test_prefix_value",
1149+
},
1150+
})
1151+
expect(result).toEqual({
1152+
query: {
1153+
search: {
1154+
__args: {
1155+
term: "test_prefix_value",
1156+
},
1157+
results: true,
1158+
},
1159+
},
1160+
})
1161+
})
1162+
})

0 commit comments

Comments
 (0)