Compare commits

...

31 Commits

Author SHA1 Message Date
grnd-alt
09748aebb9 export json data of commments
Signed-off-by: grnd-alt <salimbelakkaf@outlook.de>
2024-08-05 10:05:05 +02:00
github-actions[bot]
db00879b6a Merge pull request #6176 from nextcloud/automated/noid/main-update-nextcloud-ocp
[main] Update nextcloud/ocp dependency
2024-08-04 04:23:46 +00:00
nextcloud-command
7b1ca0b233 chore(dev-deps): Bump nextcloud/ocp package
Signed-off-by: GitHub <noreply@github.com>
2024-08-04 02:46:40 +00:00
Julius Härtl
c379955805 Merge pull request #6171 from nextcloud/dependabot/composer/justinrainbow/json-schema-6.0.0 2024-08-03 22:25:37 +02:00
dependabot[bot]
af3a0ef029 Merge pull request #6154 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/files-3.7.0 2024-08-03 20:10:14 +00:00
Julius Härtl
e003106d1d Merge pull request #6151 from nextcloud/dependabot/github_actions/mdecoleman/pr-branch-name-3.0.0
Chore(deps): Bump mdecoleman/pr-branch-name from 2.0.0 to 3.0.0
2024-08-03 22:04:23 +02:00
dependabot[bot]
10842caffd Chore(deps): Bump @nextcloud/files from 3.6.0 to 3.7.0
Bumps [@nextcloud/files](https://github.com/nextcloud-libraries/nextcloud-files) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-files/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-files/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-files/compare/v3.6.0...v3.7.0)

---
updated-dependencies:
- dependency-name: "@nextcloud/files"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-03 22:04:03 +02:00
Julius Härtl
efa935f117 Merge pull request #6172 from nextcloud/dependabot/github_actions/alexwilson/enable-github-automerge-action-984aa5760674115463cb7835dc156fcc17413419 2024-08-03 13:09:48 +02:00
dependabot[bot]
5498e04a12 Merge pull request #6175 from nextcloud/dependabot/npm_and_yarn/main/chroma-js-2.6.0 2024-08-03 03:30:47 +00:00
dependabot[bot]
634e6fe4f7 Chore(deps): Bump chroma-js from 2.4.2 to 2.6.0
Bumps [chroma-js](https://github.com/gka/chroma.js) from 2.4.2 to 2.6.0.
- [Release notes](https://github.com/gka/chroma.js/releases)
- [Changelog](https://github.com/gka/chroma.js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gka/chroma.js/commits/v2.6.0)

---
updated-dependencies:
- dependency-name: chroma-js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-03 03:25:05 +00:00
dependabot[bot]
119b942eef Merge pull request #6174 from nextcloud/dependabot/npm_and_yarn/main/cypress-13.13.2 2024-08-03 03:24:26 +00:00
dependabot[bot]
ae69c891f3 Merge pull request #6173 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/vue-8.15.1 2024-08-03 03:24:19 +00:00
dependabot[bot]
0a97ba3e9a Chore(deps-dev): Bump cypress from 13.13.1 to 13.13.2
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.13.1 to 13.13.2.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.13.1...v13.13.2)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-03 02:57:19 +00:00
dependabot[bot]
4c0b1f5391 Chore(deps): Bump @nextcloud/vue from 8.15.0 to 8.15.1
Bumps [@nextcloud/vue](https://github.com/nextcloud-libraries/nextcloud-vue) from 8.15.0 to 8.15.1.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-vue/compare/v8.15.0...v8.15.1)

---
updated-dependencies:
- dependency-name: "@nextcloud/vue"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-03 02:57:06 +00:00
dependabot[bot]
eabb9d4464 Chore(deps): Bump alexwilson/enable-github-automerge-action
Bumps [alexwilson/enable-github-automerge-action](https://github.com/alexwilson/enable-github-automerge-action) from 73b91685ceb5d1632ddfba3d0e3738780d0e5856 to 984aa5760674115463cb7835dc156fcc17413419.
- [Release notes](https://github.com/alexwilson/enable-github-automerge-action/releases)
- [Commits](73b91685ce...984aa57606)

---
updated-dependencies:
- dependency-name: alexwilson/enable-github-automerge-action
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-03 02:53:30 +00:00
dependabot[bot]
4a1c9dc6a8 Chore(deps): Bump justinrainbow/json-schema from 5.3.0 to 6.0.0
Bumps [justinrainbow/json-schema](https://github.com/jsonrainbow/json-schema) from 5.3.0 to 6.0.0.
- [Release notes](https://github.com/jsonrainbow/json-schema/releases)
- [Changelog](https://github.com/jsonrainbow/json-schema/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsonrainbow/json-schema/compare/5.3.0...6.0.0)

---
updated-dependencies:
- dependency-name: justinrainbow/json-schema
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-03 01:44:46 +00:00
Nextcloud bot
5f36c33232 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-03 00:42:06 +00:00
dependabot[bot]
3dbb73807f Merge pull request #6156 from nextcloud/dependabot/npm_and_yarn/main/nextcloud/vue-8.15.0 2024-08-01 20:49:46 +00:00
dependabot[bot]
82aa1d7d10 Chore(deps): Bump @nextcloud/vue from 8.14.0 to 8.15.0
Bumps [@nextcloud/vue](https://github.com/nextcloud-libraries/nextcloud-vue) from 8.14.0 to 8.15.0.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-vue/compare/v8.14.0...v8.15.0)

---
updated-dependencies:
- dependency-name: "@nextcloud/vue"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 22:32:16 +02:00
Julius Härtl
2e200cb6a7 Merge pull request #6137 from nextcloud/tests/behat-locally
tests: Add environment variable and document commands to run behat tests locally
2024-08-01 22:31:12 +02:00
dependabot[bot]
2138a0b810 Chore(deps): Bump alexwilson/enable-github-automerge-action from 7bcf565e3edb508fd1e4a8814ba60233bfa027fb to 73b91685ceb5d1632ddfba3d0e3738780d0e5856 (#6152)
Bumps [alexwilson/enable-github-automerge-action](https://github.com/alexwilson/enable-github-automerge-action) from 7bcf565e3edb508fd1e4a8814ba60233bfa027fb to 73b91685ceb5d1632ddfba3d0e3738780d0e5856.
- [Release notes](https://github.com/alexwilson/enable-github-automerge-action/releases)
- [Commits](7bcf565e3e...73b91685ce)

---
updated-dependencies:
- dependency-name: alexwilson/enable-github-automerge-action
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Julius Härtl <jus@bitgrid.net>
2024-08-01 21:18:42 +02:00
Julius Härtl
307b3eb50e Merge pull request #6143 from nextcloud/dependabot/composer/tests/integration/guzzlehttp/guzzle-7.9.2 2024-08-01 20:27:06 +02:00
Julius Härtl
76e49ebbba Merge pull request #6159 from nextcloud/dependabot/npm_and_yarn/fast-xml-parser-4.4.1 2024-08-01 20:14:10 +02:00
Julius Härtl
011e046c28 Merge pull request #6117 from nextcloud/fix/3752-cant-rename-list-in-cloned-board 2024-08-01 19:58:57 +02:00
Julius Härtl
2630b6ccac Merge pull request #6140 from nextcloud/fix/losing-focus
fix: losing focus while editing title field
2024-08-01 17:22:04 +02:00
Luka Trovic
2e552f474a fix: cypress ci issue
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2024-08-01 14:37:17 +02:00
Luka Trovic
a364ca8733 fix: losing focus while editing title field
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2024-07-31 18:44:48 +02:00
dependabot[bot]
e8cde5b690 Chore(deps): Bump fast-xml-parser from 4.3.6 to 4.4.1
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 4.3.6 to 4.4.1.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v4.3.6...v4.4.1)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-29 22:31:06 +00:00
dependabot[bot]
a660e5b859 Chore(deps): Bump mdecoleman/pr-branch-name from 2.0.0 to 3.0.0
Bumps [mdecoleman/pr-branch-name](https://github.com/mdecoleman/pr-branch-name) from 2.0.0 to 3.0.0.
- [Release notes](https://github.com/mdecoleman/pr-branch-name/releases)
- [Commits](bab4c71506...55795d86b4)

---
updated-dependencies:
- dependency-name: mdecoleman/pr-branch-name
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-27 02:36:28 +00:00
dependabot[bot]
b76387b862 Chore(deps-dev): Update guzzlehttp/guzzle requirement
Updates the requirements on [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) to permit the latest version.
- [Release notes](https://github.com/guzzle/guzzle/releases)
- [Changelog](https://github.com/guzzle/guzzle/blob/7.9/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/7.9.1...7.9.2)

---
updated-dependencies:
- dependency-name: guzzlehttp/guzzle
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-27 01:18:42 +00:00
Julius Härtl
4ec4f86963 tests: Add environment variable and document commands to run behat tests locally
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-07-24 13:35:24 +02:00
18 changed files with 440 additions and 68 deletions

View File

@@ -30,7 +30,7 @@ jobs:
contents: write
steps:
- uses: mdecoleman/pr-branch-name@bab4c71506bcd299fb350af63bb8e53f2940a599 # v2.0.0
- uses: mdecoleman/pr-branch-name@55795d86b4566d300d237883103f052125cc7508 # v3.0.0
id: branchname
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
@@ -43,7 +43,7 @@ jobs:
# Enable GitHub auto merge
- name: Auto merge
uses: alexwilson/enable-github-automerge-action@7bcf565e3edb508fd1e4a8814ba60233bfa027fb # main
uses: alexwilson/enable-github-automerge-action@984aa5760674115463cb7835dc156fcc17413419 # main
if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp')
with:
github-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -105,6 +105,12 @@ You can use the provided Makefile to run all tests by using:
make test
#### Running behat integration tests
Within `tests/integration/` run `composer install` and then choose one of the two options:
- Run tests with a local php server: `bash run.sh`
- Run against an existing Nextcloud installation: `BEHAT_SERVER_URL=http://nextcloud.local ./vendor/bin/behat --colors features/decks.feature`
### Documentation
The documentation for our REST API can be found at https://deck.readthedocs.io/en/latest/API/

View File

@@ -9,7 +9,7 @@
}
],
"require": {
"justinrainbow/json-schema": "^5.2"
"justinrainbow/json-schema": "^6.0"
},
"require-dev": {
"roave/security-advisories": "dev-master",

227
composer.lock generated
View File

@@ -4,27 +4,144 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "91d1163b8b5b076f39a79a9c394d0217",
"content-hash": "ee1c5b69795943e43d6277064d284ae0",
"packages": [
{
"name": "justinrainbow/json-schema",
"version": "5.3.0",
"name": "icecave/parity",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/jsonrainbow/json-schema.git",
"reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8"
"url": "https://github.com/icecave/parity.git",
"reference": "0109fef58b3230d23b20b2ac52ecdf477218d300"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8",
"reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8",
"url": "https://api.github.com/repos/icecave/parity/zipball/0109fef58b3230d23b20b2ac52ecdf477218d300",
"reference": "0109fef58b3230d23b20b2ac52ecdf477218d300",
"shasum": ""
},
"require": {
"php": ">=7.1"
"icecave/repr": "~1",
"php": ">=5.3"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1",
"eloquent/liberator": "~1",
"icecave/archer": "~1"
},
"suggest": {
"eloquent/asplode": "Drop-in exception-based error handling."
},
"type": "library",
"autoload": {
"psr-0": {
"Icecave\\Parity": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "James Harris",
"email": "james.harris@icecave.com.au",
"homepage": "https://github.com/jmalloc"
}
],
"description": "A customizable deep comparison library.",
"homepage": "https://github.com/IcecaveStudios/parity",
"keywords": [
"compare",
"comparison",
"equal",
"equality",
"greater",
"less",
"sort",
"sorting"
],
"support": {
"issues": "https://github.com/icecave/parity/issues",
"source": "https://github.com/icecave/parity/tree/1.0.0"
},
"time": "2014-01-17T05:56:27+00:00"
},
{
"name": "icecave/repr",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/icecave/repr.git",
"reference": "8a3d2953adf5f464a06e3e2587aeacc97e2bed07"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/icecave/repr/zipball/8a3d2953adf5f464a06e3e2587aeacc97e2bed07",
"reference": "8a3d2953adf5f464a06e3e2587aeacc97e2bed07",
"shasum": ""
},
"require": {
"php": ">=5.3"
},
"require-dev": {
"icecave/archer": "~1"
},
"suggest": {
"eloquent/asplode": "Drop-in exception-based error handling."
},
"type": "library",
"autoload": {
"psr-4": {
"Icecave\\Repr\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "James Harris",
"email": "james.harris@icecave.com.au",
"homepage": "https://github.com/jmalloc"
}
],
"description": "A library for generating string representations of any value, inspired by Python's reprlib library.",
"homepage": "https://github.com/IcecaveStudios/repr",
"keywords": [
"human",
"readable",
"repr",
"representation",
"string"
],
"support": {
"issues": "https://github.com/icecave/repr/issues",
"source": "https://github.com/icecave/repr/tree/1.0.1"
},
"time": "2014-07-25T05:44:41+00:00"
},
{
"name": "justinrainbow/json-schema",
"version": "6.0.0",
"source": {
"type": "git",
"url": "https://github.com/jsonrainbow/json-schema.git",
"reference": "a38c6198d53b09c0702f440585a4f4a5d9137bd9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/a38c6198d53b09c0702f440585a4f4a5d9137bd9",
"reference": "a38c6198d53b09c0702f440585a4f4a5d9137bd9",
"shasum": ""
},
"require": {
"icecave/parity": "1.0.0",
"marc-mabe/php-enum": "^2.0 || ^3.0 || ^4.0",
"php": ">=5.3.3"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "~2.2.20 || ~2.19.0",
"json-schema/json-schema-test-suite": "1.2.0",
"phpunit/phpunit": "^4.8.35"
},
@@ -32,6 +149,11 @@
"bin/validate-json"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.x-dev"
}
},
"autoload": {
"psr-4": {
"JsonSchema\\": "src/JsonSchema/"
@@ -60,16 +182,89 @@
}
],
"description": "A library to validate a json schema.",
"homepage": "https://github.com/justinrainbow/json-schema",
"homepage": "https://github.com/jsonrainbow/json-schema",
"keywords": [
"json",
"schema"
],
"support": {
"issues": "https://github.com/jsonrainbow/json-schema/issues",
"source": "https://github.com/jsonrainbow/json-schema/tree/5.3.0"
"source": "https://github.com/jsonrainbow/json-schema/tree/6.0.0"
},
"time": "2024-07-06T21:00:26+00:00"
"time": "2024-07-30T17:49:21+00:00"
},
{
"name": "marc-mabe/php-enum",
"version": "v4.7.0",
"source": {
"type": "git",
"url": "https://github.com/marc-mabe/php-enum.git",
"reference": "3da42cc1daceaf98c858e56f59d1ccd52b011fdc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/marc-mabe/php-enum/zipball/3da42cc1daceaf98c858e56f59d1ccd52b011fdc",
"reference": "3da42cc1daceaf98c858e56f59d1ccd52b011fdc",
"shasum": ""
},
"require": {
"ext-reflection": "*",
"php": "^7.1 | ^8.0"
},
"require-dev": {
"phpbench/phpbench": "^0.16.10 || ^1.0.4",
"phpstan/phpstan": "^1.3.1",
"phpunit/phpunit": "^7.5.20 | ^8.5.22 | ^9.5.11",
"vimeo/psalm": "^4.17.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.6-dev",
"dev-3.x": "3.2-dev"
}
},
"autoload": {
"psr-4": {
"MabeEnum\\": "src/"
},
"classmap": [
"stubs/Stringable.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Marc Bennewitz",
"email": "dev@mabe.berlin",
"homepage": "https://mabe.berlin/",
"role": "Lead"
}
],
"description": "Simple and fast implementation of enumerations with native PHP",
"homepage": "https://github.com/marc-mabe/php-enum",
"keywords": [
"enum",
"enum-map",
"enum-set",
"enumeration",
"enumerator",
"enummap",
"enumset",
"map",
"set",
"type",
"type-hint",
"typehint"
],
"support": {
"issues": "https://github.com/marc-mabe/php-enum/issues",
"source": "https://github.com/marc-mabe/php-enum/tree/v4.7.0"
},
"time": "2022-04-19T02:21:46+00:00"
}
],
"packages-dev": [
@@ -249,12 +444,12 @@
"source": {
"type": "git",
"url": "https://github.com/nextcloud-deps/ocp.git",
"reference": "c15539c648081c00fa826d734f013f155bff6098"
"reference": "fb567bbfffc34cdd48efd19990b6b452c2eea6eb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/c15539c648081c00fa826d734f013f155bff6098",
"reference": "c15539c648081c00fa826d734f013f155bff6098",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/fb567bbfffc34cdd48efd19990b6b452c2eea6eb",
"reference": "fb567bbfffc34cdd48efd19990b6b452c2eea6eb",
"shasum": ""
},
"require": {
@@ -286,7 +481,7 @@
"issues": "https://github.com/nextcloud-deps/ocp/issues",
"source": "https://github.com/nextcloud-deps/ocp/tree/master"
},
"time": "2024-07-27T00:37:10+00:00"
"time": "2024-08-03T00:37:02+00:00"
},
{
"name": "nikic/php-parser",

View File

@@ -21,7 +21,7 @@
import './commands.js'
Cypress.on('uncaught:exception', (err) => {
return !err.message.includes('ResizeObserver loop limit exceeded')
return !err.message.includes('ResizeObserver loop limit exceeded') && !err.message.includes('ResizeObserver loop completed with undelivered notifications')
})
// Alternatively you can use CommonJS syntax:

View File

@@ -28,9 +28,11 @@ OC.L10N.register(
"Do you want to overwrite it?" : "¿Deseas sobre escribirlo?",
"Drop your files to upload" : "Arrastre sus archivos para cargar",
"Add card" : "Agregar tarjeta",
"Active filters" : "Filtros activos",
"Filter by tag" : "Filtrar por etiqueta",
"Open" : "Abrir",
"Completed" : "Completado",
"Clear filter" : "Limpiar filtro",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Open details" : "Abrir detalles",

View File

@@ -26,9 +26,11 @@
"Do you want to overwrite it?" : "¿Deseas sobre escribirlo?",
"Drop your files to upload" : "Arrastre sus archivos para cargar",
"Add card" : "Agregar tarjeta",
"Active filters" : "Filtros activos",
"Filter by tag" : "Filtrar por etiqueta",
"Open" : "Abrir",
"Completed" : "Completado",
"Clear filter" : "Limpiar filtro",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Open details" : "Abrir detalles",

View File

@@ -12,6 +12,7 @@ use OCA\Deck\Db\CardMapper;
use OCA\Deck\Db\StackMapper;
use OCA\Deck\Model\CardDetails;
use OCA\Deck\Service\BoardService;
use OCA\Deck\Service\CommentService;
use OCP\App\IAppManager;
use OCP\DB\Exception;
use Symfony\Component\Console\Command\Command;
@@ -27,6 +28,7 @@ class UserExport extends Command {
private StackMapper $stackMapper,
private CardMapper $cardMapper,
private AssignmentMapper $assignedUsersMapper,
private CommentService $commentService,
) {
parent::__construct();
}
@@ -56,6 +58,9 @@ class UserExport extends Command {
$data = [];
foreach ($boards as $board) {
if ($board->getDeletedAt() > 0) {
continue;
}
$fullBoard = $this->boardMapper->find($board->getId(), true, true);
$data[$board->getId()] = $fullBoard->jsonSerialize();
$stacks = $this->stackMapper->findAll($board->getId());
@@ -68,7 +73,13 @@ class UserExport extends Command {
$fullCard->setAssignedUsers($assignedUsers);
$cardDetails = new CardDetails($fullCard, $fullBoard);
$data[$board->getId()]['stacks'][$stack->getId()]['cards'][] = $cardDetails->jsonSerialize();
$comments = $this->commentService->list($card->getId());
$cardDetails->setCommentsCount(count($comments->getData()));
$cardJson = $cardDetails->jsonSerialize();
$cardJson['comments'] = $comments->getData();
$data[$board->getId()]['stacks'][$stack->getId()]['cards'][] = $cardJson;
}
}
}

View File

@@ -58,7 +58,7 @@ class CommentEventListener implements IEventListener {
private function activityHandler(CommentsEvent $event): void {
$comment = $event->getComment();
$card = $this->cardMapper->find($comment->getObjectId());
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_COMMENT_CREATE, ['comment' => $comment]);
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_COMMENT_CREATE, ['comment' => $comment], $comment->getActorId());
}
private function notificationHandler(CommentsEvent $event): void {

View File

@@ -6,6 +6,7 @@
namespace OCA\Deck\Service\Importer\Systems;
use OC\Comments\Comment;
use OCA\Deck\BadRequestException;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\Assignment;
@@ -103,8 +104,20 @@ class DeckJsonService extends ABoardImportService {
}
public function getComments(): array {
// Comments are not implemented in export
return [];
$comments = [];
foreach ($this->tmpCards as $sourceCard) {
if (!property_exists($sourceCard, "comments")) {
continue;
}
$commentsOriginal = $sourceCard->comments;
foreach ($commentsOriginal as $commentOriginal) {
$comment = new Comment();
$comment->setActor($commentOriginal->actorType, $commentOriginal->actorId)
->setMessage($commentOriginal->message)->setCreationDateTime(\DateTime::createFromFormat('Y-m-d\TH:i:sP', $commentOriginal->creationDateTime));
$comments[$this->cards[$sourceCard->id]->getId()][$commentOriginal->id] = $comment;
}
}
return $comments;
}
public function getCardLabelAssignment(): array {

175
package-lock.json generated
View File

@@ -16,15 +16,15 @@
"@nextcloud/capabilities": "^1.2.0",
"@nextcloud/dialogs": "^5.3.5",
"@nextcloud/event-bus": "^3.3.1",
"@nextcloud/files": "^3.6.0",
"@nextcloud/files": "^3.7.0",
"@nextcloud/initial-state": "^2.2.0",
"@nextcloud/l10n": "^3.1.0",
"@nextcloud/moment": "^1.3.1",
"@nextcloud/notify_push": "^1.3.0",
"@nextcloud/router": "^3.0.1",
"@nextcloud/vue": "^8.14.0",
"@nextcloud/vue": "^8.15.1",
"blueimp-md5": "^2.19.0",
"chroma-js": "^2.4.2",
"chroma-js": "^2.6.0",
"dompurify": "^3.1.6",
"lodash": "^4.17.21",
"markdown-it": "^14.1.0",
@@ -55,7 +55,7 @@
"@relative-ci/agent": "^4.2.9",
"@vue/test-utils": "^2.4.6",
"@vue/vue2-jest": "^29.2.6",
"cypress": "^13.13.1",
"cypress": "^13.13.2",
"eslint-plugin-cypress": "^3.3.0",
"eslint-webpack-plugin": "^4.2.0",
"jest": "^29.7.0",
@@ -3697,19 +3697,20 @@
}
},
"node_modules/@nextcloud/files": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.6.0.tgz",
"integrity": "sha512-/3kzEJ1TsCgjkSVhjdI+FnF0c2rvYtiTAQPoNqkNQYFa7Vbor+XPuypBQIJZFMDMzEgUexAL4QuQT3YmeSfBAA==",
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.7.0.tgz",
"integrity": "sha512-u7Hwt7/13empViLvwHPQk1AnKjhDYf7tkXeCLaO6e03am2uqBlYwc3iUS4cZye5CuaEeJeW251jPUGTtRXjjWQ==",
"dependencies": {
"@nextcloud/auth": "^2.3.0",
"@nextcloud/capabilities": "^1.2.0",
"@nextcloud/l10n": "^3.1.0",
"@nextcloud/logger": "^3.0.2",
"@nextcloud/paths": "^2.1.0",
"@nextcloud/paths": "^2.2.0",
"@nextcloud/router": "^3.0.1",
"@nextcloud/sharing": "^0.2.2",
"cancelable-promise": "^4.3.1",
"is-svg": "^5.0.1",
"typedoc-plugin-missing-exports": "^3.0.0",
"typescript-event-target": "^1.1.1",
"webdav": "^5.6.0"
},
@@ -3821,21 +3822,12 @@
}
},
"node_modules/@nextcloud/paths": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-2.1.0.tgz",
"integrity": "sha512-8wX0gqwez0bTuAS8A0OEiqbbp0ZsqLr07zSErmS6OYhh9KZcSt/kO6lQV5tnrFqIqJVsxwz4kHUjtZXh6DSf9Q==",
"dependencies": {
"core-js": "^3.6.4"
}
},
"node_modules/@nextcloud/paths/node_modules/core-js": {
"version": "3.33.2",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.2.tgz",
"integrity": "sha512-XeBzWI6QL3nJQiHmdzbAOiMYqjrb7hwU7A39Qhvd/POSa/t9E1AeZyEZx3fNvp/vtM8zXwhoL0FsiS0hD0pruQ==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-2.2.1.tgz",
"integrity": "sha512-M3ShLjrxR7B48eKThLMoqbxTqTKyQXcwf9TgeXQGbCIhiHoXU6as5j8l5qNv/uZlANokVdowpuWHBi3b2+YNNA==",
"engines": {
"node": "^20.0.0",
"npm": "^10.0.0"
}
},
"node_modules/@nextcloud/router": {
@@ -3902,9 +3894,9 @@
}
},
"node_modules/@nextcloud/vue": {
"version": "8.14.0",
"resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-8.14.0.tgz",
"integrity": "sha512-hB3dG7tZWpItC74PfbTLW02754qYXFDH+h7Ksq6b7e8WlhnKLWrhNGKhSpNDt9/g+vb5bSIOxbiDZIJZ63hAuQ==",
"version": "8.15.1",
"resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-8.15.1.tgz",
"integrity": "sha512-gZEcXPNhRGYhjSd/IeTs0jQ5P8tPIv9BJm5A8qsdpB1Mb/Xb9suhJv1xHaeGcOGoUCcs7A66coPkCgv1zcSJ2w==",
"dependencies": {
"@floating-ui/dom": "^1.1.0",
"@linusborg/vue-simple-portal": "^0.1.5",
@@ -3917,6 +3909,7 @@
"@nextcloud/l10n": "^3.0.1",
"@nextcloud/logger": "^3.0.1",
"@nextcloud/router": "^3.0.0",
"@nextcloud/sharing": "^0.2.2",
"@nextcloud/timezones": "^0.1.1",
"@nextcloud/vue-select": "^3.25.0",
"@vueuse/components": "^10.9.0",
@@ -4241,6 +4234,24 @@
"url": "https://opencollective.com/core-js"
}
},
"node_modules/@shikijs/core": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.12.0.tgz",
"integrity": "sha512-mc1cLbm6UQ8RxLc0dZES7v5rkH+99LxQp/ZvTqV3NLyYsO/fD6JhEflP1H5b2SDq9gI0+0G36AVZWxvounfR9w==",
"peer": true,
"dependencies": {
"@types/hast": "^3.0.4"
}
},
"node_modules/@shikijs/core/node_modules/@types/hast": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
"integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
"peer": true,
"dependencies": {
"@types/unist": "*"
}
},
"node_modules/@sideway/address": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
@@ -6887,9 +6898,9 @@
"dev": true
},
"node_modules/chroma-js": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz",
"integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A=="
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.6.0.tgz",
"integrity": "sha512-BLHvCB9s8Z1EV4ethr6xnkl/P2YRFOGqfgvuMG/MyCbZPrTA+NeiByY6XvgF0zP4/2deU2CXnWyMa3zu1LqQ3A=="
},
"node_modules/chrome-trace-event": {
"version": "1.0.3",
@@ -7718,13 +7729,13 @@
"integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA=="
},
"node_modules/cypress": {
"version": "13.13.1",
"resolved": "https://registry.npmjs.org/cypress/-/cypress-13.13.1.tgz",
"integrity": "sha512-8F9UjL5MDUdgC/S5hr8CGLHbS5gGht5UOV184qc2pFny43fnkoaKxlzH/U6//zmGu/xRTaKimNfjknLT8+UDFg==",
"version": "13.13.2",
"resolved": "https://registry.npmjs.org/cypress/-/cypress-13.13.2.tgz",
"integrity": "sha512-PvJQU33933NvS1StfzEb8/mu2kMy4dABwCF+yd5Bi7Qly1HOVf+Bufrygee/tlmty/6j5lX+KIi8j9Q3JUMbhA==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
"@cypress/request": "^3.0.0",
"@cypress/request": "^3.0.1",
"@cypress/xvfb": "^1.2.4",
"@types/sinonjs__fake-timers": "8.1.1",
"@types/sizzle": "^2.3.2",
@@ -10007,9 +10018,9 @@
"peer": true
},
"node_modules/fast-xml-parser": {
"version": "4.3.6",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz",
"integrity": "sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==",
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz",
"integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==",
"funding": [
{
"type": "github",
@@ -14378,6 +14389,12 @@
"yallist": "^2.1.2"
}
},
"node_modules/lunr": {
"version": "2.3.9",
"resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz",
"integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==",
"peer": true
},
"node_modules/make-dir": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
@@ -18099,6 +18116,25 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/shiki": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/shiki/-/shiki-1.12.0.tgz",
"integrity": "sha512-BuAxWOm5JhRcbSOl7XCei8wGjgJJonnV0oipUupPY58iULxUGyHhW5CF+9FRMuM1pcJ5cGEJGll1LusX6FwpPA==",
"peer": true,
"dependencies": {
"@shikijs/core": "1.12.0",
"@types/hast": "^3.0.4"
}
},
"node_modules/shiki/node_modules/@types/hast": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
"integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
"peer": true,
"dependencies": {
"@types/unist": "*"
}
},
"node_modules/side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
@@ -19660,11 +19696,64 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/typedoc": {
"version": "0.26.5",
"resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.5.tgz",
"integrity": "sha512-Vn9YKdjKtDZqSk+by7beZ+xzkkr8T8CYoiasqyt4TTRFy5+UHzL/mF/o4wGBjRF+rlWQHDb0t6xCpA3JNL5phg==",
"peer": true,
"dependencies": {
"lunr": "^2.3.9",
"markdown-it": "^14.1.0",
"minimatch": "^9.0.5",
"shiki": "^1.9.1",
"yaml": "^2.4.5"
},
"bin": {
"typedoc": "bin/typedoc"
},
"engines": {
"node": ">= 18"
},
"peerDependencies": {
"typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x"
}
},
"node_modules/typedoc-plugin-missing-exports": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/typedoc-plugin-missing-exports/-/typedoc-plugin-missing-exports-3.0.0.tgz",
"integrity": "sha512-R7D8fYrK34mBFZSlF1EqJxfqiUSlQSmyrCiQgTQD52nNm6+kUtqwiaqaNkuJ2rA2wBgWFecUA8JzHT7x2r7ePg==",
"peerDependencies": {
"typedoc": "0.26.x"
}
},
"node_modules/typedoc/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"peer": true,
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/typedoc/node_modules/minimatch": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"peer": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/typescript": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
"integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
"dev": true,
"peer": true,
"bin": {
"tsc": "bin/tsc",
@@ -21108,6 +21197,18 @@
"dev": true,
"license": "ISC"
},
"node_modules/yaml": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz",
"integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==",
"peer": true,
"bin": {
"yaml": "bin.mjs"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",

View File

@@ -37,15 +37,15 @@
"@nextcloud/capabilities": "^1.2.0",
"@nextcloud/dialogs": "^5.3.5",
"@nextcloud/event-bus": "^3.3.1",
"@nextcloud/files": "^3.6.0",
"@nextcloud/files": "^3.7.0",
"@nextcloud/initial-state": "^2.2.0",
"@nextcloud/l10n": "^3.1.0",
"@nextcloud/moment": "^1.3.1",
"@nextcloud/notify_push": "^1.3.0",
"@nextcloud/router": "^3.0.1",
"@nextcloud/vue": "^8.14.0",
"@nextcloud/vue": "^8.15.1",
"blueimp-md5": "^2.19.0",
"chroma-js": "^2.4.2",
"chroma-js": "^2.6.0",
"dompurify": "^3.1.6",
"lodash": "^4.17.21",
"markdown-it": "^14.1.0",
@@ -83,7 +83,7 @@
"@relative-ci/agent": "^4.2.9",
"@vue/test-utils": "^2.4.6",
"@vue/vue2-jest": "^29.2.6",
"cypress": "^13.13.1",
"cypress": "^13.13.2",
"eslint-plugin-cypress": "^3.3.0",
"eslint-webpack-plugin": "^4.2.0",
"jest": "^29.7.0",

View File

@@ -100,6 +100,7 @@
:placeholder="t('deck', 'Card name')"
required
pattern=".*\S+.*"
@focus="onCreateCardFocus"
@keydown.esc="stopCardCreation">
<input v-show="!stateCardCreating"
class="icon-confirm"
@@ -211,6 +212,13 @@ export default {
},
},
},
watch: {
showAddCard(newValue) {
if (!newValue) {
this.$store.dispatch('toggleShortcutLock', false)
}
},
},
methods: {
stopCardCreation(e) {
@@ -300,6 +308,9 @@ export default {
this.stateCardCreating = false
}
},
onCreateCardFocus() {
this.$store.dispatch('toggleShortcutLock', true)
},
},
}
</script>

