обновки

pull/2/head^2
Andrey Ivanov 2020-06-10 14:32:21 +03:00 committed by Andrey Ivanov
parent e370d8acba
commit 6468eb6c1c
2 changed files with 15 additions and 14 deletions

View File

@ -15,7 +15,7 @@ const (
func TestPipeline(t *testing.T) { func TestPipeline(t *testing.T) {
// Stage generator // Stage generator
g := func(name string, f func(v I) I) Stage { g := func(name string, f func(v interface{}) interface{}) Stage {
return func(in In) Out { return func(in In) Out {
out := make(Bi) out := make(Bi)
go func() { go func() {
@ -30,10 +30,10 @@ func TestPipeline(t *testing.T) {
} }
stages := []Stage{ stages := []Stage{
g("Dummy", func(v I) I { return v }), g("Dummy", func(v interface{}) interface{} { return v }),
g("Multiplier (* 2)", func(v I) I { return v.(int) * 2 }), g("Multiplier (* 2)", func(v interface{}) interface{} { return v.(int) * 2 }),
g("Adder (+ 100)", func(v I) I { return v.(int) + 100 }), g("Adder (+ 100)", func(v interface{}) interface{} { return v.(int) + 100 }),
g("Stringifier", func(v I) I { return strconv.Itoa(v.(int)) }), g("Stringifier", func(v interface{}) interface{} { return strconv.Itoa(v.(int)) }),
} }
t.Run("simple case", func(t *testing.T) { t.Run("simple case", func(t *testing.T) {

View File

@ -29,21 +29,22 @@ HTTP API, например, после запуска должно быть до
### 2) Интеграционное тестирование ### 2) Интеграционное тестирование
Необходимо: Необходимо:
* создать отдельный пакет для интеграционных тестов; * создать отдельный пакет для интеграционных тестов.
* описать бизнес-сценарии на языке Gherkin в *.feature файлах; * реализовать интеграционные тесты на языке Go; при желании можно использовать
* реализовать все шаги сценариев с использованием библиотеки https://github.com/cucumber/godog: [godog](https://github.com/cucumber/godog) / [ginkgo](https://github.com/onsi/ginkgo), но
при этом шаги могут рассчитывать на то, что запущены в docker-compose и знают endpoint'ы всех обязательным требованием это **не является**.
сервисов; сценарии работают с HTTP/GRPC API календаря, при необходимости с БД и очередью сообщений;
* создать docker-compose файл, поднимающий все сервисы проекта + контейнер с интеграционными тестами; * создать docker-compose файл, поднимающий все сервисы проекта + контейнер с интеграционными тестами;
* расширить Makefile командой `bdd`, `make bdd` будет запускать интеграционные тесты; * расширить Makefile командой `integration-tests`, `make integration-tests` будет запускать интеграционные тесты;
**не стоит смешивать это с `make test`, иначе CI-пайплайн не пройдёт.** **не стоит смешивать это с `make test`, иначе CI-пайплайн не пройдёт.**
* прикрепить в Merge Request вывод команды `make integration-tests`.
Преподаватель может запустить интеграционные тесты в `docker-compose` с помощью команды `make bdd`. Преподаватель может запустить интеграционные тесты с помощью команды `make integration-tests`:
В случае успешного выполнения команда должна возвращать 0, иначе 1. - команда должна поднять окружение (`docker-compose`), прогнать тесты и подчистить окружение за собой;
- в случае успешного выполнения команда должна возвращать 0, иначе 1.
### Критерии оценки ### Критерии оценки
- Проект полностью запускается и останавливается с помощью `make up` / `make down` - 3 балла - Проект полностью запускается и останавливается с помощью `make up` / `make down` - 3 балла
- Интеграционные тесты запускаются с помощью `make bdd`. Команда возвращает верный код ответа - 1 балл - Интеграционные тесты запускаются с помощью `make integration-tests`. Команда возвращает верный код ответа - 1 балл
- Интеграционные тесты покрывают бизнес сценарии: - Интеграционные тесты покрывают бизнес сценарии:
- добавление события и обработка бизнес ошибок - 2 балла - добавление события и обработка бизнес ошибок - 2 балла
- получение листинга событий на день/неделю/месяц - 2 балла - получение листинга событий на день/неделю/месяц - 2 балла