Skip to content
Snippets Groups Projects
Commit c9e88ebe authored by Arthur Suzuki's avatar Arthur Suzuki
Browse files

Merge branch 'hotline%2380947_agenda_externe_options' into 'hotline'

Hotline%2380947 agenda externe options

See merge request !3013
parents 8a55bb96 dab06bcb
Branches
Tags
3 merge requests!3297WIP: Master,!3047Hotline,!3013Hotline%2380947 agenda externe options
Pipeline #6391 passed with stage
in 33 minutes and 19 seconds
- ticket #80947 : Agenda externe: ajout d'un option permettant de ne pas mettre à jour les évènements modifiés localement lors de l'import d'un calendrier externe.
\ No newline at end of file
...@@ -376,6 +376,7 @@ class Class_AdminVarLoader extends Storm_Model_Loader { ...@@ -376,6 +376,7 @@ class Class_AdminVarLoader extends Storm_Model_Loader {
'CUSTOM_FIELDS_REPORT' => Class_AdminVar_Meta::newOnOff($this->_('Activation des rapports statistiques sur les champs personnalisés')), 'CUSTOM_FIELDS_REPORT' => Class_AdminVar_Meta::newOnOff($this->_('Activation des rapports statistiques sur les champs personnalisés')),
'WEBSERVICE_TEST' => Class_AdminVar_Meta::newOnOff($this->_('Activation des tests de webservices')), 'WEBSERVICE_TEST' => Class_AdminVar_Meta::newOnOff($this->_('Activation des tests de webservices')),
'IMPORT_AVIS_OPAC2' => Class_AdminVar_Meta::newOnOff($this->_('Activation de l\'import des avis de l\'opac2')), 'IMPORT_AVIS_OPAC2' => Class_AdminVar_Meta::newOnOff($this->_('Activation de l\'import des avis de l\'opac2')),
'AGENDA_KEEP_LOCAL_CONTENT' => Class_AdminVar_Meta::newOnOff($this->_('Agenda externe : conserver les évenements modifiés localement'))
]; ];
} }
......
...@@ -27,7 +27,9 @@ class Class_ExternalAgendaLoader extends Storm_Model_Loader { ...@@ -27,7 +27,9 @@ class Class_ExternalAgendaLoader extends Storm_Model_Loader {
$results = $agenda->import(); $results = $agenda->import();
$logger->log($agenda->getLabel().":\n"); $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 créés : %s\n",count($results['new'])));
$logger->log($agenda->_("Nombre d\'événements mis à jour : %s\n",count($results['update']))); Class_AdminVar::get('AGENDA_KEEP_LOCAL_CONTENT')
? $logger->log($agenda->_("Nombre d\'événements non mis à jour : %s\n",count($results['update'])))
: $logger->log($agenda->_("Nombre d\'événements mis à jour : %s\n",count($results['update'])));
} }
} }
} }
...@@ -62,7 +64,9 @@ class Class_ExternalAgenda extends Storm_Model_Abstract { ...@@ -62,7 +64,9 @@ class Class_ExternalAgenda extends Storm_Model_Abstract {
$events = $service->import($this); $events = $service->import($this);
$results['new'] = $events->select('isNew'); $results['new'] = $events->select('isNew');
$results['update'] = $events->reject('isNew'); $results['update'] = $events->reject('isNew');
$events->eachDo('save'); $results['new']->eachDo('save');
if (!Class_AdminVar::get('AGENDA_KEEP_LOCAL_CONTENT'))
$results['update']->eachDo('save');
return $results; return $results;
} }
......
...@@ -99,6 +99,103 @@ class Class_Batch_ExternalAgendasBatchSimpleTest extends Class_Batch_ExternalAge ...@@ -99,6 +99,103 @@ class Class_Batch_ExternalAgendasBatchSimpleTest extends Class_Batch_ExternalAge
/** @test */ /** @test */
public function logShouldDisplayNumberOfCreatedEvents() { 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 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')));
Class_AdminVar::set("AGENDA_KEEP_LOCAL_CONTENT",1);
$this->_batch = new Class_Batch_ExternalAgenda();
$this->_batch->setLogger($this->getLogger());
}
/** @test */
public function labelShouldBeHarvestExternalAgenda() {
$this->_batch->run();
$this->assertEquals('Moissonner les agendas externes', $this->_batch->getLabel());
}
/** @test */
public function logShouldDisplayNumberOfCreatedEvents() {
$this->_batch->run();
$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->_batch->run();
Class_Article::clearCache();
$this->assertEquals('changement de contenu', Class_Article::find(1)->getContenu());
}
/** @test */
public function withOptionOverwriteLocalContentShouldUpdateArticle() {
Class_AdminVar::set("AGENDA_KEEP_LOCAL_CONTENT",0);
$this->_batch->run();
Class_Article::clearCache();
$this->assertContains("animé par l'école et son quartier Parents/Enfants",Class_Article::find(1)->getContenu());
$this->assertEquals("Extra Agenda:\nNombre d\'événements créés : 3\nNombre d\'événements mis à jour : 1\n",$this->_log);
} }
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment