Skip to content

Feature laravel13#214

Closed
StanBarrows wants to merge 36 commits into
mainfrom
feature-laravel13
Closed

Feature laravel13#214
StanBarrows wants to merge 36 commits into
mainfrom
feature-laravel13

Conversation

@StanBarrows

Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI review requested due to automatic review settings April 7, 2026 18:43
@StanBarrows StanBarrows closed this Apr 7, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR upgrades the package for the Laravel 13 ecosystem while expanding API coverage and making DTO/response parsing more resilient to mixed JSON shapes (list vs map), and introduces CI-friendly Saloon fixture tests alongside a separated live integration suite.

Changes:

  • Upgrade dependencies/tooling for Laravel 13 + newer Saloon/Pest/PHPUnit and refresh CI workflows and test suites.
  • Add configurable platform_path and normalize URL/path building across connector, OAuth discovery, and encrypted WebClient URLs.
  • Improve response/DTO parsing robustness (introduce JsonArrays) and add new DocuWare request implementations plus extensive integration + fixture tests.

Reviewed changes

Copilot reviewed 127 out of 174 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tests/TestCase.php Configure Saloon fixture path during testbench environment setup.
tests/Support/FixtureDocuWareConnector.php Test-only connector that bypasses OAuth via static bearer token.
tests/Pest.php Reorganize hooks for Integration tests; add processing refresh helpers.
tests/Manual/RecordGetOrganizationFixtureTest.php Manual, skipped test to record Saloon fixtures from a real tenant.
tests/Integration/Requests/Workflow/GetDocumentWorkflowHistoryTest.php Live integration test for workflow history (currently skipped).
tests/Integration/Requests/Workflow/GetDocumentWorkflowHistoryStepsTest.php Live integration test for workflow history steps (currently skipped).
tests/Integration/Requests/SelectList/GetSelectListRequest.php Live integration test for select-list listing.
tests/Integration/Requests/Search/GetSearchRequestTest.php Live integration tests for search builder behavior and constraints.
tests/Integration/Requests/Organization/GetOrganizationsRequestTest.php Live integration test for listing organizations.
tests/Integration/Requests/General/UserManagement/GetUsers/GetUsersTest.php Live integration test for listing users.
tests/Integration/Requests/General/UserManagement/GetUsers/GetUsersOfARoleTest.php Live integration test for users-by-role.
tests/Integration/Requests/General/UserManagement/GetUsers/GetUsersOfAGroupTest.php Live integration test for users-by-group.
tests/Integration/Requests/General/UserManagement/GetUsers/GetUserByIdTest.php Live integration test for fetching user by ID.
tests/Integration/Requests/General/UserManagement/GetModifyRoles/GetRolesTest.php Live integration test for listing roles.
tests/Integration/Requests/General/UserManagement/GetModifyRoles/GetAllRolesForASpecificUserTest.php Live integration test for roles for a specific user.
tests/Integration/Requests/General/UserManagement/GetModifyRoles/AddRemoveUserToARoleTest.php Live integration test for add/remove role membership.
tests/Integration/Requests/General/UserManagement/GetModifyGroups/GetGroupsTest.php Live integration test for listing groups.
tests/Integration/Requests/General/UserManagement/GetModifyGroups/GetAllGroupsForASpecificUserTest.php Live integration test for groups for a specific user.
tests/Integration/Requests/General/UserManagement/GetModifyGroups/AddRemoveUserToAGroupTest.php Live integration test for add/remove group membership.
tests/Integration/Requests/General/UserManagement/CreateUpdateUsers/CreateUpdateUserTest.php Live integration tests for creating/updating users.
tests/Integration/Requests/FileCabinets/Upload/ReplaceAPDFDocumentSectionTest.php Live integration test for replacing a PDF section.
tests/Integration/Requests/FileCabinets/Upload/AppendFilesToADataRecordTest.php Live integration tests for appending files to a record (one skipped).
tests/Integration/Requests/FileCabinets/Upload/AppendASinglePDFToADocumentTest.php Live integration test for appending a single PDF.
tests/Integration/Requests/FileCabinets/Search/GetDocumentsFromAFileCabinetTest.php Live integration test for listing documents in a cabinet.
tests/Integration/Requests/FileCabinets/Search/GetASpecificDocumentFromAFileCabinetTest.php Live integration test for fetching a specific document.
tests/Integration/Requests/FileCabinets/General/GetFileCabinetInformationTest.php Live integration test for cabinet info endpoint.
tests/Integration/Requests/FileCabinets/Dialogs/GetDialogsOfASpecificTypeTest.php Live integration test for dialogs-by-type.
tests/Integration/Requests/FileCabinets/Dialogs/GetASpecificDialogTest.php Live integration test for fetching a specific dialog.
tests/Integration/Requests/FileCabinets/Dialogs/GetAllDialogs.php Live integration test for listing all dialogs.
tests/Integration/Requests/Fields/GetFieldsRequestTest.php Live integration test for listing cabinet fields.
tests/Integration/Requests/Documents/Thumbnail/GetDocumentDownloadThumbnailRequestTest.php Live integration test for downloading thumbnails.
tests/Integration/Requests/Documents/Sections/GetTextshotTest.php Live integration test for Textshot OCR-like content.
tests/Integration/Requests/Documents/Sections/GetASpecificSectionTest.php Live integration test for fetching a section.
tests/Integration/Requests/Documents/Sections/GetAllSectionsFromADocumentTest.php Live integration test for listing sections.
tests/Integration/Requests/Documents/Sections/DeleteSectionTest.php Live integration test for deleting a section.
tests/Integration/Requests/Documents/PutDocumentFieldsRequestTest.php Live integration tests for updating index values.
tests/Integration/Requests/Documents/PostDocumentRequestTest.php Live integration tests for creating data records with/without files.
tests/Integration/Requests/Documents/GetDocumentPreviewRequestTest.php Live integration test for preview image endpoint.
tests/Integration/Requests/Documents/GetDocumentCountRequestTest.php Live integration test for document counts.
tests/Integration/Requests/Documents/Download/DownloadThumbnailTest.php Live integration test for thumbnail download DTO.
tests/Integration/Requests/Documents/Download/DownloadSectionTest.php Live integration test for downloading section content.
tests/Integration/Requests/Documents/Download/DownloadDocumentTest.php Live integration test for downloading document content.
tests/Integration/Requests/Documents/DocumentsTrashBin/RestoreDocumentsFromTrashBinTest.php Live integration test for trash restore.
tests/Integration/Requests/Documents/DocumentsTrashBin/GetDocumentsFromTrashBinTest.php Live integration tests for trash search variations.
tests/Integration/Requests/Documents/DocumentsTrashBin/DeleteDocumentsFromTrashBinTest.php Live integration test for trash delete.
tests/Integration/Requests/Documents/ClipUnclipStapleUnstaple/UnstapleTest.php Live integration test for unstaple operation.
tests/Integration/Requests/Documents/ClipUnclipStapleUnstaple/UnclipTest.php Live integration test for unclip operation.
tests/Integration/Requests/Documents/ClipUnclipStapleUnstaple/StapleTest.php Live integration test for staple operation.
tests/Integration/Requests/Documents/ClipUnclipStapleUnstaple/ClipTest.php Live integration test for clip operation.
tests/Integration/Requests/Documents/ApplicationProperties/ApplicationPropertiesTest.php Live integration test for application properties CRUD.
tests/Integration/DocuWareTest.php Update encrypted URL assertions to respect configurable platform path.
tests/Integration/DocuWareAuthenticationTest.php Add authentication/OAuth discovery and credential tests.
tests/Fixtures/saloon/get-organization.json Recorded Saloon fixture for organization listing.
tests/Feature/SaloonFixtures/GetOrganizationFixtureTest.php CI-friendly feature test that maps DTOs from Saloon fixture files.
src/Support/ParseValue.php Harden field/table parsing against unexpected JSON shapes.
src/Support/JsonArrays.php New helper to normalize JSON arrays/maps to predictable structures.
src/Support/Auth.php Tighten cached cookie typing/guarding to avoid non-array cache values.
src/Responses/Workflow/GetDocumentWorkflowHistoryResponse.php Normalize history list handling via JsonArrays.
src/Responses/Search/GetTrashSearchResponse.php Add strict typing for pagination args.
src/Responses/Search/GetSearchResponse.php Add strict typing for pagination args.
src/Responses/General/UserManagement/GetUsers/GetUsersResponse.php Normalize user list handling via JsonArrays.
src/Responses/General/UserManagement/GetModifyRoles/GetRolesResponse.php Normalize roles list handling via JsonArrays.
src/Responses/General/UserManagement/GetModifyGroups/GetGroupsResponse.php Normalize groups list handling via JsonArrays.
src/Responses/General/Organization/GetOrganizationResponse.php Normalize org list handling via JsonArrays.
src/Responses/General/Organization/GetAllFileCabinetsAndDocumentTraysResponse.php Normalize cabinet/tray list handling via JsonArrays.
src/Responses/FileCabinets/Search/GetDocumentsFromAFileCabinetResponse.php Add strict typing for page/per-page defaults.
src/Responses/FileCabinets/Dialogs/GetAllDialogsResponse.php Normalize dialogs list handling via JsonArrays.
src/Responses/Fields/GetFieldsResponse.php Normalize fields list handling via JsonArrays.
src/Responses/Documents/UpdateIndexValues/UpdateIndexValuesResponse.php Normalize returned fields list handling via JsonArrays.
src/Responses/Documents/Sections/GetAllSectionsFromADocumentResponse.php Normalize sections list handling via JsonArrays.
src/Responses/Documents/ApplicationProperties/GetApplicationPropertiesResponse.php Normalize application properties list handling via JsonArrays.
src/Requests/Workflow/GetDocumentWorkflowHistory.php Add explicit DTO return typing annotations.
src/Requests/Search/GetSearchRequest.php Improve constructor/body typing annotations.
src/Requests/General/UserManagement/GetUsers/GetUsersOfARole.php Tighten response typing to Collection<int, User>.
src/Requests/General/UserManagement/GetUsers/GetUsersOfAGroup.php Tighten response typing to Collection<int, User>.
src/Requests/General/UserManagement/GetUsers/GetUsers.php Tighten response typing to Collection<int, User>.
src/Requests/General/UserManagement/GetModifyRoles/RemoveUserFromARole.php Add payload typing annotations.
src/Requests/General/UserManagement/GetModifyRoles/GetRoles.php Tighten response typing to Collection<int, Role>.
src/Requests/General/UserManagement/GetModifyRoles/GetAllRolesForASpecificUser.php Tighten response typing to Collection<int, Role>.
src/Requests/General/UserManagement/GetModifyRoles/AddUserToARole.php Add payload typing annotations.
src/Requests/General/UserManagement/GetModifyGroups/RemoveUserFromAGroup.php Add payload typing annotations.
src/Requests/General/UserManagement/GetModifyGroups/GetGroups.php Tighten response typing to Collection<int, Group>.
src/Requests/General/UserManagement/GetModifyGroups/GetAllGroupsForASpecificUser.php Tighten response typing to Collection<int, Group>.
src/Requests/General/UserManagement/GetModifyGroups/AddUserToAGroup.php Add payload typing annotations.
src/Requests/General/UserManagement/CreateUpdateUsers/UpdateUser.php Add body typing annotations.
src/Requests/General/UserManagement/CreateUpdateUsers/CreateUser.php Add body typing annotations.
src/Requests/General/Organization/GetOrganization.php Tighten response typing to Collection<int, Organization>.
src/Requests/General/Organization/GetLoginToken.php Add body typing annotations.
src/Requests/General/Organization/GetAllFileCabinetsAndDocumentTrays.php Tighten response typing to Collection<int, FileCabinet>.
src/Requests/FileCabinets/Upload/ReplaceAPDFDocumentSection.php Clarify multipart body return type.
src/Requests/FileCabinets/Upload/CreateDataRecord.php Add optional storeDialogId and multipart/body typing.
src/Requests/FileCabinets/Upload/AppendFilesToADataRecord.php Add multipart/body typing for MultipartValue collections.
src/Requests/FileCabinets/Upload/AppendASinglePDFToADocument.php Clarify multipart body return type.
src/Requests/FileCabinets/Search/GetDocumentsFromAFileCabinet.php Add constructor typing annotations for fields list.
src/Requests/FileCabinets/CheckInCheckOut/UndoDocumentCheckout.php New request to undo checkout via ProcessDocumentAction.
src/Requests/FileCabinets/CheckInCheckOut/CheckoutDocumentToFileSystem.php New request to checkout a document to the filesystem.
src/Requests/FileCabinets/CheckInCheckOut/CheckInDocumentFromFileSystem.php New multipart request to check-in a document from filesystem.
src/Requests/FileCabinets/Batch/BatchDocumentsUpdateFields.php New request for batch update fields operation.
src/Requests/Fields/GetFieldsRequest.php Tighten response typing to Collection<int, Field>.
src/Requests/Documents/UpdateIndexValues/UpdateIndexValues.php Expand index DTO typing and clarify body/DTO return types.
src/Requests/Documents/Stamps/GetStamps.php New request to list stamps for a cabinet.
src/Requests/Documents/Stamps/AddDocumentAnnotations.php New request for adding stamp/annotation payloads.
src/Requests/Documents/Sections/GetAllSectionsFromADocument.php Tighten response typing to Collection<int, Section>.
src/Requests/Documents/ModifyDocuments/TransferDocument.php Fix Arr import and add typing annotations.
src/Requests/Documents/DocumentsTrashBin/RestoreDocuments.php Add constructor/body typing annotations.
src/Requests/Documents/DocumentsTrashBin/GetDocuments.php Add constructor/body typing annotations.
src/Requests/Documents/DocumentsTrashBin/DeleteDocuments.php Add constructor/body typing annotations.
src/Requests/Documents/ClipUnclipStapleUnstaple/Unstaple.php Add body typing annotations.
src/Requests/Documents/ClipUnclipStapleUnstaple/Unclip.php Add body typing annotations.
src/Requests/Documents/ClipUnclipStapleUnstaple/Staple.php Add constructor/body typing annotations.
src/Requests/Documents/ClipUnclipStapleUnstaple/Clip.php Add constructor/body typing annotations.
src/Requests/Documents/ApplicationProperties/UpdateApplicationProperties.php Add body typing + property list typing.
src/Requests/Documents/ApplicationProperties/DeleteApplicationProperties.php Add body typing + property name typing.
src/Requests/Documents/ApplicationProperties/AddApplicationProperties.php Add body typing + property list typing.
src/Requests/Authentication/OAuth/RequestTokenWithCredentialsTrustedUser.php Add body typing annotations.
src/Requests/Authentication/OAuth/RequestTokenWithCredentials.php Add body typing annotations.
src/Requests/Authentication/OAuth/GetResponsibleIdentityService.php Respect configurable platform path in discovery endpoint.
src/Facades/DocuWare.php Refine facade docblock generics/array typing.
src/DTO/Workflow/InstanceHistory.php Normalize history steps parsing via JsonArrays.
src/DTO/Workflow/HistoryStep.php Normalize Info.Item parsing for list vs map JSON shapes.
src/DTO/TextshotPage.php Normalize Textshot item parsing + tighten callback typing.
src/DTO/Textshot.php Normalize pages parsing via JsonArrays.
src/DTO/SuggestionField.php Add docblocks for JSON typing.
src/DTO/Section.php Add docblocks for JSON typing.
src/DTO/General/UserManagement/GetUsers/User.php Add docblocks for JSON typing.
src/DTO/General/UserManagement/GetUsers/RegionalSettings.php Add docblocks for JSON typing.
src/DTO/General/UserManagement/GetUsers/OutOfOffice.php Add docblocks for JSON typing.
src/DTO/General/UserManagement/GetModifyRoles/Role.php Add docblocks for JSON typing.
src/DTO/General/UserManagement/GetModifyGroups/Group.php Add docblocks for JSON typing.
src/DTO/General/UserManagement/CreateUpdateUser/User.php Add docblocks for JSON typing.
src/DTO/General/Organization/OrganizationIndex.php Add docblocks for JSON typing.
src/DTO/General/Organization/Organization.php Add docblocks for JSON typing + ctor arg typing notes.
src/DTO/General/Organization/FileCabinet.php Add docblocks for JSON typing.
src/DTO/FileCabinets/General/FileCabinetInformation.php Add docblocks for JSON typing.
src/DTO/FileCabinets/Dialog.php Normalize Fields to list-of-records or null.
src/DTO/FileCabinets/CheckoutToFileSystemResult.php New DTO to parse checkout-to-filesystem response.
src/DTO/Documents/TrashDocumentPaginator.php Harden header/row mapping against mixed JSON shapes.
src/DTO/Documents/TableRow.php Normalize table field parsing via JsonArrays.
src/DTO/Documents/Field.php Add docblocks for JSON typing.
src/DTO/Documents/DocumentThumbnail.php Add docblocks for JSON typing.
src/DTO/Documents/DocumentsTrashBin/RestoreDocuments.php Normalize failed-items list via JsonArrays.
src/DTO/Documents/DocumentsTrashBin/DeleteDocuments.php Normalize failed-items list via JsonArrays.
src/DTO/Documents/DocumentPaginator.php Harden items parsing against mixed JSON shapes.
src/DTO/Documents/DocumentIndex/PrepareDTO.php Add docblocks for index DTO collection typing.
src/DTO/Documents/DocumentIndex/IndexTextDTO.php Add return type docblock for values payload.
src/DTO/Documents/DocumentIndex/IndexTableDTO.php Harden row shaping (array vs collection) + add typing docs.
src/DTO/Documents/DocumentIndex/IndexNumericDTO.php Add return type docblock for values payload.
src/DTO/Documents/DocumentIndex/IndexMemoDTO.php Add return type docblock for values payload.
src/DTO/Documents/DocumentIndex/IndexKeywordDTO.php Add return type docblock for values payload.
src/DTO/Documents/DocumentIndex/IndexDetectDTO.php Add explicit union return type.
src/DTO/Documents/DocumentIndex/IndexDecimalDTO.php Add return type docblock for values payload.
src/DTO/Documents/DocumentIndex/IndexDateTimeDTO.php Tighten fallback return typing and add values payload docblock.
src/DTO/Documents/DocumentIndex/IndexDateDTO.php Tighten fallback return typing and add values payload docblock.
src/DTO/Documents/DocumentField.php Add docblocks for JSON typing and value union typing.
src/DTO/Documents/Document.php Normalize nested arrays with JsonArrays and harden extension extraction.
src/DTO/Authentication/OAuth/ResponsibleIdentityService.php Add docblocks for JSON typing.
src/DTO/Authentication/OAuth/RequestToken.php Add docblocks for JSON typing.
src/DTO/Authentication/OAuth/IdentityServiceConfiguration.php Normalize string lists and add helper to coerce list values.
src/DocuWareUrl.php Use configurable platform path + URL normalization for WebClient URLs.
src/DocuWareSearchRequestBuilder.php Tighten typing and filter handling; expand docs.
src/Connectors/DocuWareConnector.php Normalize base URL via platform path; refactor token caching/validation.
README.md Document platform path, parity matrix, fixture recording, and test suites.
phpunit.xml.dist Split test suites (default vs integration) and update schema/versioning.
phpstan.neon.dist Raise PHPStan level from 5 to 6.
docs/postman-parity.md New endpoint parity matrix vs DocuWare Postman collection.
config/laravel-docuware.php Add platform_path and extra test config keys.
composer.json Upgrade Laravel/Saloon/Pest/Testbench constraints; add test suite scripts.
.github/workflows/run-tests.yml Update matrix (Laravel 13, newer PHP) + workflow adjustments.
.github/workflows/phpstan.yml Bump PHP version and update workflow steps.
.github/workflows/fix-php-code-style-issues.yml Switch to explicit PHP setup + composer install + pint run.
.github/workflows/dependabot-auto-merge.yml Update fetch-metadata action version + node runtime env flag.
.github/workflows/composer-audit.yml Bump PHP version used for composer audit.
.github/ISSUE_TEMPLATE/bug_report.yml Update default PHP/Laravel version placeholders.
.env.example Add DocuWare env var mapping table and expanded test env vars.
Comments suppressed due to low confidence (1)

src/DocuWareSearchRequestBuilder.php:269

  • array_search can return 0 when the operator is the first element; the current if ($operatorFilterIndex = array_search(...)) will treat that as false and skip unsetting the existing filter. Use a strict comparison (!== false) so date filters can be overridden reliably.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants