/** * */ public function test() { $jsonDataList = \UserProvider::getJsonData(); $rawUserInfoList = []; foreach ($jsonDataList as $json) { $arr = json_decode($json, true); $this->assertTrue(is_array($arr)); $rawUserInfoList[] = $arr; } $docFactory = new DocumentFactory(self::$documentPrototype); foreach ($rawUserInfoList as $rawUserInfo) { $payload = $docFactory->buildPayload($rawUserInfo); $this->assertArrayNotHasKey('name', $payload, print_r($payload, true)); $this->assertArrayNotHasKey('email', $payload, print_r($payload, true)); $this->assertArrayNotHasKey('track_ref', $payload, print_r($payload, true)); $this->assertArrayNotHasKey('loginip', $payload, print_r($payload, true)); $this->assertArrayHasKey('country', $payload, print_r($payload, true)); foreach ($payload as $field => $value) { if ($field === 'status') { $this->assertTrue(is_int($value) && $value >= 0); continue; } $this->assertNotEmpty($value, sprintf('field [%s] should not be empty', $field)); } $document = $docFactory->buildDocument($payload['snsid'], $payload); $this->assertEquals($payload, $document->getData()); $document2 = $docFactory->make($payload['snsid'], $rawUserInfo); $this->assertEquals($payload, $document2->getData()); } }
/** * @param array $userInfoList * * @return Generator */ protected function documentsGenerator(array $userInfoList) { while ($batch = array_splice($userInfoList, 0, $this->magicNumber)) { $documents = array_map(function (array $userInfo) { return $this->documentFactory->make($userInfo['snsid'], $userInfo); }, $batch); (yield $documents); } }