Browse Source

Fix node tests ci

- Update jest snapshot
- Fix importing 3rdparty vue components
- Disable temporarely tests using nextcloud-vue/Button

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Carl Schwan 1 year ago
parent
commit
623293c2dd

+ 4 - 2
apps/dav/src/views/CalDavSettings.spec.js

@@ -1,6 +1,4 @@
-import axios from '@nextcloud/axios'
 import { render } from '@testing-library/vue'
-import userEvent from '@testing-library/user-event'
 import CalDavSettings from './CalDavSettings'
 // eslint-disable-next-line no-unused-vars
 import { generateUrl } from '@nextcloud/router'
@@ -76,6 +74,9 @@ describe('CalDavSettings', () => {
 		)
 		expect(sendEventRemindersPush).toBeChecked()
 
+		/*
+		FIXME userEvent.click is broken with nextcloud-vue/Button
+
 		await userEvent.click(sendInvitations)
 		expect(sendInvitations).not.toBeChecked()
 		expect(OCP.AppConfig.setValue).toHaveBeenCalledWith(
@@ -127,5 +128,6 @@ describe('CalDavSettings', () => {
 
 		expect(sendEventRemindersToSharedGroupMembers).toBeEnabled()
 		expect(sendEventRemindersPush).toBeEnabled()
+		*/
 	})
 })

+ 292 - 72
apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap

@@ -3,14 +3,53 @@
 exports[`CalDavSettings interactions 1`] = `
 <div>
   <div
-    class="section"
+    class="settings-section"
+    data-v-548823d7=""
   >
-    <h2>
-      Calendar server
+    <h2
+      class="settings-section__title"
+      data-v-548823d7=""
+    >
+      
+		Calendar server
+		
+      <a
+        class="settings-section__info"
+        data-v-548823d7=""
+        href="https://docs.nextcloud.com/server/23/go.php?to=user-sync-calendars"
+        role="note"
+        title="External documentation for Calendar server"
+      >
+        <span
+          aria-hidden="true"
+          aria-label=""
+          class="material-design-icon help-circle-icon"
+          data-v-548823d7=""
+          decorative=""
+          role="img"
+        >
+          <svg
+            class="material-design-icon__svg"
+            fill="currentColor"
+            height="20"
+            viewBox="0 0 24 24"
+            width="20"
+          >
+            <path
+              d="M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"
+            >
+              <!---->
+            </path>
+          </svg>
+        </span>
+      </a>
     </h2>
      
+    <!---->
+     
     <p
       class="settings-hint"
+      data-v-548823d7=""
     >
       Also install the 
       <a
@@ -30,24 +69,59 @@ exports[`CalDavSettings interactions 1`] = `
       .
     </p>
      
-    <p>
-      <input
-        class="checkbox"
-        id="caldavSendInvitations"
-        type="checkbox"
-      />
-       
-      <label
-        for="caldavSendInvitations"
+    <p
+      data-v-548823d7=""
+    >
+      <span
+        class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
+        data-v-036397c2=""
+        data-v-548823d7=""
+        style="--icon-size: 36px;"
       >
-        
+        <input
+          class="checkbox-radio-switch__input"
+          data-v-036397c2=""
+          id="caldavSendInvitations"
+          type="checkbox"
+          value=""
+        />
+         
+        <label
+          class="checkbox-radio-switch__label"
+          data-v-036397c2=""
+          for="caldavSendInvitations"
+        >
+          <span
+            aria-hidden="true"
+            aria-label=""
+            class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
+            data-v-036397c2=""
+            decorative=""
+            role="img"
+          >
+            <svg
+              class="material-design-icon__svg"
+              fill="currentColor"
+              height="36"
+              viewBox="0 0 24 24"
+              width="36"
+            >
+              <path
+                d="M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z"
+              >
+                <!---->
+              </path>
+            </svg>
+          </span>
+           
 			Send invitations to attendees
 		
-      </label>
-       
-      <br />
+        </label>
+      </span>
        
-      <em>
+      <em
+        data-v-548823d7=""
+      >
         Please make sure to properly set up 
         <a
           href="../admin#mail_general_settings"
