/** * @test */ public function withPrefixWithMappers() { $data = ['OUTER_PREFIX_ONE' => 'One', 'OUTER_PREFIX_TWO' => 'Two', 'OUTER_THING' => 'Thing']; $original = new Configuration($data, 'OUTER_'); $original->map('PREFIX_TWO')->using(function ($val) { return strrev(strtoupper($val)); }); $original->map('THING')->using(function ($val) { return strrev(strtoupper($val)); }); self::assertSame('GNIHT', $original->get('THING')); $sut = $original->withPrefix('PREFIX_'); self::assertInstanceOf(Configuration::class, $sut); self::assertSame('One', $sut->get('ONE')); self::assertSame('OWT', $sut->get('TWO')); $this->expectException(InvalidKeyException::class); $this->expectExceptionMessage('No such key "THING" exists in Config.'); $sut->get('THING'); }