/**
  * Run test for proxy methods
  */
 public function testProxyCall()
 {
     /** @var SearchCriteria|\PHPUnit_Framework_MockObject_MockObject $searchCriteriaMock */
     $searchCriteriaMock = $this->getMockBuilder(SearchCriteria::class)->getMockForAbstractClass();
     /** @var PaymentTokenSearchResultsInterface|\PHPUnit_Framework_MockObject_MockObject $searchResultMock */
     $searchResultMock = $this->getMockBuilder(PaymentTokenSearchResultsInterface::class)->getMockForAbstractClass();
     /** @var PaymentTokenInterface|\PHPUnit_Framework_MockObject_MockObject $tokenMock */
     $tokenMock = $this->getMockBuilder(PaymentTokenInterface::class)->getMockForAbstractClass();
     /** @var PaymentTokenRepositoryInterface|\PHPUnit_Framework_MockObject_MockObject $proxyCallsMock */
     $proxyCallsMock = $this->getMockBuilder(PaymentTokenRepositoryInterface::class)->getMockForAbstractClass();
     $this->configMock->expects(self::once())->method('getValue')->with(VaultProvidersMap::VALUE_CODE)->willReturn('code');
     $this->objectManagerMock->expects(self::once())->method('get')->with(get_class($proxyCallsMock))->willReturn($proxyCallsMock);
     $proxy = new PaymentTokenRepositoryProxy($this->defaultRepository, $this->configMock, $this->objectManagerMock, ['code' => get_class($proxyCallsMock)]);
     $proxyCallsMock->expects(self::once())->method('delete')->with($tokenMock)->willReturn(self::DELETE_RESULT);
     $proxyCallsMock->expects(self::once())->method('getById')->with(1)->willReturn($tokenMock);
     $proxyCallsMock->expects(self::once())->method('getList')->with($searchCriteriaMock)->willReturn($searchResultMock);
     $proxyCallsMock->expects(self::once())->method('save')->with($tokenMock)->willReturn(self::SAVE_RESULT);
     self::assertEquals(self::DELETE_RESULT, $proxy->delete($tokenMock));
     self::assertEquals($tokenMock, $proxy->getById(1));
     self::assertEquals($searchResultMock, $proxy->getList($searchCriteriaMock));
     self::assertEquals(self::SAVE_RESULT, $proxy->save($tokenMock));
 }
 /**
  * @expectedException \LogicException
  * @expectedExceptionMessageRegExp You must implement this operation\. \([^:]+::save\)
  */
 public function testNullRepositoryExceptionSave()
 {
     /** @var PaymentTokenFactory|\PHPUnit_Framework_MockObject_MockObject $tokenFactoryMock */
     $tokenFactoryMock = $this->getMockBuilder(PaymentTokenFactory::class)->disableOriginalConstructor()->getMockForAbstractClass();
     /** @var PaymentTokenSearchResultsInterfaceFactory
      * |\PHPUnit_Framework_MockObject_MockObject $searchResultFactoryMock */
     $searchResultFactoryMock = $this->getMockBuilder(PaymentTokenSearchResultsInterfaceFactory::class)->disableOriginalConstructor()->getMockForAbstractClass();
     /** @var PaymentTokenInterface|\PHPUnit_Framework_MockObject_MockObject $tokenMock */
     $tokenMock = $this->getMockBuilder(PaymentTokenInterface::class)->getMockForAbstractClass();
     $proxy = new PaymentTokenRepositoryProxy(new \Magento\Vault\Model\PaymentTokenNullRepository($tokenFactoryMock, $searchResultFactoryMock), $this->vaultPaymentMock, $this->configMock, $this->objectManagerMock, []);
     $proxy->save($tokenMock);
 }