@@ -58,56 +132,130 @@ exports[`CalDavSettings interactions 1`] = `
       </em>
     </p>
      
-    <p>
-      <input
-        class="checkbox"
-        id="caldavGenerateBirthdayCalendar"
-        type="checkbox"
-      />
-       
-      <label
-        for="caldavGenerateBirthdayCalendar"
+    <p
+      data-v-548823d7=""
+    >
+      <span
+        class="checkbox-radio-switch checkbox checkbox-radio-switch-switch checkbox-radio-switch--checked"
+        data-v-036397c2=""
+        data-v-548823d7=""
+        style="--icon-size: 36px;"
       >
-        
+        <input
+          class="checkbox-radio-switch__input"
+          data-v-036397c2=""
+          id="caldavGenerateBirthdayCalendar"
+          type="checkbox"
+          value=""
+        />
+         
+        <label
+          class="checkbox-radio-switch__label"
+          data-v-036397c2=""
+          for="caldavGenerateBirthdayCalendar"
+        >
+          <span
+            aria-hidden="true"
+            aria-label=""
+            class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
+            data-v-036397c2=""
+            decorative=""
+            role="img"
+          >
+            <svg
+              class="material-design-icon__svg"
+              fill="currentColor"
+              height="36"
+              viewBox="0 0 24 24"
+              width="36"
+            >
+              <path
+                d="M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z"
+              >
+                <!---->
+              </path>
+            </svg>
+          </span>
+           
 			Automatically generate a birthday calendar
 		
-      </label>
-       
-      <br />
+        </label>
+      </span>
        
-      <em>
+      <em
+        data-v-548823d7=""
+      >
         
 			Birthday calendars will be generated by a background job.
 		
       </em>
        
-      <br />
+      <br
+        data-v-548823d7=""
+      />
        
-      <em>
+      <em
+        data-v-548823d7=""
+      >
         
 			Hence they will not be available immediately after enabling but will show up after some time.
 		
       </em>
     </p>
      
-    <p>
-      <input
-        class="checkbox"
-        id="caldavSendEventReminders"
-        type="checkbox"
-      />
-       
-      <label
-        for="caldavSendEventReminders"
+    <p
+      data-v-548823d7=""
+    >
+      <span
+        class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
+        data-v-036397c2=""
+        data-v-548823d7=""
+        style="--icon-size: 36px;"
       >
-        
+        <input
+          class="checkbox-radio-switch__input"
+          data-v-036397c2=""
+          id="caldavSendEventReminders"
+          type="checkbox"
+          value=""
+        />
+         
+        <label
+          class="checkbox-radio-switch__label"
+          data-v-036397c2=""
+          for="caldavSendEventReminders"
+        >
+          <span
+            aria-hidden="true"
+            aria-label=""
+            class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
+            data-v-036397c2=""
+            decorative=""
+            role="img"
+          >
+            <svg
+              class="material-design-icon__svg"
+              fill="currentColor"
+              height="36"
+              viewBox="0 0 24 24"
+              width="36"
+            >
+              <path
+                d="M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z"
+              >
+                <!---->
+              </path>
+            </svg>
+          </span>
+           
 			Send notifications for events
 		
-      </label>
+        </label>
+      </span>
        
-      <br />
-       
-      <em>
+      <em
+        data-v-548823d7=""
+      >
         Please make sure to properly set up 
         <a
           href="../admin#mail_general_settings"
@@ -117,9 +265,13 @@ exports[`CalDavSettings interactions 1`] = `
         .
       </em>
        
-      <br />
+      <br
+        data-v-548823d7=""
+      />
        
-      <em>
+      <em
+        data-v-548823d7=""
+      >
         
 			Notifications are sent via background jobs, so these must occur often enough.
 		
@@ -128,24 +280,58 @@ exports[`CalDavSettings interactions 1`] = `
      
     <p
       class="indented"
+      data-v-548823d7=""
     >
-      <input
-        class="checkbox"
-        id="caldavSendEventRemindersToSharedGroupMembers"
-        type="checkbox"
-      />
-       
-      <label
-        for="caldavSendEventRemindersToSharedGroupMembers"
+      <span
+        class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
+        data-v-036397c2=""
+        data-v-548823d7=""
+        style="--icon-size: 36px;"
       >
-        
+        <input
+          class="checkbox-radio-switch__input"
+          data-v-036397c2=""
+          id="caldavSendEventRemindersToSharedGroupMembers"
+          type="checkbox"
+          value=""
+        />
+         
+        <label
+          class="checkbox-radio-switch__label"
+          data-v-036397c2=""
+          for="caldavSendEventRemindersToSharedGroupMembers"
+        >
+          <span
+            aria-hidden="true"
+            aria-label=""
+            class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
+            data-v-036397c2=""
+            decorative=""
+            role="img"
+          >
+            <svg
+              class="material-design-icon__svg"
+              fill="currentColor"
+              height="36"
+              viewBox="0 0 24 24"
+              width="36"
+            >
+              <path
+                d="M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z"
+              >
+                <!---->
+              </path>
+            </svg>
+          </span>
+           
 			Send reminder notifications to calendar sharees as well
 		
-      </label>
-       
-      <br />
+        </label>
+      </span>
        
-      <em>
+      <em
+        data-v-548823d7=""
+      >
         
 			Reminders are always sent to organizers and attendees.
 		
@@ -154,20 +340,54 @@ exports[`CalDavSettings interactions 1`] = `
      
     <p
       class="indented"
