# 1C enterprise test tools

Набор инструментов для тестирования (предварительная версия)

## Установка

``` bash
npm install -D e1c-test-tools
```

или

``` bash
yarn add -D e1c-test-tools
```

Дополнительно необходимо установить [jest](https://jestjs.io/)

``` bash
npm install -D jest
```

или

``` bash
yarn add -D jest
```

и в случае с моими примерами [ts-jest](https://www.npmjs.com/package/ts-jest) с указанными зависимостями.

## Настройка

### Переменные окружения `.env`

Основные настройки на данный момент хранятся в `.dev`, пример настроек в [.sample-env](https://raw.githubusercontent.com/cinex-ru/e1c-test-tools/master/.sample-env) (то есть в каталоге проекта создаем файл `.dev` и добавляем после знака равно соответствующие настройки):

- `BROKER_HOST` и `BROKER_PORT` (необязательно) соответственно хост и порт сервиса обмена сообщениями с 1С, по умолчанию `127.0.0.1:3000`
- `PATH_TO_E1C_EXECUTABLE` (требуется) путь к запускаемому файлу 1С предприятие
- `E1C_DB_TYPE` (требуется) тип базы данных 1С предприятия `F`(файловая) или `S`(серверная)
- `E1C_DB_PATH` (требуется) путь к базе данных 1С предприятия, так как это указано в [документации](https://its.1c.ru/db/v8318doc/bookmark/adm/TI000000810) для соответствующего типа БД.
- `E1C_USER` и `E1C_USER` (требуется, если есть авторизация) пользователь и пароль базы 1С предприятия аналогично флагам `/N` и `/P` в [документации](https://its.1c.ru/db/v8318doc/bookmark/adm/TI000000811)
- `PATH_TO_EXTERNAL_BIN_FILE` (необязательно)  путь к файлу внешнего отчета или обработки, который планируется тестировать, на данный момент возможно указать только один файл
- `PATH_TO_MOCKED_EXTERNAL_BIN_FILES` (необязательно) путь к директории, где по-вашему мнению должны располагаться отчеты/обработки подготовленные к тестированию
- `PATH_TO_TESTER_EXTERNAL_BIN_FILE` (необязательно) путь к файлу обработки, которая используется для тестирования. Если не указывать, то используется обработка по умолчанию.

### Настройка jest

``` bash
npx ts-jest config:init 
```

или

``` bash
yarn ts-jest config:init
```

Для js вместо этого нужно выполнить `jest --init`, с использованием `npx` или `yarn` соответственно, или без, если `jest` установлен глобально.
Далее для глобальных сетапа и тирдауна необходимо добавить в `jest.config.js` следующие поля:

```js
    'globalSetup': './node_modules/e1c-test-tools/dist/e1c-test-tools/test-tools/helpers/jest-global-setup.js',
    'globalTeardown': './node_modules/e1c-test-tools/dist/e1c-test-tools/test-tools/helpers/jest-global-teardown.js',
```

Они обеспечивают запуск сервиса брокера и 1С предприятия, а так же подготовку внешних отчетов/обработок для тестирования.

## Использование

[Пример тестов](https://github.com/cinex-ru/e1c-test-tools/blob/master/tests/tester.spec.ts) можно посмотреть в репозитории проекта. Там же можно посмотреть [пример недомока](https://github.com/cinex-ru/e1c-test-tools/blob/master/tests/__e1c-mocks__/TesterEpf.ts), который в дальнейшем планируется генерировать автоматически, для более удобного написания тестов.

Чтобы каждый раз для запуска тестов не ждать, пока запустится окружение, можно воспользоваться скриптом `start-up-test-env`

``` bash
npx start-up-test-env 
```

или

``` bash
yarn start-up-test-env
```

Аналогично запускаются другие скрипты:

- `shut-down-test-env` предназначен для остановки работы 1С предприятия
- `stop-polling` предназначен для остановки цикла опроса сервиса брокера со стороны 1С предприятия

Само выполнение тестов запускается

``` bash
npx jest 
```

или

``` bash
yarn jest
```

## Дополнительно

PS: На ванильном js проект не тестировался, но есть мнение, что все будет хорошо :)
