diff --git a/docs/GO_STANDARD.md b/docs/GO_STANDARD.md index 20bc70b..c7c1e51 100644 --- a/docs/GO_STANDARD.md +++ b/docs/GO_STANDARD.md @@ -217,6 +217,12 @@ SQL держи рядом с методом, которому он нужен. - SQL-шаблоны пиши в многострочном raw string с отступами и переносами по смысловым частям; не записывай запрос одной длинной строкой. +- Вызов `Query`, `QueryRow` или `Exec` оформляй многострочно: сначала `ctx`, + затем SQL, затем каждый аргумент запроса на отдельной строке и закрывающая + скобка. +- В `SELECT` перечисляй поля вертикально; `FROM`, `JOIN`, `WHERE`, `ORDER BY`, + `GROUP BY`, `ON CONFLICT` и `RETURNING` начинай с отдельных строк. Не + склеивай несколько SQL-клауз в одну строку. - Запросы должны быть читаемыми: явные поля вместо `SELECT *`, параметры вместо конкатенации. - Все `Query`-результаты закрывай; ошибки итерации проверяй. @@ -235,6 +241,11 @@ SQL держи рядом с методом, которому он нужен. тест не должен поднимать PostgreSQL, если это не проверка SQL или транзакции. - SQL, ограничения и атомарность проверяй интеграционным тестом с отдельной тестовой базой через `TEST_DATABASE_URL`. +- Не пиши SQL-запросы в тестовом сценарии и не обращайся к базе напрямую через + `Query`, `QueryRow` или `Exec`. Подготовку данных и проверки выполняй через + реальные публичные методы тестируемого сервиса или repository. Схему можно + подготовить миграциями инфраструктурного слоя, но тест не должен подменять + ими методы приложения или проверять результат прямым SQL-запросом. - Для endpoint-ов проверяй только транспортный mapping и доступ; полный бизнес-сценарий принадлежит тестам сервиса. - Имена тестов описывают поведение: `TestCreateRejectsFinishedGame`.