From 4acbb84c05a5ebd0288b6a2aaba0e3e579b2b376 Mon Sep 17 00:00:00 2001 From: ebby Date: Sat, 12 Sep 2026 21:27:01 +0300 Subject: [PATCH] fixed tests --- .../backend/__pycache__/main.cpython-314.pyc | Bin 992 -> 848 bytes .../__pycache__/user_code_gen.cpython-314.pyc | Bin 0 -> 731 bytes backend/src/backend/internal/user_code_gen.py | 4 ++ backend/src/backend/main.py | 4 +- .../models/__pycache__/user.cpython-314.pyc | Bin 2119 -> 2262 bytes backend/src/backend/models/user.py | 5 ++- .../test_users.cpython-314-pytest-9.1.1.pyc | Bin 4928 -> 8804 bytes backend/src/backend/routers/test_users.py | 37 +++++++++++------- 8 files changed, 32 insertions(+), 18 deletions(-) create mode 100644 backend/src/backend/internal/__pycache__/user_code_gen.cpython-314.pyc create mode 100644 backend/src/backend/internal/user_code_gen.py diff --git a/backend/src/backend/__pycache__/main.cpython-314.pyc b/backend/src/backend/__pycache__/main.cpython-314.pyc index 1f02bd32516df250038db52df4e3dc14aa3eeb20..a322364200022b8690b8ff637dd4221ca7537de6 100644 GIT binary patch delta 109 zcmaFBet}Ixn~#@^fq{WRVdB!PnT!k!k3k$5V1_b2|6!P@@oRG#qckHU|Kv$bjVeVv u3=9lKydZ*)fq~%`hfQvNN@-52U6BL>0|O%i14D7@_JCbOn~#@^fq{YHY{$~9LyQazk3k$5V1Y6|2QW_5_~jhSugDO~7@z=?Mt}e% z1RDkdRADRxFxf1~sKdx8JlT$^QT`TdK~ZL2$t{lD)RM%M#FE5YY$b_FIjP0BSh7h6Dpl zNC>G5BMkfp{25e5DqKgVZlDZZ(dXJppXBeJf4pbEciysAhg#YyP~a--2vY@Cc#tA0DukxdDs9jzgv2|fPwYkEkI%e z+=gdt%tF?$9t8-<#X2U9aZ%_3rO%A5H2TcAFLRv6T9I?p^n-Ce6@eHIcZ27Aj3OQC zRPk{z!+avRR>7mJ5U*k_aG2$zU>NfqA(KEMU+`3Ffilj5LJ5p`o``59&Y)jc3_a(}tN$wLoRg6|AbpIvHWE@GRkY|2Z`M_9l&ODtjSubj?N6<}&d1J| zdxy=|ezWy`{pa str: + return ''.join(random.choices(string.ascii_letters, k=4)).upper() diff --git a/backend/src/backend/main.py b/backend/src/backend/main.py index e9892ce..9a5062d 100644 --- a/backend/src/backend/main.py +++ b/backend/src/backend/main.py @@ -17,6 +17,4 @@ def on_startup(): router = APIRouter() app.include_router(users.router) -app.include_router(comments.router) - -print(SQLModel.metadata.tables.keys()) +app.include_router(comments.router) \ No newline at end of file diff --git a/backend/src/backend/models/__pycache__/user.cpython-314.pyc b/backend/src/backend/models/__pycache__/user.cpython-314.pyc index 69ea8e676ec4b2f68f5a981ff18374ddb9acd629..14759830fdea58084ba16219ea5d2c53d875b291 100644 GIT binary patch delta 968 zcmZuvO-oc^6n@_Oedo@nqh29VM}?Y1#S)|sBM@osKoU1GgvMcCc(uP%;q%fQ6^e zZ<_K}vTOYffO}Yg%N!IKXT20lj#QAj9L2JuaAg6m;;03UYZ0e9dcojE6l;!NFu57U zx}z6jJl2bncAUllsOdmA^)wu-5a;n;bRY-UwBg1|vGH}eRmKw$ZP{?+rG%SslM~8e zCRviBT*`)pY8#Gi;f~#WQxj#{v)#!~ujVfQR^^7(rXai*D&8ONmR; zT(J~$nX61lha#<#lKUqqUP|QPs;)M{j+U6iY3AxS>IP4_22am{XIygt`Iz`2jhT5V z=%f){Vo3hQOkpdRSyp(;AWMnI$~jgPZKD$4C+ev2VQBKz?5B>RcO zqVXN#yE@KnVQVj0R=n4G)@>?30pMU0_wmh2ZWMP_Ft)3~N^Us2I>iRE_D7|2&je#F zH(Pt?|J`Glq+|$22u5iFS$Q#tl%67zfJU!}wBW%eHt_(h)|ASpn>~w_>MhT&jjZ_G z3;arbFM-%c8m W^;?pe{b+d~GPCz(NY)+^QL{goW4l}c delta 850 zcmZuvyK7Tn6#t$3&g14mnp_oW+NNluwWV!n1w}+bbHyrrLvb*M*rctRhu+){E;jX5 z2N(H9mx8#v=|3P2PC^kHCnpgXE255a?roi1e&6}d?>v6za6YErr4mOIb`$_MF2B6_ zLV1?hx3&qOhieez!sl0UsjT=)o^91t%bKqRw&tp3-PZ$Kch$1t8+lZe!(0wP-2@JD zj^UbR%eV5#Vi>}7Agqc}Qo|@e5_lsHM6?nSF)<#W({`z7K-msNq7wO+5EE2DG5M8) zWR8|8D(}$>MdcT|Iv4@qG4N1b9l&FJ(kw3(_+?EwLbiOWEL;$pAfeAGd#x(kFiPPE zeykE7hA@OVN4vbefEf~&gQn#tM8r=nz)y*20mYacSEn+4ZEAX^R8;zAy|GkVZTenL zE~($hltP=QwA|E2$(C=m6ErJH9~}wwu*OTpv=?J>aR!?q!Jx_WdVXw(&0z)}#Tx<8 zPgkq8cDv)({6=+YwY^xadPynu(SbCFWcGkdb?4=KeR6Db_SL{vcDCnk?;m{b^e%1> zjlVg!HFUOD{%wQk0mAiUWWgv=R$eh)Q(C6X!L=;cI0WF&2JT}!mRP^Aqk`yj)LwUY zbP(+r$T%Og+z%5(VVQ6$^S@IaV|7V}35H3o&nrId1>&dK$q+O)*TT*lc(|*OsbbtK z@EQ#N?(G}xWsmQuZ*}i9Tb+8N>GAD^%QBeAU9Tn|rV4f2I diff --git a/backend/src/backend/models/user.py b/backend/src/backend/models/user.py index 90923aa..844b898 100644 --- a/backend/src/backend/models/user.py +++ b/backend/src/backend/models/user.py @@ -1,3 +1,5 @@ +from backend.internal.user_code_gen import generate_user_code +from dataclasses import dataclass import uuid from typing import TYPE_CHECKING from sqlmodel import Field @@ -14,10 +16,11 @@ class User(UserBase, table=True): id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True) email: str = Field(unique=True) name: str = Field(unique=True) - user_code: str = Field(default="1234",unique=True) # TODO: create Generator + user_code: str = Field(default_factory=generate_user_code,unique=True) subscription: bool = Field() comments: list["Comment"] = Relationship(back_populates="user") +@dataclass class NewUser(UserBase): email: str name: str diff --git a/backend/src/backend/routers/__pycache__/test_users.cpython-314-pytest-9.1.1.pyc b/backend/src/backend/routers/__pycache__/test_users.cpython-314-pytest-9.1.1.pyc index a17eab1d945167b8fb12526adefbcc6a603b0fa1..799726371812118f05fa4476e7a8ac6c71e83a94 100644 GIT binary patch literal 8804 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 delta 1965 zcmaKtO>7fK6oB7&y|#DPUjN2+?8H9_iZM_^Nl=i2Xi;ggsY0z$YWm~aGVul({Fm7c z5OE-tdf0IcgY9)H;trfjiMXJ=lLn{hZs8y*@_0k(vf2fN3qc>~wcjz46zJ2>< z_RYNSz4>YXl_`Cz?o$B(emwW?v7GCI9w*TYxjiqd1aZ3f)yy3qH#y zbW+qUy$aM_^c4J-U)VfFwGglZLRX5xLdXgUT`h(S5i630SM<^rzE6pys7AeW1b+-b zeKDA|Rj{H%m;F?Kz{MW}8i+wFaL+MDgE62Xv{`W)jscAbeUy?($dCMt3m)RHk}7%c z@=dZxG&cY+7YcARM@tX;QEjCO*J z06^bctJOQ5u2r{;T8$+EAa?mXXNY)lo^V`eBm9nh;7lA1_=`W+;f6nYR%c@vS6*g# z>itN==oy`c(OFunbx#B>cMW#UV>y$tqtTaIO`~Jg zmYb)nRc5eF0DxOD_X7XO^#boWXU?$E;asMPZL!2KRC`Zi7ee54GYkOha0fgj_X~ZxzQNrBHGL|1uinhA+b3l*baY1D`ZdpoBW8M4eQg zmU@Iw$D)U*t4yeSZZN&)C_74c7LSacRQ-JAsj_o-0bu3%+~Dic&j7}tq7R)*0i-QX z{bhNE(7@r@8OJQ96{+)3g|Cfg_<2uQyFVey_bDU9!M|2xMCX6UQlYYA81Mq23RNq@ zte2&snQFF)FX-ydX=xiWHW)n@^-^EiHBBC}x+}6`cUko#EyL_Pj~i|diq5UrkCZ{s?urZ3``ZZ=8ZJL(Bgmdj=mmN3Rvj8>~ zR|FN`JC$>rH`L@+HMyZqTvaDF)ZA4ycTLS-cW&W4{FZ#(ImO2K+sTD$Ub4v({35z} z2gAY>c<29z!tF>QGKv&xNTEh@m*#Hcq{kQpzNL@G#Qmyi!?VWhq=Y7bsPZ{ACQ;DpP>SfO( z&?ptGVKFLRJ{?cJ>U)pWmyR2q#`bo-*|FPoXt{1$^CN!+rzV`-EFM4jJ>Q10N4!8V*qelB82<^@EUx}?`F$-!b5U* JA{w!q?tjaEg8Bde diff --git a/backend/src/backend/routers/test_users.py b/backend/src/backend/routers/test_users.py index ff62a1c..78e2219 100644 --- a/backend/src/backend/routers/test_users.py +++ b/backend/src/backend/routers/test_users.py @@ -1,3 +1,5 @@ +from backend.models.user import NewUser +from sqlmodel import select from backend.models.user import User from backend.internal.database import get_session from sqlmodel import Session @@ -30,11 +32,7 @@ def client_fixture(session: Session): yield client app.dependency_overrides.clear() - - - -def test_register_user_works(client: TestClient): - print(SQLModel.metadata.tables.keys()) +def test_register_user_saved(session:Session, client: TestClient): new_user = { "email": "Test@Test.test", "name": "Test1", @@ -43,15 +41,26 @@ def test_register_user_works(client: TestClient): response = client.post(url="/users/", json=new_user) assert response.status_code == 200 -def test_email_not_unique(session: Session, client: TestClient): - new_user = { - "email": "Test@Test.test", - "name": "Test1", - "subscription": True - } - user = User.model_validate(new_user) + db_user = session.exec(select(User).where(User.email == "Test@Test.test")).first() + assert db_user + assert db_user.email == "Test@Test.test" + assert db_user.name == "Test1" + assert db_user.subscription == True + +def test_email_not_unique_returns_400(session: Session, client: TestClient): + new_user = NewUser(email="Not@Unique.de",name="Tim", subscription=True) + + user = User.model_validate(new_user.model_copy(update={'name':'Different'})) session.add(user) session.commit() - response = client.post(url="/users/", json=new_user) - + response = client.post(url="/users/", json=new_user.model_dump()) + assert response.status_code == 400 + +def test_name_not_unique_returns_400(session: Session, client: TestClient): + new_user = NewUser(email="Absolutly@Unique.de",name="Chiara", subscription=True) + + user = User.model_validate(new_user.model_copy(update={'email':'Different@Different.de'})) + session.add(user) + session.commit() + response = client.post(url="/users/", json=new_user.model_dump()) assert response.status_code == 400 \ No newline at end of file