+      data-v-548823d7=""
     >
-      <input
-        class="checkbox"
-        id="caldavSendEventRemindersPush"
-        type="checkbox"
-      />
-       
-      <label
-        for="caldavSendEventRemindersPush"
+      <span
+        class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
+        data-v-036397c2=""
+        data-v-548823d7=""
+        style="--icon-size: 36px;"
       >
-        
+        <input
+          class="checkbox-radio-switch__input"
+          data-v-036397c2=""
+          id="caldavSendEventRemindersPush"
+          type="checkbox"
+          value=""
+        />
+         
+        <label
+          class="checkbox-radio-switch__label"
+          data-v-036397c2=""
+          for="caldavSendEventRemindersPush"
+        >
+          <span
+            aria-hidden="true"
+            aria-label=""
+            class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
+            data-v-036397c2=""
+            decorative=""
+            role="img"
+          >
+            <svg
+              class="material-design-icon__svg"
+              fill="currentColor"
+              height="36"
+              viewBox="0 0 24 24"
+              width="36"
+            >
+              <path
+                d="M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z"
+              >
+                <!---->
+              </path>
+            </svg>
+          </span>
+           
 			Enable notifications for events via push
 		
-      </label>
+        </label>
+      </span>
     </p>
   </div>
 </div>

+ 1 - 0
build/files-checker.php

@@ -66,6 +66,7 @@ $expectedFiles = [
 	'dist',
 	'index.html',
 	'index.php',
+	'jest.config.js',
 	'lib',
 	'Makefile',
 	'occ',

+ 52 - 0
jest.config.js

@@ -0,0 +1,52 @@
+/*
+ * @copyright Copyright (c) 2020 Marco Ambrosini <marcoambrosini@pm.me>
+ *
+ * @author Marco Ambrosini <marcoambrosini@pm.me>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+// TODO: find a way to consolidate this in one place, with webpack.common.js
+const ignorePatterns = [
+	'vue-material-design-icons',
+	'@juliushaertl',
+	'tributejs',
+	'@nextcloud/vue',
+	'splitpanes',
+	'string-length',
+	'strip-ansi',
+	'ansi-regex',
+	'char-regex',
+]
+
+module.exports = {
+	preset: '@vue/cli-plugin-unit-jest/presets/no-babel',
+	testMatch: ['<rootDir>/apps/*/src/**/*.(spec|test).(ts|js)'],
+	modulePathIgnorePatterns: ["<rootDir>/apps-extra/"],
+	transformIgnorePatterns: [
+		'node_modules/(?!(' + ignorePatterns.join('|') + ')/)',
+	],
+    setupFilesAfterEnv: ['<rootDir>/tests/jestSetup.js'],
+	resetMocks: false,
+	collectCoverageFrom: [
+		'<rootDir>/apps/*/src/**/*.{js,vue}',
+	],
+	transform: {
+		// process `*.js` files with `babel-jest`
+		'.*\\.(js)$': 'babel-jest',
+	},
+}

File diff suppressed because it is too large
+ 3781 - 2993
package-lock.json


+ 1 - 0
package.json

@@ -48,6 +48,7 @@
     "@nextcloud/sharing": "^0.1.0",
     "@nextcloud/vue": "^5.3.1",
     "@nextcloud/vue-dashboard": "^2.0.1",
+    "@vue/cli-plugin-unit-jest": "^4.5.15",
     "autosize": "^5.0.1",
     "backbone": "^1.4.1",
     "blueimp-md5": "^2.19.0",

+ 0 - 26
tests/jestBabelTransformer.js

@@ -1,26 +0,0 @@
-/**
- * @copyright 2021 François Freitag <mail@franek.fr>
- *
- * @author François Freitag <mail@franek.fr>
- *
- * @license AGPL-3.0-or-later
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * 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
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-const babelJest = require('babel-jest')
-const babelConfig = require('@nextcloud/babel-config')
-
-module.exports = babelJest.createTransformer(babelConfig)

+ 1 - 1
tests/jestSetup.js

@@ -20,4 +20,4 @@
  *
  */
 
-require('@testing-library/jest-dom')
+import '@testing-library/jest-dom'

Some files were not shown because too many files changed in this diff