diff options
author | Georg Ehrke <developer@georgehrke.com> | 2019-02-16 16:18:58 +0100 |
---|---|---|
committer | Georg Ehrke <developer@georgehrke.com> | 2019-02-16 16:19:22 +0100 |
commit | 3acde071f306a2b0092eb5c81116c8ded971eaeb (patch) | |
tree | 80f384623a7bfa624adc06956b6000bfed58438f /apps/dav/tests | |
parent | 58520209be38b45438163fe32ef8089ce1bfaa6d (diff) | |
download | nextcloud-server-3acde071f306a2b0092eb5c81116c8ded971eaeb.tar.gz nextcloud-server-3acde071f306a2b0092eb5c81116c8ded971eaeb.zip |
Add Repair step to regenerate birthday calendar
Signed-off-by: Georg Ehrke <developer@georgehrke.com>
Diffstat (limited to 'apps/dav/tests')
3 files changed, 189 insertions, 0 deletions
diff --git a/apps/dav/tests/unit/BackgroundJob/GenerateBirthdayCalendarBackgroundJobTest.php b/apps/dav/tests/unit/BackgroundJob/GenerateBirthdayCalendarBackgroundJobTest.php index 010289a745a..1d672ff22a4 100644 --- a/apps/dav/tests/unit/BackgroundJob/GenerateBirthdayCalendarBackgroundJobTest.php +++ b/apps/dav/tests/unit/BackgroundJob/GenerateBirthdayCalendarBackgroundJobTest.php @@ -62,6 +62,10 @@ class GenerateBirthdayCalendarBackgroundJobTest extends TestCase { ->with('user123', 'dav', 'generateBirthdayCalendar', 'yes') ->will($this->returnValue('yes')); + $this->birthdayService->expects($this->never()) + ->method('resetForUser') + ->with('user123'); + $this->birthdayService->expects($this->once()) ->method('syncUser') ->with('user123'); @@ -69,6 +73,28 @@ class GenerateBirthdayCalendarBackgroundJobTest extends TestCase { $this->backgroundJob->run(['userId' => 'user123']); } + public function testRunAndReset() { + $this->config->expects($this->once()) + ->method('getAppValue') + ->with('dav', 'generateBirthdayCalendar', 'yes') + ->will($this->returnValue('yes')); + + $this->config->expects($this->once()) + ->method('getUserValue') + ->with('user123', 'dav', 'generateBirthdayCalendar', 'yes') + ->will($this->returnValue('yes')); + + $this->birthdayService->expects($this->once()) + ->method('resetForUser') + ->with('user123'); + + $this->birthdayService->expects($this->once()) + ->method('syncUser') + ->with('user123'); + + $this->backgroundJob->run(['userId' => 'user123', 'purgeBeforeGenerating' => true]); + } + public function testRunGloballyDisabled() { $this->config->expects($this->once()) ->method('getAppValue') diff --git a/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php b/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php index 9587640386f..46aa06e8537 100644 --- a/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php +++ b/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php @@ -329,6 +329,32 @@ class BirthdayServiceTest extends TestCase { $this->service->ensureCalendarExists('principal001'); } + public function testResetForUser() { + $this->calDav->expects($this->at(0)) + ->method('getCalendarByUri') + ->with('principals/users/user123', 'contact_birthdays') + ->willReturn(['id' => 42]); + + $this->calDav->expects($this->at(1)) + ->method('getCalendarObjects') + ->with(42, 0) + ->willReturn([['uri' => '1.ics'], ['uri' => '2.ics'], ['uri' => '3.ics']]); + + $this->calDav->expects($this->at(2)) + ->method('deleteCalendarObject') + ->with(42, '1.ics', 0); + + $this->calDav->expects($this->at(3)) + ->method('deleteCalendarObject') + ->with(42, '2.ics', 0); + + $this->calDav->expects($this->at(4)) + ->method('deleteCalendarObject') + ->with(42, '3.ics', 0); + + $this->service->resetForUser('user123'); + } + public function providesBirthday() { return [ [true, diff --git a/apps/dav/tests/unit/Migration/RegenerateBirthdayCalendarsTest.php b/apps/dav/tests/unit/Migration/RegenerateBirthdayCalendarsTest.php new file mode 100644 index 00000000000..05e12bbda6e --- /dev/null +++ b/apps/dav/tests/unit/Migration/RegenerateBirthdayCalendarsTest.php @@ -0,0 +1,137 @@ +<?php +/** + * @copyright Copyright (c) 2018, Georg Ehrke + * + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\DAV\Tests\unit\DAV\Migration; + +use OCA\DAV\BackgroundJob\GenerateBirthdayCalendarBackgroundJob; +use OCA\DAV\Migration\RefreshWebcalJobRegistrar; +use OCA\DAV\Migration\RegenerateBirthdayCalendars; +use OCP\BackgroundJob\IJobList; +use OCP\IConfig; +use OCP\IUser; +use OCP\IUserManager; +use OCP\Migration\IOutput; +use Test\TestCase; + +class RegenerateBirthdayCalendarsTest extends TestCase { + + /** @var IUserManager | \PHPUnit_Framework_MockObject_MockObject */ + private $userManager; + + /** @var IJobList | \PHPUnit_Framework_MockObject_MockObject */ + private $jobList; + + /** @var IConfig | \PHPUnit_Framework_MockObject_MockObject */ + private $config; + + /** @var RefreshWebcalJobRegistrar */ + private $migration; + + protected function setUp() { + parent::setUp(); + + $this->userManager = $this->createMock(IUserManager::class); + $this->jobList = $this->createMock(IJobList::class); + $this->config = $this->createMock(IConfig::class); + + $this->migration = new RegenerateBirthdayCalendars($this->userManager, + $this->jobList, $this->config); + } + + public function testGetName() { + $this->assertEquals( + 'Regenerating birthday calendars to use new icons and fix old birthday events without year', + $this->migration->getName() + ); + } + + public function testRun() { + $this->config->expects($this->at(0)) + ->method('getAppValue') + ->with('dav', 'regeneratedBirthdayCalendarsForYearFix') + ->willReturn(null); + + $output = $this->createMock(IOutput::class); + $output->expects($this->once()) + ->method('info') + ->with('Adding background jobs to regenerate birthday calendar'); + + $this->userManager->expects($this->once()) + ->method('callForAllUsers') + ->will($this->returnCallback(function($closure) { + $user1 = $this->createMock(IUser::class); + $user1->method('getUID')->will($this->returnValue('uid1')); + $user2 = $this->createMock(IUser::class); + $user2->method('getUID')->will($this->returnValue('uid2')); + $user3 = $this->createMock(IUser::class); + $user3->method('getUID')->will($this->returnValue('uid3')); + + $closure($user1); + $closure($user2); + $closure($user3); + })); + + $this->jobList->expects($this->at(0)) + ->method('add') + ->with(GenerateBirthdayCalendarBackgroundJob::class, [ + 'userId' => 'uid1', + 'purgeBeforeGenerating' => true + ]); + $this->jobList->expects($this->at(1)) + ->method('add') + ->with(GenerateBirthdayCalendarBackgroundJob::class, [ + 'userId' => 'uid2', + 'purgeBeforeGenerating' => true + ]); + $this->jobList->expects($this->at(2)) + ->method('add') + ->with(GenerateBirthdayCalendarBackgroundJob::class, [ + 'userId' => 'uid3', + 'purgeBeforeGenerating' => true + ]); + + $this->config->expects($this->at(1)) + ->method('setAppValue') + ->with('dav', 'regeneratedBirthdayCalendarsForYearFix', 'yes'); + + $this->migration->run($output); + } + + public function testRunSecondTime() { + $this->config->expects($this->once()) + ->method('getAppValue') + ->with('dav', 'regeneratedBirthdayCalendarsForYearFix') + ->willReturn('yes'); + + $output = $this->createMock(IOutput::class); + $output->expects($this->once()) + ->method('info') + ->with('Repair step already executed'); + + $this->userManager->expects($this->never()) + ->method('callForAllUsers'); + + $this->migration->run($output); + } + + +}
\ No newline at end of file |