/**
  * @param Slim $app
  * @param Resolver $resolver
  */
 public function register(Slim $app, Resolver $resolver)
 {
     $app->get('/', function () use($app) {
         $app->redirectTo('transfer_form');
     });
     $app->get('/transfer-form', $resolver->resolve($app, 'ewallet.transfer_form_controller:showForm', function () {
         return [Identifier::fromString('ABC')];
     }))->name('transfer_form');
     $app->post('/transfer-funds', $resolver->resolve($app, 'ewallet.transfer_funds_controller:transfer', function () use($app) {
         /** @var \EwalletModule\Bridges\Zf2\InputFilter\TransferFundsInputFilterRequest $request */
         $request = $app->container->get('ewallet.transfer_filter_request');
         $request->populate($app->request->post());
         return [$request];
     }))->name('transfer_funds');
 }
 /** @test */
 function it_should_allow_extending_a_service_definition_more_than_once()
 {
     $resolver = new Resolver();
     $app = new Slim();
     $app->container->singleton('service', function () {
         return new stdClass();
     });
     $resolver->extend($app, 'service', function (stdClass $service) {
         $service->first = true;
         return $service;
     });
     $resolver->extend($app, 'service', function (stdClass $service) {
         $service->second = true;
         return $service;
     });
     $service = $app->container->get('service');
     $this->assertObjectHasAttribute('first', $service);
     $this->assertTrue($service->first);
     $this->assertObjectHasAttribute('second', $service);
     $this->assertTrue($service->second);
 }