CSR-LC / csr-be

Back-end application for CSR project
0 stars 1 forks source link

Isolate tests in suite. Fix unstable tests #77

Closed wvxiw8 closed 3 months ago

wvxiw8 commented 3 months ago

The equipment_tests.go are often fail (10-20%). There were 2 kind errors

--- FAIL: TestEquipmentSuite (0.51s)
    --- FAIL: TestEquipmentSuite/TestEquipmentRepository_UnblockEquipment (0.03s)
        equipment_test.go:677:
                Error Trace:    /Users/m/wrk/proj/epam/csr-be3/internal/repositories/equipment_test.go:677
                Error:          Should be empty, but was [EquipmentStatus(id=19, comment=, created_at=Tue Jul  9 14:31:43 2024, updated_at=Tue Jul  9 14:31:43 2024, start_date=Tue Jul  9 14:31:44 2024, end_date=Wed Jul 10 14:31:44 2024)]
                Test:           TestEquipmentSuite/TestEquipmentRepository_UnblockEquipment
FAIL

and

--- FAIL: TestEquipmentSuite (0.07s)
    --- FAIL: TestEquipmentSuite/TestEquipmentRepository_BlockEquipment (0.01s)
        equipment_test.go:627:
                Error Trace:    /Users/m/wrk/proj/epam/csr-be3/internal/repositories/equipment_test.go:627
                Error:          Should not be: "not available"
                Test:           TestEquipmentSuite/TestEquipmentRepository_BlockEquipment
    --- FAIL: TestEquipmentSuite/TestEquipmentRepository_FindEquipmentsLimit (0.00s)
        enttest.go:81: sql/sqlite: querying 'foreign_key_check' pragma: scanning rows: database table is locked: orders
    --- FAIL: TestEquipmentSuite/TestEquipmentRepository_FindEquipmentsOffset (0.00s)
        enttest.go:81: sql/sqlite: querying 'foreign_key_check' pragma: scanning rows: database table is locked: orders
    --- FAIL: TestEquipmentSuite/TestEquipmentRepository_FindEquipmentsOrderByTitleDesc (0.00s)
        enttest.go:81: sql/sqlite: querying 'foreign_key_check' pragma: scanning rows: database table is locked: orders
    --- FAIL: TestEquipmentSuite/TestEquipmentRepository_FindEquipmentsTotal (0.00s)
        enttest.go:81: sql/sqlite: querying 'foreign_key_check' pragma: scanning rows: database table is locked: orders
    --- FAIL: TestEquipmentSuite/TestEquipmentRepository_UnblockEquipment (0.00s)
        enttest.go:81: sql/sqlite: querying 'foreign_key_check' pragma: scanning rows: database table is locked: orders
FAIL

To solve

  1. Pick an exact equipment (by title), not the first one, which was random and lead to fail.
  2. Using TearDownTest() instead of TearDownSuite() in order to isolate the tests by dropping the database after each test.

To test the fix I ran all the tests (make tests) locally for 30 times. No fails happened.