diff options
author | François Freitag <mail@franek.fr> | 2021-05-16 17:56:50 +0200 |
---|---|---|
committer | François Freitag <mail@franek.fr> | 2021-06-05 11:22:25 +0200 |
commit | 70edda034201b9d7c3d38bb714dfb35324b2841c (patch) | |
tree | 7dbdc91f8b99d82c1e805d657c8fcbafce7a0ece /apps/dav/tests | |
parent | 46dbc8fa988176e4a431cafcbae6674fb613c899 (diff) | |
download | nextcloud-server-70edda034201b9d7c3d38bb714dfb35324b2841c.tar.gz nextcloud-server-70edda034201b9d7c3d38bb714dfb35324b2841c.zip |
Port dav calendar settings page to Vue.js
- Drop reliance on deprecated global jQuery object.
- Allow testing user interactions.
- Use newer technology stack.
---
Test user interactions with the groupware dav settings
Add infrastructure to test Vue components:
- Use recommended libraries:
- https://vuejs.org/v2/guide/testing.html#Recommendations
- Use jest-dom for robust assertions on the DOM state
- Use user-event to be more representative of user actions
- Code is transpiled by Jest, with the help of vue-jest.
Ignore test files for no-unpublished-import. Prevent ESLint from
flagging:
```
/home/runner/work/server/server/apps/dav/src/views/CalDavSettings.spec.js
Error: 1:24 error "@testing-library/vue" is not published node/no-unpublished-import
Error: 2:23 error "@testing-library/user-event" is not published node/no-unpublished-import
```
Signed-off-by: François Freitag <mail@franek.fr>
Diffstat (limited to 'apps/dav/tests')
-rw-r--r-- | apps/dav/tests/unit/Settings/CalDAVSettingsTest.php | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/apps/dav/tests/unit/Settings/CalDAVSettingsTest.php b/apps/dav/tests/unit/Settings/CalDAVSettingsTest.php index 5c8a89db547..d02990f97ec 100644 --- a/apps/dav/tests/unit/Settings/CalDAVSettingsTest.php +++ b/apps/dav/tests/unit/Settings/CalDAVSettingsTest.php @@ -28,6 +28,7 @@ namespace OCA\DAV\Tests\Unit\DAV\Settings; use OCA\DAV\Settings\CalDAVSettings; use OCP\IConfig; +use OCP\AppFramework\Services\IInitialState; use Test\TestCase; class CalDAVSettingsTest extends TestCase { @@ -35,6 +36,9 @@ class CalDAVSettingsTest extends TestCase { /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */ private $config; + /** @var OCP\AppFramework\Services\IInitialState|\PHPUnit\Framework\MockObject\MockObject */ + private $initialState; + /** @var CalDAVSettings */ private $settings; @@ -42,10 +46,26 @@ class CalDAVSettingsTest extends TestCase { parent::setUp(); $this->config = $this->createMock(IConfig::class); - $this->settings = new CalDAVSettings($this->config); + $this->initialState = $this->createMock(IInitialState::class); + $this->settings = new CalDAVSettings($this->config, $this->initialState); } public function testGetForm() { + $this->config->method('getAppValue') + ->withConsecutive( + ['dav', 'sendInvitations', 'yes'], + ['dav', 'generateBirthdayCalendar', 'yes'], + ['dav', 'sendEventReminders', 'yes'], + ['dav', 'sendEventRemindersPush', 'no'], + ) + ->will($this->onConsecutiveCalls('yes', 'no', 'yes', 'yes')); + $this->initialState->method('provideInitialState') + ->withConsecutive( + ['sendInvitations', true], + ['generateBirthdayCalendar', false], + ['sendEventReminders', true], + ['sendEventRemindersPush', true], + ); $result = $this->settings->getForm(); $this->assertInstanceOf('OCP\AppFramework\Http\TemplateResponse', $result); |