/** * @dataProvider dataProviderTestMergeResponses * * Test the merging of multiple responses * @param $statusCode1 * @param $statusCode2 * @param $succeeded */ public function testMultipleMergeResponses($shipped1, $statusCode1, $shipped2, $statusCode2, $succeeded) { // Tests that app responses are merged correctly // Setup some data arrays $data1 = array('users' => array('tom' => array('key' => 'value'), 'frank' => array('key' => 'value'))); $data2 = array('users' => array('tom' => array('key' => 'newvalue'), 'jan' => array('key' => 'value'))); // Two shipped success results $result = OC_API::mergeResponses(array($this->buildResponse($shipped1, $data1, $statusCode1, "message1"), $this->buildResponse($shipped2, $data2, $statusCode2, "message2"))); $this->checkResult($result, $succeeded); $resultData = $result->getData(); $resultMeta = $result->getMeta(); $resultStatusCode = $result->getStatusCode(); $this->assertArrayHasKey('jan', $resultData['users']); // check if the returned status message matches the selected status code if ($resultStatusCode === 997) { $this->assertEquals('message1', $resultMeta['message']); } elseif ($resultStatusCode === 998) { $this->assertEquals('message2', $resultMeta['message']); } elseif ($resultStatusCode === 100) { $this->assertEquals(null, $resultMeta['message']); } }