diff --git a/VERSIONS_HOTLINE/80947 b/VERSIONS_HOTLINE/80947 new file mode 100644 index 0000000000000000000000000000000000000000..af6ddbbe33bb66fee8a146abf25da1cc123511af --- /dev/null +++ b/VERSIONS_HOTLINE/80947 @@ -0,0 +1 @@ + - ticket #80947 : Agenda externe : ne met pas à jour les articles déjà présent dans la base. \ No newline at end of file diff --git a/library/Class/ExternalAgenda.php b/library/Class/ExternalAgenda.php index ada348c13beea5ca555dee3b77937e297cc2cefb..351137d00d47aaadca2853e955904c430c082d91 100644 --- a/library/Class/ExternalAgenda.php +++ b/library/Class/ExternalAgenda.php @@ -27,7 +27,7 @@ class Class_ExternalAgendaLoader extends Storm_Model_Loader { $results = $agenda->import(); $logger->log($agenda->getLabel().":\n"); $logger->log($agenda->_("Nombre d\'événements créés : %s\n",count($results['new']))); - $logger->log($agenda->_("Nombre d\'événements mis à jour : %s\n",count($results['update']))); + $logger->log($agenda->_("Nombre d\'événements non mis à jour : %s\n",count($results['update']))); } } } @@ -62,7 +62,7 @@ class Class_ExternalAgenda extends Storm_Model_Abstract { $events = $service->import($this); $results['new'] = $events->select('isNew'); $results['update'] = $events->reject('isNew'); - $events->eachDo('save'); + $results['new']->eachDo('save'); return $results; } diff --git a/tests/scenarios/ExternalAgendas/ExternalAgendasBatchTest.php b/tests/scenarios/ExternalAgendas/ExternalAgendasBatchTest.php index 0bf5fd171e1a76e42500c3a3ddfb6470ce40f450..7b8fa45ed66bd14a52bf72167f2466cadf27cced 100644 --- a/tests/scenarios/ExternalAgendas/ExternalAgendasBatchTest.php +++ b/tests/scenarios/ExternalAgendas/ExternalAgendasBatchTest.php @@ -98,7 +98,89 @@ class Class_Batch_ExternalAgendasBatchSimpleTest extends Class_Batch_ExternalAge /** @test */ public function logShouldDisplayNumberOfCreatedEvents() { - $this->assertEquals("Extra Agenda:\nNombre d\'événements créés : 4\nNombre d\'événements mis à jour : 0\n",$this->_log); + $this->assertEquals("Extra Agenda:\nNombre d\'événements créés : 4\nNombre d\'événements non mis à jour : 0\n",$this->_log); + } +} + + + + +class Class_Batch_ExternalAgendasBatchRewriteTest extends Class_Batch_ExternalAgendasBatchTestCase { + protected $_batch; + + public function setUp() { + parent::setUp(); + + + $this->valleiry = $this->fixture('Class_Bib', + ['id' => 1, + 'libelle' => 'Valleiry']); + + $events_category = $this->fixture('Class_ArticleCategorie', + ['id' => 1, + 'libelle' => 'Events', + 'bib' => $this->valleiry]); + + $this->fixture('Class_Article', + ['id' => 1, + 'titre' => 'Jeux coopératifs', + 'contenu' => 'changement de contenu', + 'events_debut' => "2016-05-25 08:30", + 'events_fin' => "2016-05-25 10:00", + 'indexation' => 1, + 'cacher_titre' => 0, + 'date_maj' => "2018-04-16 09:33:58", + 'date_creation' => "2016-04-16 09:33:58", + 'status' => 1, + 'id_cat' => 3, + 'id_origine' => "68390f0f2752ba7664c05b00d1b51714", + 'repository_origine' => "External_Agenda:34", + 'refus_message' =>"L'article a été refusé." + ]); + + + $this->fixture('Class_ExternalAgenda', + ['id' => 1, + 'label' => 'Personal Agenda', + 'url' => 'http://my.server.com/calendar.ics', + 'autoharvest' => 0, + 'status' => Class_Article::STATUS_VALIDATED, + 'category' => $events_category]); + $this->fixture('Class_ExternalAgenda', + ['id' => 34, + 'label' => 'Extra Agenda', + 'url' => 'http://external.agenda.com/export?type=ics', + 'category' => $events_category, + 'id_lieu' => 0, + 'autoharvest' => 1, + 'status' => Class_Article::STATUS_VALIDATED]); + + Class_WebService_ICalendar::setDefaultHttpClient($this->mock() + ->whenCalled('open_url') + ->with('http://external.agenda.com/export?type=ics') + ->answers(file_get_contents(__DIR__.'/ical-event-second.ics'))); + + $this->_batch = new Class_Batch_ExternalAgenda(); + $this->_batch->setLogger($this->getLogger()); + $this->_batch->run(); + } + + + /** @test */ + public function labelShouldBeHarvestExternalAgenda() { + $this->assertEquals('Moissonner les agendas externes', $this->_batch->getLabel()); + } + + + /** @test */ + public function logShouldDisplayNumberOfCreatedEvents() { + $this->assertEquals("Extra Agenda:\nNombre d\'événements créés : 3\nNombre d\'événements non mis à jour : 1\n",$this->_log); + + } + + /** @test */ + public function articleJeuxCooperatifShouldKeepModifiedContent() { + $this->assertEquals('changement de contenu', Class_Article::find(1)->getContenu()); } }