assertFalse( $source->allowsStaleLoad() ); } public function testLoad() { $source = new FileSource( __DIR__ . '/fixtures/settings.json' ); $settings = $source->load(); $this->assertSame( [ 'config' => [ 'MySetting' => 'BlaBla' ] ], $source->load() ); } public function testLoadFormat() { $source = new FileSource( __DIR__ . '/fixtures/settings.json', new JsonFormat() ); $settings = $source->load(); $this->assertSame( [ 'config' => [ 'MySetting' => 'BlaBla' ] ], $source->load() ); } public function testLoadBadFormat() { $source = new FileSource( __DIR__ . '/fixtures/bad.txt', new JsonFormat() ); $this->expectException( SettingsBuilderException::class ); $settings = $source->load(); } public function testLoadDirectory() { $source = new FileSource( __DIR__ . '/fixtures/dir.json' ); $this->expectException( SettingsBuilderException::class ); $settings = $source->load(); } public function testLoadNoSuitableFormats() { $source = new FileSource( __DIR__ . '/fixtures/settings.toml', new JsonFormat() ); $this->expectException( SettingsBuilderException::class ); $settings = $source->load(); } public function testGetHashKey() { $source = new FileSource( __DIR__ . '/fixtures/settings.json' ); // We can't reliably mock the filesystem stat so simply ensure the // method returns and is non-zero in length $this->assertNotEmpty( $source->getHashKey() ); } }