public static function createFromResponse(\SimpleXMLElement $response) { $event = new Event(); $event->setId((int) $response->id); $event->setTitle((string) $response->title); $artists = array(); foreach ($response->artists->artist as $artist) { $artists[] = (string) $artist; } $event->setArtists($artists); $event->setHeadliner((string) $response->artists->headliner); $venue = Venue::createFromResponse($response->venue); $event->setVenue($venue); $event->setStartDate((string) $response->startDate); $event->setDescription($response->description); $images = array(); foreach ($response->image as $image) { $imageAttributes = $image->attributes(); if (!empty($imageAttributes->size)) { $images[(string) $imageAttributes->size] = (string) $image; } } $event->setImages($images); $event->setAttendance((int) $response->attendance); $event->setReviews((int) $response->reviews); $event->setEventTag((string) $response->tag); $event->setUrl((string) $response->url); $event->setWebsite((string) $response->website); $event->setTickets((int) $response->tickets); $event->setCancelled((int) $response->cancelled); return $event; }
public function testCreateFromResponse() { $mockResponse = $this->createMockResponse('MockVenueResponse'); $venue = Venue::createFromResponse($mockResponse); $this->assertInstanceOf('BinaryThinking\\LastfmBundle\\Lastfm\\Model\\Venue', $venue, 'object created is not an instance of Venue'); $this->assertNotEmpty($venue->getId(), 'empty venue id'); $this->assertNotEmpty($venue->getName(), 'empty venue name'); $this->assertNotEmpty($venue->getLocation(), 'empty venue name'); $geoPoint = $venue->getGeoPoint(); $this->assertNotEmpty($geoPoint, 'empty venue geo point'); $this->assertNotEmpty($geoPoint['lat'], 'empty venue geo point lat'); $this->assertNotEmpty($geoPoint['long'], 'empty venue geo point long'); $this->assertNotEmpty($venue->getUrl(), 'empty venue url'); $this->assertNotEmpty($venue->getWebsite(), 'empty venue website'); $this->assertNotEmpty($venue->getPhoneNumber(), 'empty venue phone number'); $this->assertNotEmpty($venue->getImages(), 'empty venue images'); $this->assertCount(5, $venue->getImages(), 'wrong number of images parsed'); }