Problem z załadowaniem testowych fixtur do testów

0

Zapisuje modele do fixtur... nastepnie te fixtury staram sie załadować w testach i otrzymuje następujący błąd:

django.db.utils.IntegrityError: Problem installing fixtures: The row in table 'monkeyShop_shopuser' with primary key '26' has an invalid foreign key: monkeyShop_shopuser.user_ptr_id contains a value '26' that does not have a corresponding value in auth_user.id.

Mam taki model dziedziczący po Userze.... i to on zwraca błąd. Ma ktoś jakis pomysl?

class ShopUser(User):
    address = models.CharField(max_length=1000, blank=True)
    postCode = models.CharField(max_length=1000, blank=True)
    city = models.CharField(max_length=1000, blank=True)
    phoneNumber = models.CharField(max_length=20, blank=True)
    cart = models.ForeignKey(Cart, on_delete=models.CASCADE, related_name="customer", blank=True, null=True)

    def save(self, *args, **kwargs):
        self.username = self.email
        super(ShopUser, self).save()
0

A te dane generujesz czy z palca piszesz, bo błąd wskazuje, że nie dodałeś wystarczającej ilości danych, albo źle id nadales

0
Dregorio napisał(a):

A te dane generujesz czy z palca piszesz, bo błąd wskazuje, że nie dodałeś wystarczającej ilości danych, albo źle id nadales

taki blad mam w konsoli jak ponizej.... a dane do fixtur zapisuje z dbsqlite3 do pliku xml i potem staram sie załadować ponownie przy testach

(venv) hubert@developer:~/monkey-shop.pl$ make test
. venv/bin/activate && python3 manage.py test apps.monkeyShop
Found 1 test(s).
Creating test database for alias 'default'...
/home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/db/models/fields/__init__.py:1564: RuntimeWarning: DateTimeField Produkt.data_dodania received a naive datetime (2023-10-26 18:08:03.970982) while time zone support is active.
  warnings.warn(
System check identified no issues (0 silenced).
E
======================================================================
ERROR: setUpClass (apps.monkeyShop.tests.MonkeyShop_Test)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/test/testcases.py", line 1438, in setUpClass
    call_command(
  File "/home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 198, in call_command
    return command.execute(*args, **defaults)
  File "/home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/core/management/base.py", line 448, in execute
    output = self.handle(*args, **options)
  File "/home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/core/management/commands/loaddata.py", line 102, in handle
    self.loaddata(fixture_labels)
  File "/home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/core/management/commands/loaddata.py", line 171, in loaddata
    connection.check_constraints(table_names=table_names)
  File "/home/hubert/monkey-shop.pl/venv/lib/python3.10/site-packages/django/db/backends/sqlite3/base.py", line 264, in check_constraints
    raise IntegrityError(
django.db.utils.IntegrityError: Problem installing fixtures: The row in table 'monkeyShop_shopuser' with primary key '26' has an invalid foreign key: monkeyShop_shopuser.user_ptr_id contains a value '26' that does not have a corresponding value in auth_user.id.

----------------------------------------------------------------------
Ran 0 tests in 0.055s

FAILED (errors=1)
Destroying test database for alias 'default'...
make: *** [Makefile:52: test] Błąd 1
0

Sprawdź tam dokłądnie, czy przy konwertowaniu z, do xml, coś się nie popsuło. Co w ogóle baza robi w teście, nie lepiej jakiś Fake adapter w testach wstrzykiwać?

0

Nic sie nie popsulo. Eksportuje do plikow xml poprawnie. Bazy danych nie przenosze do testów tylko pliki xml ładuje na poczatku testów, żeby miec dane na ktorych mozna operować.

0

Rozwiązałem problem.... przyczyną było to, że nie ładowałem drugiego pliku auth.xml w którym są zapisani userzy... teraz ładuje 2 pliki, najpierw dla users i wszystko działa poprawnie

1 użytkowników online, w tym zalogowanych: 0, gości: 1