renderer = new FeesRenderer(); when('wc_help_tip')->returnArg(); when('wc_price')->returnArg(); } public function testRender() { $wcOrder = Mockery::mock(WC_Order::class); $wcOrder->expects('get_meta') ->with(PayPalGateway::FEES_META_KEY) ->andReturn([ 'gross_amount' => [ 'currency_code' => 'USD', 'value' => '10.42', ], 'paypal_fee' => [ 'currency_code' => 'USD', 'value' => '0.41', ], 'net_amount' => [ 'currency_code' => 'USD', 'value' => '10.01', ], ]); $result = $this->renderer->render($wcOrder); $this->assertStringContainsString('Fee', $result); $this->assertStringContainsString('0.41', $result); $this->assertStringContainsString('Payout', $result); $this->assertStringContainsString('10.01', $result); } public function testRenderWithoutNet() { $wcOrder = Mockery::mock(WC_Order::class); $wcOrder->expects('get_meta') ->with(PayPalGateway::FEES_META_KEY) ->andReturn([ 'paypal_fee' => [ 'currency_code' => 'USD', 'value' => '0.41', ], ]); $result = $this->renderer->render($wcOrder); $this->assertStringContainsString('Fee', $result); $this->assertStringContainsString('0.41', $result); $this->assertStringNotContainsString('Payout', $result); } /** * @dataProvider noFeesDataProvider */ public function testNoFees($meta) { $wcOrder = Mockery::mock(WC_Order::class); $wcOrder->expects('get_meta') ->with(PayPalGateway::FEES_META_KEY) ->andReturn($meta); $this->assertSame('', $this->renderer->render($wcOrder)); } function noFeesDataProvider(): array { return [ ['hello'], [[]], [['paypal_fee' => 'hello']], ]; } }