aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/UnitTestCase.php
Commit message (Collapse)AuthorAgeFilesLines
* Fix test db setup on MySQL/Mariadb + changed defaultHarald Eilertsen2024-03-141-2/+2
|
* include/dba: Make Dba driver transaction aware.Harald Eilertsen2024-02-261-32/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch introduced database transaction support to the Dba driver via the DbaTransaction class. The goal of this is to allow the driver control over the creation and finalization of database transactions. Until now code that has needed transaction support has done so directly by issuing "BEGIN", "ROLLBACK" and "COMMIT" commands to the underlying database directly. This has several disadvantages: - We do have no control or knowledge of whether any transactions being active. - Since transactions can not be nested, we run the risk of unrelated code trying to create a transaction when one is already active. - Code using transactions are not testable, as the test runner wraps all tests within a transaction to begin with. This patch should eliminate all these problems. A transaction is started by instantiating the DbaTransaction class: $my_transaction = new \DbaTransaction(); The transaction will automatically be _rolled back_ if it has not been committed before the instance is destroyed. (When the variable holding it goes out of scope, i.e when the containing function returns.) A transaction is committed like this: $my_transaction->commit(); This will immediately commit the changes in the transaction, and the transaction will be marked as committed, so it will not be attempted to be rolled back on destruction. I have chosen to "ignore" the problem of nested transactions by having the DbaTransaction class _not_ initiate a new transaction if one is already active. This also makes the rollback and commit actions of the DbaTransaction class into no-ops. An alternative would be to simulate nested transactions by using save points if a transaction is already active. However, I'm unsure about wether there's any safe way to avoid all potential pitfalls when doing that. In any case, nested transactions should preferably be avoided, and afaict we don't rely on that in any of the existing code. The reason we need to support it in some way is that it's needed for testing where the code under test is creating a transaction on it's own. (Since each test is run within a db transaction to begin with.) Also, I have taken the liberty to assume a PDO based db driver for this stuff. I don't think that's going to be a problem, as that's the only thing supported by the rest of the code in any case.
* tests: Enable debug logging during testsHarald Eilertsen2024-01-151-0/+2
| | | | | | The debug log will be stored in the test/results directory, and archived as part of the artifacts of the CI run. This should make it easier to get some debugging info out from the CI runs if they fail.
* tests: Set app config in a known state for each testHarald Eilertsen2024-01-081-1/+4
|
* tests: Clean up unused debug stuff from UnitTestCaseHarald Eilertsen2024-01-081-5/+0
|
* Remove behat as dev dependency.Harald Eilertsen2024-01-071-2/+1
| | | | | | | | | As the Symphony\Yaml stuff disappeared with behat, we need another way to load read the yaml files with database fixtures for the integration tests. As the php yaml extension is not distributed with PHP by default, this creates it as another dev dependency!
* tests: Integrate the DB in "unit" tests.Harald Eilertsen2024-01-061-2/+93
|
* Unit tests: Book Hubzilla to make app env available in tests.Harald Eilertsen2023-06-141-0/+6
| | | | | Not quite unit test clean, but a somewhat pragmatic approach to make the tests pass as is.
* [TASK] Restructure tests/ folder.Klaus Weidenbach2016-10-191-0/+38
Move unit tests to tests/unit/. Get the old still working UnitTests into a working state again. Updated composer.json with required-dev packages. Create a new folder tests/acceptance for Behat functional/acceptance testing. Add a first Feature draft of a Behat functional test for local login.