/**
  * @BeforeScenario
  */
 public function prepare()
 {
     $this->members = new InMemoryMembers();
     $this->membersHelper = new MembersHelper();
     $this->useCase = new TransferFunds($this->members);
     $this->useCase->attach($this->membersHelper);
 }
 /**
  * @param TransferFunds $useCase
  * @param EwalletExtension $formatter
  */
 public function __construct(TransferFunds $useCase, MemberFormatter $formatter)
 {
     parent::__construct();
     $this->formatter = $formatter;
     $this->useCase = $useCase;
     $this->useCase->attach($this);
 }
 /** @test */
 function it_should_transfer_funds_between_members()
 {
     Fixtures::load(__DIR__ . '/../../../_data/fixtures/members.yml', $this->entityManager);
     /** @var Members $members */
     $members = $this->entityManager->getRepository(Member::class);
     $notifier = Mockery::mock(TransferFundsNotifier::class)->shouldIgnoreMissing();
     $transferBalance = new TransferFunds($members);
     $transferBalance->attach($notifier);
     $transferBalance->transfer($request = TransferFundsRequest::from(['fromMemberId' => 'XYZ', 'toMemberId' => 'ABC', 'amount' => 3]));
     $fromMember = $members->with($request->fromMemberId());
     $this->assertBalanceAmounts(700, $fromMember);
     $toMember = $members->with($request->toMemberId());
     $this->assertBalanceAmounts(1300, $toMember);
 }
 /**
  * @param TransferFundsWebResponder $responder
  * @param TransferFunds $transferFunds
  */
 public function __construct(TransferFundsWebResponder $responder, TransferFunds $transferFunds = null)
 {
     $this->responder = $responder;
     $this->useCase = $transferFunds;
     $transferFunds && $this->useCase->attach($this);
 }