kitodo-presentation icon indicating copy to clipboard operation
kitodo-presentation copied to clipboard

[FUND] Add tests and significantly improve test coverage

Open sebastian-meyer opened this issue 3 years ago • 6 comments

Description

Currently Kitodo.Presentation barely has any (unit) tests, so implementing new features and making sure that nothing broke is very tedious and time consuming - not only for developers but for the release management as well. This proposal suggests to write a lot of tests and significantly improve test coverage for Kitodo.Presentation.

Related Issues

None.

Expected Benefits of this Development

Test-driven development ensures that developing new features, updating components or re-factoring code doesn't break anything (or at least makes obvious what broke). This is especially important for older projects with a large and complex code base, since it's impossible for a single developer to know every constraint and dependency. Having tests would therefor improve code quality, make development easier and help testing and reviewing pull requests for the release management.

Estimated Costs and Complexity

Writing tests is not a complex, but a rather time-consuming task, so I'd estimate this to be of high cost and low complexity.

sebastian-meyer avatar Mar 09 '22 16:03 sebastian-meyer

Priority 1

  • [ ] Classes/Command/BaseCommand.php->saveToDatabase()
  • [ ] Classes/Common/Doc.php
  • [ ] Classes/Common/FulltextInterface.php
  • [x] Classes/Common/Helper.php
  • [ ] ~~Classes/Common/IiifManifest.php~~
  • [x] Classes/Common/IiifUrlReader.php
  • [ ] Classes/Common/Indexer.php
  • [ ] Classes/Common/MetadataInterface.php
  • [x] Classes/Common/MetsDocument.php
  • [ ] Classes/Common/Solr.php
  • [ ] Classes/Common/SolrPaginator.php
  • [ ] Classes/Common/SolrSearch.php
  • [ ] Classes/Common/SolrSearchQuery.php
  • [ ] Classes/Controller/Backend/NewTenantController.php
  • [ ] Classes/Controller/AbstractController.php
  • [ ] Classes/Controller/AudioPlayerController.php
  • [ ] Classes/Controller/BasketController.php
  • [ ] Classes/Controller/CalendarController.php
  • [ ] Classes/Controller/CollectionController.php
  • [ ] Classes/Controller/FeedsController.php
  • [ ] Classes/Controller/ListViewController.php
  • [ ] Classes/Controller/MetadataController.php
  • [ ] Classes/Controller/NavigationController.php
  • [x] Classes/Controller/OaiPmhController.php
  • [ ] Classes/Controller/PageGridController.php
  • [ ] Classes/Controller/PageViewController.php
  • [ ] Classes/Controller/SearchController.php
  • [ ] Classes/Controller/StatisticsController.php
  • [ ] Classes/Controller/TableOfContentsController.php
  • [ ] Classes/Controller/ToolboxController.php
  • [ ] Classes/Controller/View3DController.php
  • [ ] ~~Classes/Domain/Repository/ActionLogRepository.php~~
  • [ ] ~~Classes/Domain/Repository/BasketRepository.php~~
  • [x] Classes/Domain/Repository/CollectionRepository.php
  • [x] Classes/Domain/Repository/DocumentRepository.php
  • [ ] ~~Classes/Domain/Repository/FormatRepository.php~~
  • [ ] ~~Classes/Domain/Repository/LibraryRepository.php~~
  • [x] Classes/Domain/Repository/MailRepository.php
  • [ ] ~~Classes/Domain/Repository/MetadataFormatRepository.php~~
  • [x] Classes/Domain/Repository/MetadataRepository.php
  • [ ] ~~Classes/Domain/Repository/PrinterRepository.php~~
  • [ ] ~~Classes/Domain/Repository/SolrCoreRepository.php~~
  • [ ] ~~Classes/Domain/Repository/StructureRepository.php~~
  • [x] Classes/Domain/Repository/TokenRepository.php
  • [x] Classes/Format/Alto.php
  • [x] Classes/Format/AudioVideoMD.php
  • [x] Classes/Format/Mods.php
  • [x] Classes/Format/TeiHeader.php
  • [ ] Classes/Hooks/DataHandler.php
  • [ ] Classes/Hooks/ItemsProcFunc.php

Priority 2

  • [ ] Classes/Api/Orcid/Client.php
  • [ ] Classes/Api/Orcid/Profile.php
  • [ ] Classes/Api/Viaf/Client.php
  • [ ] Classes/Api/Viaf/Profile.php
  • [ ] Classes/Command/HarvestCommand.php
  • [ ] Classes/Command/IndexCommand.php
  • [ ] Classes/Command/ReindexCommand.php
  • [ ] Classes/Common/SolrSearchResult/Highlight.php
  • [ ] Classes/Common/SolrSearchResult/Page.php
  • [ ] Classes/Common/SolrSearchResult/Region.php
  • [ ] Classes/Common/SolrSearchResult/ResultDocument.php
  • [ ] Classes/Domain/Model/ActionLog.php
  • [ ] Classes/Domain/Model/Basket.php
  • [ ] Classes/Domain/Model/Collection.php
  • [ ] Classes/Domain/Model/Document.php
  • [ ] Classes/Domain/Model/Format.php
  • [ ] Classes/Domain/Model/Library.php
  • [ ] Classes/Domain/Model/Mail.php
  • [ ] Classes/Domain/Model/Metadata.php
  • [ ] Classes/Domain/Model/MetadataFormat.php
  • [ ] Classes/Domain/Model/PageSelectForm.php
  • [ ] Classes/Domain/Model/Printer.php
  • [ ] Classes/Domain/Model/SolrCore.php
  • [ ] Classes/Domain/Model/Structure.php
  • [ ] Classes/Domain/Model/Token.php
  • [x] Classes/Eid/PageViewProxy.php
  • [ ] Classes/Eid/SearchInDocument.php
  • [ ] Classes/Eid/SearchSuggest.php
  • [ ] Classes/ExpressionLanguage/DocumentTypeFunctionProvider.php
  • [ ] Classes/ExpressionLanguage/DocumentTypeProvider.php
  • [ ] Classes/Hooks/ConfigurationForm.php
  • [ ] Classes/Hooks/ThumbnailCustomElement.php
  • [ ] Classes/Pagination/PageGridPagination.php
  • [ ] Classes/Pagination/PageGridPaginator.php
  • [x] Classes/ViewHelpers/JsFooterViewHelper.php
  • [x] Classes/ViewHelpers/MetadataWrapVariableViewHelper.php
  • [x] Classes/ViewHelpers/StdWrapViewHelper.php

Priority 3

  • [ ] Classes/Common/KitodoFlashMessageRenderer.php
  • [ ] Classes/Common/StdOutStream.php
  • [ ] Classes/Hooks/Form/FieldInformation/EditInProductionWarning.php
  • [ ] Classes/Hooks/Form/FieldInformation/SolrCoreStatus.php
  • [ ] Classes/Hooks/KitodoProductionHacks.php
  • [ ] Classes/Updates/FileLocationUpdater.php
  • [ ] Classes/Updates/MigrateSettings.php

sebastian-meyer avatar Mar 01 '23 20:03 sebastian-meyer

  • [x] #894
  • [x] #895
  • [x] #902
  • [x] #909
  • [x] #919
  • [x] #953
  • [ ] #954
  • [ ] #966

sebastian-meyer avatar Oct 26 '23 17:10 sebastian-meyer