Продолжить обсуждение из Публикация на Хабре от SilverBulleters и XDrivenDevelopers:
Начнём потихоньку в отдельной треде, чтобы не захламлять тред про публикации:
Первое - для того чтобы понять как тестировать подобное я использую переформатирование задачи в формат BDD. Когда начал писать - сразу стало понятно: что-то не так с постановкой - при поступлении денег от контрагента счет учета наверное 62.02 - авансы полученные, 60.02 - аванс выданные, тогда откуда возникает понятие долг и т.д.
Напишу как будто это покупки и счета учета 62.*
Функционал: Поступление оплаты по существующим договорам и зачёт аванса контрагента
Как <УказатьРольЗапуска> (Разработчик, Администратор, Бухгалтер, ????)
Я Хочу: чтобы чтобы при фиксации оплаты от Контрагента происходило распределение поступившей суммы по договорам, на котором существует долг
И: происходила фиксация оплаты в виде аванса, если долг отсутствует
Контекст: Конфигурация Бухгалтерия 3.0 (Такси)
И: существует "тестовый Контрагент"
И: "тестовый договор Контрагента 1" с датой договора 02.01.2014
И: "тестовый договор Контрагента 2" с датой договора 03.01.2014
И: "Введена учетная политика" <я забыл как влияет учетная политика - там по моему ведение взаиморасчетов по счетам и по договорам>
Это так сказать секция - ПередТестом.
Теперь перейдем к сценариям:
Сценарий: Поступление суммы достаточной только для погашения существующего долга
Допустим: "тестовый Контрагент" имеет 2 покупки по 2-ум "тестовым договорам" на сумму 1000 и 300 рублей
Когда: фиксируется оплата по "тестовому Контрагенту" на сумму 1100 рублей
Тогда: формируется проводка по счету 62.01 по "тестовый договор Контрагента 1" на сумму 1000
И: формируется проводка по счету 62.01 по "тестовый договор Контрагента 2" на сумму 100
И: на счете 62.01 по "тестовый договор Контрагента 2" остается долг в размере 200 рублей
А вот и аванс
Сценарий: Поступление суммы превышающей текущий долг по договорам поставщика
Допустим: "тестовый Контрагент" имеет 2 покупки по 2-ум "тестовым договорам" на сумму 1000 и 300 рублей
Когда: фиксируется оплата по "тестовому Контрагенту" на сумму 2000 рублей
Тогда: формируется проводка по счету 62.01 по "тестовый договор Контрагента 1" на сумму 1000
И: формируется проводка по счету 62.01 по "тестовый договор Контрагента 2" на сумму 300
И: на счете 62.02 формируется проводка зачитывающая аванс в размере 700 рублей
Вот мне интересно - становится в таком случае понятней как написать тесты на такое ?