1<?php 2/** 3 * Test the "time based" synchronization handler. 4 * 5 * PHP version 5 6 * 7 * @category Kolab 8 * @package Kolab_Storage 9 * @subpackage UnitTests 10 * @author Gunnar Wrobel <wrobel@pardus.de> 11 * @license http://www.horde.org/licenses/lgpl21 LGPL 2.1 12 */ 13 14/** 15 * Test the "time based" synchronization handler. 16 * 17 * Copyright 2011-2017 Horde LLC (http://www.horde.org/) 18 * 19 * See the enclosed file COPYING for license information (LGPL). If you 20 * did not receive this file, see http://www.horde.org/licenses/lgpl21. 21 * 22 * @category Kolab 23 * @package Kolab_Storage 24 * @subpackage UnitTests 25 * @author Gunnar Wrobel <wrobel@pardus.de> 26 * @license http://www.horde.org/licenses/lgpl21 LGPL 2.1 27 */ 28class Horde_Kolab_Storage_Unit_Synchronization_TimeBasedTest 29extends PHPUnit_Framework_TestCase 30{ 31 public function testSynchronizeListReturn() 32 { 33 $synchronization = new Horde_Kolab_Storage_Synchronization_TimeBased(); 34 $list = $this->getMock( 35 'Horde_Kolab_Storage_List_Tools', array(), array(), '', false, false 36 ); 37 $list->expects($this->once()) 38 ->method('getListSynchronization') 39 ->will($this->returnValue($this->getMock('Horde_Kolab_Storage_List_Synchronization'))); 40 $this->assertNull($synchronization->synchronizeList($list)); 41 } 42 43 public function testListSynchronization() 44 { 45 $synchronization = new Horde_Kolab_Storage_Synchronization_TimeBased(); 46 $list = $this->getMock( 47 'Horde_Kolab_Storage_List_Tools', array(), array(), '', false, false 48 ); 49 $list->expects($this->once()) 50 ->method('getListSynchronization') 51 ->will($this->returnValue($this->getMock('Horde_Kolab_Storage_List_Synchronization'))); 52 $synchronization->synchronizeList($list); 53 } 54 55 public function testListSynchronizationInSession() 56 { 57 $synchronization = new Horde_Kolab_Storage_Synchronization_TimeBased(); 58 $list = $this->getMock( 59 'Horde_Kolab_Storage_List_Tools', array(), array(), '', false, false 60 ); 61 $list->expects($this->once()) 62 ->method('getId') 63 ->will($this->returnValue('test')); 64 $list->expects($this->once()) 65 ->method('getListSynchronization') 66 ->will($this->returnValue($this->getMock('Horde_Kolab_Storage_List_Synchronization'))); 67 $synchronization->synchronizeList($list); 68 $this->assertTrue($_SESSION['kolab_storage']['synchronization']['list']['test']); 69 } 70 71 public function testDuplicateListSynchronization() 72 { 73 $synchronization = new Horde_Kolab_Storage_Synchronization_TimeBased(); 74 $list = $this->getMock( 75 'Horde_Kolab_Storage_List_Tools', array(), array(), '', false, false 76 ); 77 $list->expects($this->once()) 78 ->method('getListSynchronization') 79 ->will($this->returnValue($this->getMock('Horde_Kolab_Storage_List_Synchronization'))); 80 $synchronization->synchronizeList($list); 81 $synchronization->synchronizeList($list); 82 } 83 84 public function testSynchronizeDataReturn() 85 { 86 $synchronization = new Horde_Kolab_Storage_Synchronization_TimeBased(); 87 $data = $this->getMock( 88 'Horde_Kolab_Storage_Data_Base', array(), array(), '', false, false 89 ); 90 $this->assertNull($synchronization->synchronizeData($data)); 91 } 92 93 public function testDataSynchronization() 94 { 95 $synchronization = new Horde_Kolab_Storage_Synchronization_TimeBased(); 96 $data = $this->getMock( 97 'Horde_Kolab_Storage_Data_Base', array(), array(), '', false, false 98 ); 99 $data->expects($this->once()) 100 ->method('synchronize'); 101 $synchronization->synchronizeData($data); 102 } 103 104 public function testDataSynchronizationInSession() 105 { 106 $synchronization = new Horde_Kolab_Storage_Synchronization_TimeBased(); 107 $data = $this->getMock( 108 'Horde_Kolab_Storage_Data_Base', array(), array(), '', false, false 109 ); 110 $data->expects($this->once()) 111 ->method('getId') 112 ->will($this->returnValue('test')); 113 $synchronization->synchronizeData($data); 114 $this->assertTrue(isset($_SESSION['kolab_storage']['synchronization']['data']['test'])); 115 } 116 117 public function testDuplicateDataSynchronization() 118 { 119 $synchronization = new Horde_Kolab_Storage_Synchronization_TimeBased(); 120 $data = $this->getMock( 121 'Horde_Kolab_Storage_Data_Base', array(), array(), '', false, false 122 ); 123 $data->expects($this->once()) 124 ->method('synchronize'); 125 $synchronization->synchronizeData($data); 126 $synchronization->synchronizeData($data); 127 } 128 129 public function testDuplicateDataSynchronizationAfterSyncTimeElapsed() 130 { 131 $this->markTestSkipped('Test with embedded "sleep()". Only useful for the development phase.'); 132 $synchronization = new Horde_Kolab_Storage_Synchronization_TimeBased(1, 0); 133 $data = $this->getMock( 134 'Horde_Kolab_Storage_Data_Base', array(), array(), '', false, false 135 ); 136 $data->expects($this->exactly(2)) 137 ->method('synchronize'); 138 $synchronization->synchronizeData($data); 139 sleep(2); 140 $synchronization->synchronizeData($data); 141 } 142 143} 144