Crud\Test\TestCase\Listener\ApiListenerTest::testSetupDetectorsIntigration PHP Method

testSetupDetectorsIntigration() public method

testSetupDetectorsIntigration
    public function testSetupDetectorsIntigration()
    {
        $detectors = ['json' => ['ext' => 'json', 'accepts' => 'application/json'], 'xml' => ['ext' => 'xml', 'accepts' => 'text/xml']];
        $listener = $this->getMockBuilder('\\Crud\\Listener\\ApiListener')->setMethods(['_request', 'config'])->disableOriginalConstructor()->getMock();
        $request = $this->getMockBuilder('\\Cake\\Network\\Request')->setMethods(['accepts'])->disableOriginalConstructor()->getMock();
        $i = 0;
        $listener->expects($this->at($i++))->method('_request')->will($this->returnValue($request));
        $listener->expects($this->at($i++))->method('config')->with('detectors')->will($this->returnValue($detectors));
        $listener->setupDetectors();
        // Test with "ext"
        foreach ($detectors as $name => $configuration) {
            $request->params['_ext'] = $configuration['ext'];
            $request->clearDetectorCache();
            $this->assertTrue($request->is($name));
        }
        $request->params['_ext'] = null;
        $request->clearDetectorCache();
        // Test with "accepts"
        $r = 0;
        foreach ($detectors as $name => $configuration) {
            $request->expects($this->at($r++))->method('accepts')->with($configuration['accepts'])->will($this->returnValue(true));
        }
        foreach ($detectors as $name => $config) {
            $request->clearDetectorCache();
            $this->assertTrue($request->is($name));
        }
        $request->params['_ext'] = 'xml';
        $request->clearDetectorCache();
        $this->assertTrue($request->is('api'), "A request with xml extensions should be considered an api request");
        $request->params['_ext'] = null;
        $request->clearDetectorCache();
        $this->assertFalse($request->is('api'), "A request with no extensions should not be considered an api request");
    }