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');
 }