reference = 'test_it_returns_detail_directly_if_not_supplier_currencies'; $constant->detail = (object) ['foo' => 'bar']; // A C T $result = $service->execute($constant); // A S S E R T $this->assertEquals($constant->detail, $result); } /** * Test it returns CurrencyResource if reference is SUPPLIER_CURRENCIES. * * @return void */ public function test_it_returns_currency_resource_if_reference_is_supplier_currencies() { // A R R A N G E $currencyId = 123; $mockCurrency = new Currency(); $mockCurrency->id = $currencyId; $mockCurrency->name = 'test_it_returns_currency_resource_if_reference_is_supplier_currencies'; $mockFetchesCurrency = Mockery::mock(FetchesCurrency::class); $mockFetchesCurrency->shouldReceive('execute') ->with(['id' => $currencyId]) ->once() ->andReturn($mockCurrency); $service = new ConvertsConstantDetailsToResource($mockFetchesCurrency); $constant = new SegmentConstant(); $constant->reference = SegmentConstants::SUPPLIER_CURRENCIES; $constant->detail = (object) ['id' => $currencyId]; // A C T $result = $service->execute($constant); // A S S E R T $this->assertInstanceOf(CurrencyResource::class, $result); $this->assertEquals($currencyId, $result->id); } /** * Test it returns empty string if SUPPLIER_CURRENCIES but no id in detail. * * @return void */ public function test_it_returns_empty_if_no_id_in_supplier_currencies() { // A R R A N G E $mockFetchesCurrency = Mockery::mock(FetchesCurrency::class); $service = new ConvertsConstantDetailsToResource($mockFetchesCurrency); $constant = new SegmentConstant(); $constant->reference = SegmentConstants::SUPPLIER_CURRENCIES; $constant->detail = (object) ['some' => 'other']; // A C T $result = $service->execute($constant); // A S S E R T $this->assertEquals('', $result); } protected function tearDown(): void { Mockery::close(); parent::tearDown(); } }