GG-380 Add test for multitable types missing table.#346
GG-380 Add test for multitable types missing table.#346
Conversation
|
Prøvde å få feilen i graphitron-example ved å fjerne tabell fra
Dette er antageligvis på grunn av at Jeg syns vi burde flyttet dette til |
da0d7f7 to
df5f70e
Compare
Prøvde å rydde opp i dette nå, og tilpasset slik at dette bare blir sjekket det ene stedet siden jeg fant at dette ble allerede validert andre steder (men det ser ikke ut til å plukke opp alt?) |
| * @return Get the implementations for an interface given its name | ||
| */ | ||
| public Set<ObjectDefinition> getImplementationsForInterface(String interfaceName) { | ||
| public List<ObjectDefinition> getImplementationsForInterface(String interfaceName) { |
There was a problem hiding this comment.
Hvorfor har du endra fra Set til List?
There was a problem hiding this comment.
Set var ikke brukt til noe konkret og rekkefølge var påkrevd flere steder uannsett. Her trengte jeg vel rekkefølge på noe og innså at Set ble uannsett konvertert til ordnede strukturer og tenkte at det er like greit at den er liste fra start
| @@ -399,19 +398,11 @@ public Set<ObjectDefinition> getTypesFromInterfaceOrUnion(String name) { | |||
| return null; | |||
| } | |||
There was a problem hiding this comment.
| public Optional<List<ObjectDefinition>> getTypesFromInterfaceOrUnion(String name) { | |
| if (isUnion(name)) { | |
| return Optional.of(getUnionSubTypes(isConnectionObject(name) ? getConnectionObject(name).getNodeType() : name)); | |
| } | |
| if (isInterface(name)) { | |
| return Optional.of(getImplementationsForInterface(isConnectionObject(name) ? getConnectionObject(name).getNodeType() : name)); | |
| } | |
| return Optional.empty(); | |
| } |
hvis du først skal begynne å fikse her 🤷🏻
There was a problem hiding this comment.
Tok det med, men opplever at det bare ble litt ekstra støy andre steder
| public enum ErrorMessages { | ||
| MISSING_FIELD("Input type %s referencing table %s does not map all fields required by the database. Missing required fields: %s"), | ||
| MISSING_NON_NULLABLE("Input type %s referencing table %s does not map all fields required by the database as non-nullable. Nullable required fields: %s"), | ||
| MISSING_TABLE_ON_MULTITABLE("Type(s) '%s' are used in a query '%s.%s' returning multitable interface or union '%s', but do not have tables set. This is not supported."); | ||
|
|
||
| private final String msg; | ||
|
|
||
| ErrorMessages(String msg) { | ||
| this.msg = msg; | ||
| } | ||
|
|
||
| public String getMsg() { | ||
| return msg; | ||
| } |
There was a problem hiding this comment.
Jeg er litt usikker på om jeg er så fan av dette. Det gjør det mye vanskeligere å lese testene vi har på validering
There was a problem hiding this comment.
Gjør om testene tilbake
| .filter(it -> !it.getTypeName().equals(NODE_TYPE.getName())) | ||
| .forEach((field) -> { | ||
| var multitableName = field.getTypeName(); | ||
| if (multitableName.equalsIgnoreCase(NODE_TYPE.getName()) || multitableName.equalsIgnoreCase(ERROR_TYPE.getName())) { |
There was a problem hiding this comment.
| if (multitableName.equalsIgnoreCase(NODE_TYPE.getName()) || multitableName.equalsIgnoreCase(ERROR_TYPE.getName())) { | |
| if (multitableName.equalsIgnoreCase(ERROR_TYPE.getName())) { |
Node blir vel filtrert ut over
| if (implementation.getTable() != null && !tableHasPrimaryKey(implementation.getTable().getName())) { | ||
| addErrorMessage("Interface '%s' is returned in field '%s', but implementing type '%s' " + | ||
| "has table '%s' which does not have a primary key. This is not supported.", name, field.getName(), implementation.getName(), implementation.getTable().getName()); |
There was a problem hiding this comment.
Hvorfor endra du på det her? Det er to forskjellige feil
| .map(AbstractObjectDefinition::getName) | ||
| .collect(Collectors.joining("', '")); | ||
| if (!typesMissingTable.isEmpty()) { | ||
| addErrorMessage(MISSING_TABLE_ON_MULTITABLE.getMsg(), typesMissingTable, field.getContainerTypeName(), field.getName(), field.getTypeName()); |
There was a problem hiding this comment.
| addErrorMessage(MISSING_TABLE_ON_MULTITABLE.getMsg(), typesMissingTable, field.getContainerTypeName(), field.getName(), field.getTypeName()); | |
| addErrorMessage(MISSING_TABLE_ON_MULTITABLE.getMsg(), typesMissingTable, field.formatPath(), field.getTypeName()); |
| public enum ErrorMessages { | ||
| MISSING_FIELD("Input type %s referencing table %s does not map all fields required by the database. Missing required fields: %s"), | ||
| MISSING_NON_NULLABLE("Input type %s referencing table %s does not map all fields required by the database as non-nullable. Nullable required fields: %s"), | ||
| MISSING_TABLE_ON_MULTITABLE("Type(s) '%s' are used in a query '%s.%s' returning multitable interface or union '%s', but do not have tables set. This is not supported."); |
There was a problem hiding this comment.
| MISSING_TABLE_ON_MULTITABLE("Type(s) '%s' are used in a query '%s.%s' returning multitable interface or union '%s', but do not have tables set. This is not supported."); | |
| MISSING_TABLE_ON_MULTITABLE("Type(s) '%s' are used in a query '%s' returning multitable interface or union '%s', but do not have tables set. This is not supported."); |
| void implementationWithoutTable() { | ||
| assertErrorsContain( | ||
| () -> getProcessedSchema("implementationWithoutTable"), | ||
| String.format(MISSING_TABLE_ON_MULTITABLE.getMsg(), "Customer", "Query", "someInterface", "SomeInterface") |
There was a problem hiding this comment.
Jeg tror jeg syns dette blir litt vel uleselig 🤔
Also made the check throw all errors for one union/interface at once, rather than one by one.