liqd / adhocracy4

The core library for the e-participation projects by Liquid Democracy
https://liqd.net/software
GNU Affero General Public License v3.0
100 stars 16 forks source link

Fix Deprecation Warnings in tests for the next release #1671

Open m4ra opened 2 months ago

m4ra commented 2 months ago

A list of items that need to be fixed from the warnings we get when we run the tests from the root directory:

py.test tests --reuse-db

active_phase is deprecated, use active_phase_ends_next or active_module_ends_next in the following test: adhocracy4/adhocracy4/projects/models.py:574

using is_prj_group_member with an item is deprecated; use is_context_group_member from module predicates instead. adhocracy4/adhocracy4/projects/predicates.py:10

tests/projects/test_project_models.py::test_delete_project

.pyenv/versions/3.10.0/envs/a4/lib/python3.10/site-packages/easy_thumbnails/storage.py:27: RemovedInDjango51Warning: django.core.files.storage.get_storage_class is deprecated in favor of using django.core.files.storage.storages.

.pyenv/versions/3.10.0/envs/a4/lib/python3.10/site-packages/factory/django.py:181: DeprecationWarning: TopicFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release. If the save call is extraneous, set skip_postgeneration_save=True in the TopicFactory.Meta. To keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.

.pyenv/versions/3.10.0/envs/a4/lib/python3.10/site-packages/factory/django.py:181: DeprecationWarning: ProjectFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release. If the save call is extraneous, set skip_postgeneration_save=True in the ProjectFactory.Meta. To keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.

.pyenv/versions/3.10.0/envs/a4/lib/python3.10/site-packages/factory/django.py:181: DeprecationWarning: UserFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release. If the save call is extraneous, set skip_postgeneration_save=True in the UserFactory.Meta. To keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.

.pyenv/versions/3.10.0/envs/a4/lib/python3.10/site-packages/factory/django.py:181: DeprecationWarning: OrganisationFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release. If the save call is extraneous, set skip_postgeneration_save=True in the OrganisationFactory.Meta. To keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.

m4ra commented 1 month ago

@rjlanari is this something you would like to work on? The two first items describe the solution inside the quoted text by pointing the file that needs to be edited and what should be changed. So those two fixes are relative easy.

The rest of the items that have to do with factories need some changes in their related fields (ForeignKey field of a Model). Factories are a method to create data and populate the testing database. The Topic and Project models are related. See class Topic and class Project here.
So their respective factories TopicFactory and ProjectFactory need to be related too. Same with the User and Organisation factories.
All these factories are bundled in this file. The relation is marked with a SubFactory How to handle relations in factories has changed in the current version of the factory package. Thus why we receive these warnings. How to do subfactories from now on, it is explained here. However if you haven't looked into Django model relations before, I suggest you start from here, before looking into factories. Have a look and see how far you can go with this.