Класс сервиса:
Код: Выделить всё
@Override
public List issReport(Transaction transaction, List ids) {
String query = """
MY QUERY
""";
List result = new ArrayList();
for (String id : ids) {
try (Result res = transaction.execute(query, Map.of("id", id))) {
while (res.hasNext()) {
Map row = res.next();
result.add(new MyDtos(
(String) row.get("firstEntityId"),
(String) row.get("secondEntityId"),
(String) row.get("thirdEntityId")
));
}
} catch (Exception e) {
throw new RuntimeException("Failed: " + id, e);
}
}
return result;
}
Код: Выделить всё
@Test
@Order(3)
void testIssReport() {
try (Transaction tx = graphDb.beginTx()) {
List ids = new ArrayList(neo4JCachedData.getCachedReleaseNodes().keySet());
List issueReports = repository.issReport(tx, ids);
Assertions.assertFalse(issueReports.isEmpty(), "Should not be empty for valid releases.");
Assertions.assertEquals(3, issueReports.size(), "Expected exactly 3 issue reports.");
MyDtos firstReport = issueReports.get(0);
Assertions.assertEquals(ids.get(0), firstReport.getFirstEntityId());
Assertions.assertNotNull(firstReport.getSecondEntityId());
Assertions.assertNotNull(firstReport.getThirdEntityId());
}
}
[*]Метод initDatabase() заполняет тестовый граф, и узлы/связи существуют ( проверяется с помощью запроса MATCH (n) RETURN COUNT(n).
[*]Вне тестов (например, в классе обслуживания) метод issReport возвращает правильные ожидаемые результаты.
[*]В test данные загружаются посредством транзакций, а тесты выполняются в правильном порядке с использованием аннотации @Order.
[*]Кэш neo4JCachedData содержит все идентификаторы, и я проверил их выходные данные. >
Подробнее здесь: https://stackoverflow.com/questions/793 ... -correctly