View File

@@ -109,6 +109,7 @@ export default {
showArchived: state => state.showArchived,
currentBoard: state => state.currentBoard,
showCardCover: state => state.showCardCover,
shortcutLock: state => state.shortcutLock,
}),
...mapGetters([
'isArchived',
@@ -184,6 +185,9 @@ export default {
},
methods: {
focus(card) {
if (this.shortcutLock) {
return
}
card = this.$refs[`card${card}`]
card.focus()
},

View File

@@ -2,7 +2,7 @@
"require-dev": {
"phpunit/phpunit": "~9",
"behat/behat": "~3.14.0",
"guzzlehttp/guzzle": "7.9.1",
"guzzlehttp/guzzle": "7.9.2",
"jarnaiz/behat-junit-formatter": "^1.3",
"sabre/dav": "4.6.0",
"symfony/event-dispatcher": "~5.4"

View File

@@ -16,7 +16,13 @@ class ServerContext implements Context {
public function __construct($baseUrl) {
$this->rawBaseUrl = $baseUrl;
$this->__tConstruct($baseUrl . '/index.php/ocs/', ['admin', 'admin'], '123456');
$testServerUrl = getenv('BEHAT_SERVER_URL');
if ($testServerUrl !== false) {
$this->rawBaseUrl = rtrim($testServerUrl, '/');
}
$this->__tConstruct($this->rawBaseUrl . '/ocs/', ['admin', 'admin'], '123456');
}

View File

@@ -27,6 +27,7 @@ use OCA\Deck\Command\BoardImport;
use OCA\Deck\Command\UserExport;
use OCA\Deck\Service\BoardService;
use OCA\Deck\Service\CardService;
use OCA\Deck\Service\CommentService;
use OCA\Deck\Service\Importer\BoardImportService;
use OCA\Deck\Service\Importer\Systems\DeckJsonService;
use OCA\Deck\Service\PermissionService;
@@ -194,6 +195,7 @@ class ImportExportTest extends \Test\TestCase {
self::getFreshService(StackMapper::class),
self::getFreshService(CardMapper::class),
self::getFreshService(AssignmentMapper::class),
self::getFreshService(CommentService::class)
);
$exporter->setApplication($application);
$exporter->run($input, $output);

View File

@@ -23,6 +23,7 @@
namespace OCA\Deck\Command;
use OC\Comments\Comment;
use OCA\Deck\Db\AssignmentMapper;
use OCA\Deck\Db\Board;
use OCA\Deck\Db\BoardMapper;
@@ -31,7 +32,9 @@ use OCA\Deck\Db\CardMapper;
use OCA\Deck\Db\Stack;
use OCA\Deck\Db\StackMapper;
use OCA\Deck\Service\BoardService;
use OCA\Deck\Service\CommentService;
use OCP\App\IAppManager;
use OCP\AppFramework\Http\DataResponse;
use OCP\IGroupManager;
use OCP\IUserManager;
use Symfony\Component\Console\Input\InputInterface;
@@ -46,6 +49,7 @@ class UserExportTest extends \Test\TestCase {
protected $assignedUserMapper;
protected $userManager;
protected $groupManager;
protected $commentService;
private UserExport $userExport;
@@ -59,7 +63,8 @@ class UserExportTest extends \Test\TestCase {
$this->assignedUserMapper = $this->createMock(AssignmentMapper::class);
$this->userManager = $this->createMock(IUserManager::class);
$this->groupManager = $this->createMock(IGroupManager::class);
$this->userExport = new UserExport($this->appManager, $this->boardMapper, $this->boardService, $this->stackMapper, $this->cardMapper, $this->assignedUserMapper, $this->userManager, $this->groupManager);
$this->commentService = $this->createMock(CommentService::class);
$this->userExport = new UserExport($this->appManager, $this->boardMapper, $this->boardService, $this->stackMapper, $this->cardMapper, $this->assignedUserMapper, $this->commentService);
}
public function getBoard($id) {
@@ -80,6 +85,13 @@ class UserExportTest extends \Test\TestCase {
$card->setTitle('Card ' . $id);
return $card;
}
public function getComment($id) {
$comment = new Comment();
$comment->setActor("users", "admin");
$comment->setMessage("fake comment" . $id);
return $comment;
}
public function testExecute() {
$input = $this->createMock(InputInterface::class);
$input->expects($this->once())->method('getArgument')->with('user-id')->willReturn('admin');
@@ -107,6 +119,13 @@ class UserExportTest extends \Test\TestCase {
$this->getCard(2),
$this->getCard(3),
];
$comments = [
$this->getComment(1),
$this->getComment(2),
$this->getComment(3),
];
$this->commentService->expects($this->exactly(count($cards) * count($stacks) * count($boards)))->method('list')->willReturn(new DataResponse($comments));
$this->cardMapper->expects($this->exactly(count($boards) * count($stacks)))
->method('findAllByStack')
->willReturn($cards);