refactor: move biz rule to model
revamp 'pending' spec