diff --git a/src/models/b4w.py b/src/models/b4w.py index f71ff1b..4e1e7ff 100644 --- a/src/models/b4w.py +++ b/src/models/b4w.py @@ -39,22 +39,28 @@ class B4wExport(ExportBaseModel): ) notes: str = Field(alias="Notes") + def parameters_to_dict(self) -> dict[str, str]: + return { + "Id1": f"{self.id}", + "OwnrAcctIBAN": f"{self.account_iban!s}", + "OwnrAcctCcy": f"{self.account_currency!s}", + "ValDt": date2str(self.date_valid), + "BookgDt": date2str(self.date_book), + "Amt": f"{self.amount!s}", + "AmtCcy": f"{self.amount_currency!s}", + "CdtDbtInd": f"{self.sign!s}", + "RmtInf": f"{self.reference}", + "RmtdNm": f"{self.other_name}", + "RmtdAcctIBAN": f"{self.other_iban}", + "Category": f"{self.category.to_str() if self.category else ''}", + "Notes": f"{self.notes}", + } + def parameters_to_str(self): - return ( - f"Id1='{self.id}', " - f"OwnrAcctIBAN='{self.account_iban!s}', " - f"AmtCcy='{self.amount_currency!s}', " - f"ValDt='{date2str(self.date_valid)}', " - f"BookgDt='{date2str( self.date_book )}', " - f"Amt='{self.amount!s}', " - f"OwnrAcctCcy='{self.account_currency!s}', " - f"CdtDbtInd='{self.sign!s}', " - f"RmtInf='{self.reference}', " - f"RmtdNm='{self.other_name}', " - f"RmtdAcctIBAN='{self.other_iban}', " - f"Category='{self.category.to_str() if self.category else ''}', " - f"Notes='{self.notes}'" + parameters = ", ".join( + f"{key}='{value}'" for key, value in self.parameters_to_dict().items() ) + return parameters def __repr__(self): return f"B4wExport({self.parameters_to_str()})" diff --git a/src/scripts/dummy_data/generate_dummies_b4w.py b/src/scripts/dummy_data/generate_dummies_b4w.py new file mode 100644 index 0000000..07cb275 --- /dev/null +++ b/src/scripts/dummy_data/generate_dummies_b4w.py @@ -0,0 +1,22 @@ +import csv +from pathlib import Path + +from tests.factories import B4wExportFactory + +NUMBER_OF_ROWS = 50 +PATH_DEFAULT = Path("tests/test_data/b4w_export_dummy_01.csv") + + +def save_csv(path: Path = PATH_DEFAULT): + data = B4wExportFactory.batch(NUMBER_OF_ROWS) + row_fields = list(data[0].parameters_to_dict()) + path.parent.mkdir(parents=True, exist_ok=True) + with path.open("w", newline="") as fid: + writer = csv.DictWriter(fid, fieldnames=row_fields) + writer.writeheader() + for export in data: + writer.writerow(export.parameters_to_dict()) + + +if __name__ == "__main__": + save_csv() diff --git a/tests/test_data/b4w_export_dummy_01.csv b/tests/test_data/b4w_export_dummy_01.csv new file mode 100644 index 0000000..29edd8d --- /dev/null +++ b/tests/test_data/b4w_export_dummy_01.csv @@ -0,0 +1,51 @@ +Id1,OwnrAcctIBAN,OwnrAcctCcy,ValDt,BookgDt,Amt,AmtCcy,CdtDbtInd,RmtInf,RmtdNm,RmtdAcctIBAN,Category,Notes +546,BB94K6C321C502O,GBP,2025-12-29,2021-05-31,966249079068317412764571542407919514412758243437140957631412514241265507048511272714647319346008254.45380506761321740967397160412882982325923639777828329138314768657367549356366752060752331132,GBP,DBIT,xobiDcwzRKxgCdlMhOqA,tKVeYnvYCbpbogKulljk,TDgXpTthOVshHpNKRvbQ,Beruf:Gehalt:super Firma,WGCaHsVAXWVeCLsPbdrN +3130,CY01AL0ZPFKXL0Z,CHF,2020-04-27,2025-04-02,-91380510785950845491826614519754504907024428700812006803291502570873.211019996196381685494424904026971409543,EUR,CRDT,aYEtztGZMJkkjbGNhrGl,CbvOzQGjcTWWXPrKfyjp,nOBawCuxZMLTiFKuZnsx,,MVznQDrIqmCmYrTDhBbp +5356,AE43DPLDC66ENP6,USD,2026-01-09,2020-03-27,12495147566547030449243528706787437899952753255929949.510436466181518004685,EUR,DBIT,lckOKAAYRGuzCUqnXbfW,vOGbcayDxBlnejGwfLjA,xxjAuYKPhMmqaMfZDhAw,Lebenshaltung:Lebensmitteleinkäuft,iwUPRIJRxPSlRXcWDWNo +5605,NS44V0K3D40LZEC,GBP,2021-12-22,2021-06-05,0.5943269284524336922642283862359244002375250667,CHF,CRDT,joJcLPuIFvxHxnpTMRZS,LRMmWOiXpcpNkZNCotyG,WawuMyUUpqZRmIWRpzOF,Freizeit,AUSRXmzbzyZwBREOZOgi +9030,UL50MIF1W1KAS3C,USD,2024-03-13,2021-03-07,94229449126346152407566499816383306669237.8035079624692824996218720107585445554234173,USD,CRDT,AcQtetkWOZpHsvpFAFLY,sIieEkhvUFSOsLcLPzIq,nUOVSAvyyjaXaGrtwHkQ,Freizeit,xdNHKUVfoqzfwCykZIvd +5139,KN98I6KMGOBJGDQ,GBP,2021-01-08,2021-12-18,-15902928538656294489371181513645784480574990906804212434837506917428638594538599376635051278636.78520642113315033999770538105015205921897385545146693383944328,USD,CRDT,lMrbuAYxXwuHurNyFYzg,PVoYOsiYrgiycTpYqwaq,EaPFovWogTiCIIVqPnHZ,Beruf:Gehalt:super Firma,rZVnmZqzUaqgrTejRQBv +3262,VP35ANQ489KSRBJ,CHF,2022-02-11,2022-12-15,1456.3272931,EUR,DBIT,ZSDukJoElAhJnbqxCemY,gQZioaMYeNkeDIWUJQOJ,DaRRlkzDhfzwgqsmyKfI,,RmcCnGYIJwwXhUoDebtx +6370,EG06AML3VX70NBZ,CHF,2020-10-30,2026-06-24,-85985373736852359001228845964.12923,GBP,CRDT,nGcVCPmxqcCWOwLCqNcL,ELTpZKLLPxtkBQpFfcXO,QqCDEBwHcqhYqNmrIjRJ,Lebenshaltung:Lebensmitteleinkäuft,MlltKALcNRksLbrBdqHB +9610,LS00DDSRWKI2GCN,CHF,2022-12-24,2023-11-13,111302702519553016947918391140.83336651886149677841069515026199226910390124216959835264362430572949455458094205858204009469,GBP,DBIT,rIqXIlJHQUmNryiFhZgl,fmlShtEaPYxDxLPLVFtA,ZuEmBQavkZkliTgQslkX,Beruf:Gehalt:super Firma,QxxGfOhHEKlRIBtxLBzN +7958,IM49W0MERUPAEYL,GBP,2024-09-23,2026-08-07,997654494541331560967.23894678707663633993031462271276158599265860951730613416835071421468,EUR,CRDT,lIFaiRDOHpPsLZYMvSLL,COjPCyRHmQJAJjXpHtoc,wLGNwAmIoguSFiPOwhop,Beruf:Gehalt:super Firma,wIVvfgWAGpXaNtmCMdtl +81,NB13I5PF8RT1KBF,EUR,2023-10-01,2025-10-14,-623.171747883897331930600196592034302396711514091988656250527836008950413955561,EUR,CRDT,gKujLbFKPTJWNHCwLEbP,BNNSobmkOJYvruTmVpsY,JFTexNOzIHpIDYxFyxXC,Lebenshaltung:Lebensmitteleinkäuft,EXRfMRisDxjfvTFbbScl +4306,MA16EMD5TXB6W2Q,CHF,2022-03-09,2022-07-04,1967316692371140884668.697876470482728723376342302791065723059022794527986321223057196172445638187219626476457610180,EUR,CRDT,PxRyYSeHHCnLsOGvkJBR,tdUmPUqXPyVAwcMonTOz,FkhuAmZMFEYHXfIRbYNa,,hoOqFYFhQZMNFflTTRzr +1340,QC15X8QJ925LIIZ,USD,2023-05-13,2024-10-19,51002714193280774680213206683817944775146555520957438367304201512763096320304094279.5917694840241093438785611670208852758416238660282666099607713108189846992146195070603042071073,USD,CRDT,KXmqOKVhWFhNyeTrYcqi,xrXHIHUrhVotQHkfTSbR,XftIqQPwfIZaQWPgfvTq,Beruf:Gehalt:super Firma,aIBfbrbYXZILZipenuQs +6971,IU89H1O656FOARG,CHF,2023-01-05,2023-01-26,-635472806525340497640508823188167.73094955967757797936541852850962382275616205624981776791984877714957051928106426532873075,EUR,CRDT,aBFnGYtfSndKKDcuKbOA,mFDeQxsPDxRwgSxHoPar,rWitPpvexQZfYaRknvVZ,Lebenshaltung:Lebensmitteleinkäuft,SdKWfeCRdmIuQtpYXpcP +5765,YO97BHIS7F13W5T,CHF,2025-04-27,2024-09-23,-84170840.062065298147641969564638230620262747954,EUR,DBIT,PQzlBfLSMjHPhmzCNWlW,OAuifNsHLzDRYOshTltg,SrdmTqlAcjYZqspXUqWl,Beruf:Gehalt:super Firma,gdyHSZQRVGVDljyWukxF +873,CU84CRHLBLDVPG4,USD,2024-09-10,2021-04-05,31708414063036408560039191005.628517576703091956518065559718890786318411169242277168731009729,EUR,DBIT,jEqWELcluqYzeoFKWrSv,rMeRFYSEneKpjTQxTAWE,irpXsNFkucPYaXhtiGVU,Beruf:Gehalt:super Firma,tDYCusMlvSzPxJtAoGwU +7512,OK88REZY7LC3ZJO,USD,2024-06-20,2024-02-12,-91309800414850316424146855043265998301745409273389966051295090800556208516373.6106630,EUR,CRDT,RjKWAFvwkGwehDeVgAMe,ZBCofGxOxAuhCNdoRwJK,CBjHBmiutfFjnNqGNsys,Freizeit,ibeMySwyUuaKJmopdFeo +468,ZI7268MWFCVKJET,GBP,2021-07-08,2023-08-04,-9566140937946527477623537138113287213.7764645148994252143659337484894589906652837718944384583356873367,GBP,DBIT,dHnVUadgIXaQokZAaddZ,MJpKJyJXAGVFHGXqyeLb,jgWKQYgfzCjzpWDqSfMV,Beruf:Gehalt:super Firma,rRrGzQHiNWxftPiobuBl +6125,VX319YHC45XB9FI,CHF,2024-04-08,2023-11-02,-404943589.503,EUR,CRDT,DLgsRpbgvYUZiFwwfxYX,NFCMuqKchwfGolxUoszx,wToRonKwFFOWrnmfMWZd,Beruf:Gehalt:super Firma,EiYGrzzlsMweQPlFHdlx +5352,WI30AMBG4K8GC5M,USD,2022-07-28,2023-07-12,298801846977579969716883410099510711907273580263884196580644541848777146559224.91128608265378630536063943513079726365933334413452853303576298418192825,GBP,DBIT,BkBNoWLKZmNptdlkcdFy,jdCcnjNmSYMVZYBAqXpk,KdVUoLgaiQoorPtFXfuD,Lebenshaltung:Lebensmitteleinkäuft,aPilIRVyMZhDaLreCtVB +8157,AS89HYB3PJOCKGQ,USD,2021-12-11,2021-05-02,-5383257045022212194476332790.58249908408715153448695588386599010825479811059729154822,USD,CRDT,hLscFzoYamBLLTCOLtJX,mJzlPJMFlwXsvDWCdPEX,zcgAipzPSDbNvDgsUsdf,Lebenshaltung:Lebensmitteleinkäuft,KzpTvMfREqDcraLsnAFa +8562,XF55JJHCFY9VFPN,EUR,2021-10-06,2023-03-07,58513152657357786429578134004715672662808018369796246403461323977035786109578790774134514968087.32196519574363119760206835296320588360455621,EUR,CRDT,WwygiOMjDsxlmBrgMBUD,CPkjRvCOcTGVQRxdVSco,WEmukvnPtZyCmopsKLeB,Freizeit,vNxjYBDrcjIJXRYsioVn +6932,PK53O1QFHWMM80N,CHF,2021-11-22,2022-04-29,-35687720973389008791120348643747347909777063417264503383154431851328499756311481892.525588482723067939754169870785253637544209574930786950647614924757554933127740331928,USD,DBIT,ocyWAbkFrEGhLKcqIUrJ,eIdWToAESlHQGGnykQZI,urMJiqlsVuLqGbGmIOdR,Beruf:Gehalt:super Firma,wbVGbcIRqoAyhXPQFmbn +5603,LM99PWTKWNVKFUK,CHF,2020-10-03,2024-10-23,137912574664116210905504437194561515849372037.5300228797878339289857585366614065212461747,CHF,DBIT,mJHgXdjzfGTiqdPFYKJu,iCPXYqUtKwBTilCrsJTM,AqLdwtlWBsQmQaBvwHii,Lebenshaltung:Lebensmitteleinkäuft,DVEvjvPzjBahqIEOddlq +7707,LP36QSQ8LN9F6U8,EUR,2020-01-26,2026-07-22,20617377959559934081335048761128552951261867125124238167249671785612681.51317409949621954528827764556416450523039696133111537499104315164348776636640613432,GBP,CRDT,IcRLxekFBpooSGzJqqGw,rCFLSzlzvLBdEpXFPZfV,vkMfGTUYKzrINNryKNJN,,tjNBGXokHzSQvBVABxCV +7964,WB16POIGIKIRSRB,GBP,2025-01-15,2026-07-14,19212833314539080562967961976059399140703968646971623411156202797393305194593.881945095397465505661922398,USD,DBIT,CoxjaXrcDJVITkyHjZzv,IunvUBVgzwgJVzAvOyKQ,BcYtrPUKMrJkEKNNnYyD,,awUfzbbQZVwNaLaTiFsr +4725,AT598204ZYZODV1,EUR,2024-03-25,2024-08-09,82856650729233542595012846123790016186861935974808282995711867343684454016512697494.88917524421022914453765603187655206018877538527053112,EUR,DBIT,xlCBJxJOxqvLAjgICrbX,msAsDTuxgXrTntkliYmb,FXyFAuyPwdvXjTTNcPrz,Lebenshaltung:Lebensmitteleinkäuft,gwHdLpOEMZgALigVFmpM +6050,TY84APSJTGLW0Y7,GBP,2020-09-04,2025-08-15,-3472009449932706821864839468227645291697670610604942221835405160979793916196159877775819802166678286.924897290769355741386357676998033855577136669559598846,GBP,DBIT,sqcQIypoDiHETEPLtswm,bkRKycwiqnHBrCWFDWvp,IsMCNagZuWQgjbHotLkZ,Lebenshaltung:Lebensmitteleinkäuft,PmxAqaLvtdKHOqufnPEr +1636,TT56OLKXD9FFLHW,EUR,2022-04-05,2025-01-21,-8700251749693498471853131195688590000252839147762542676728724966.70275220280,CHF,CRDT,LYftAZAxwAbsKqKJJDox,AutZAoZFOVswxydiSajl,peXIkhZxuXokaHbIHulP,Freizeit,qAADExaKKWlrrLTDOeJd +7753,BS67UNQVFAG259C,CHF,2024-06-05,2021-06-24,24861162756159054957.670585366670739666042308388630102242932146348848932417907909353461828706673705,EUR,CRDT,xZhCgZOvnVzrCDKLqbhK,XhDZhAWtaSbEctUEYLjT,aClycbHxjTAgkNnTRcuY,,LmeGwybyUMOrxHkjgLaZ +6189,ZZ871MTLUU9A1RU,CHF,2021-08-01,2023-03-17,-409780077475199424796148695159372908162375055189181880910638677.248670538597146440670239645579725174792942268017121149370963751622201496,EUR,CRDT,GQlNICMrebnglDvBDTYS,CXDqKkEcjnJngYAqpByV,NHVCfnmSrnFolUjPSEIr,,uwEFhSBDVdAPtdhJavhW +9624,AU87XCMRZZWGH86,USD,2024-09-02,2022-09-19,-442193693537141866795259204406415934110882954978333632301457685242868631049543099431520126945516367.745400551449,EUR,DBIT,cbaGAkeofJGsqaiNUEIY,ljZDuEzncPYZLDWNMgnH,EcVuFQSISKGSBDNIdqXJ,Beruf:Gehalt:super Firma,KhFiMeuprVqYAZtZQwIp +9203,FX68NTN2D10VVKO,GBP,2022-02-15,2024-06-23,-534572334.4012791130107478240377375826129655674355510806820651340789640,USD,DBIT,tNihPvPVLoZiwWmdZZRZ,zJGOcjBqCiLbirDJCgVR,oeFcARYRdznzUieqiHxt,Lebenshaltung:Lebensmitteleinkäuft,ihcfdoHuUNdBWRSOyeBB +3927,WH16E7SHB62XKIH,GBP,2023-10-04,2023-01-05,415593598910615971016549932285154.643848021414472037085778014035161865336120601218617113853923085787470877370,EUR,CRDT,MreRryaDFIhSFXkthwko,AqECnwyKoevMnedwdaFc,DXMnEnltpMbzNPWinMrk,Freizeit,IDiYkQfxVozPBqInPIQV +6283,HU452U8CMEYLRNE,CHF,2022-04-25,2025-03-24,-31056127574668984711914.148062642678712152287686837162829872960394642611046974293342,CHF,CRDT,uvRVCtUcGqAYppkZfxar,VvKDwohUZmOQWHpTbbox,rGrLuSeVEZhbtgGBcOFx,Lebenshaltung:Lebensmitteleinkäuft,mNqLNmnFbTXThCWaoBpa +4041,AR48BWK3T5RZ570,GBP,2025-10-10,2020-07-06,1812531959.04051886610531349,EUR,DBIT,VICxZqioNNFBXEnZvvHZ,HHKlheyBNtageACANISB,mPbiYFXCzowXbuRckcJU,Freizeit,jAtyPevPSKJdGTVjowmo +7217,OZ17J7ZD7YG7O1A,USD,2024-01-23,2024-06-19,-968844607026826575302933681105715018281543501601087944362850708075305.66200706173538352524957865510877,GBP,CRDT,RQxftSphrPpwMKVlnKpn,uqNrspSFVXYYPveWyuNv,CWyQeuLcZPAuGlNWjGdM,Lebenshaltung:Lebensmitteleinkäuft,HAyMDEDnKqtDgfIYZDiC +2615,WX91BRBHNDBXKU0,EUR,2021-10-30,2025-11-23,-8343466178334617252604602.569949636202667336077288532506921508691215873161097,CHF,CRDT,RyhUcmsrSAXNUaXevPMB,bFIZFcQCTivRZcMYhJAx,mfRHcvsWGYIMPHtWOYpm,Lebenshaltung:Lebensmitteleinkäuft,PHOtyKuWgmyZaxJYQPjO +251,ZJ430BMO81CDA44,EUR,2025-08-08,2022-04-02,-944177666499883169717087768179297037355028367029688127.633698125531,USD,DBIT,lUaArRWPnlxRwoWKSDyZ,jFSXDqiPxpdkDkjduezx,ndEGQjdezYvakfXmSeer,Freizeit,NbDQJseGHjiMLMFmhlQX +8432,RG9882TQXT40HDH,GBP,2020-05-29,2026-06-29,-4620473059978062834290693674666409952444643118783437106239403117968074841905810680891909.179130304762746994760945084576,GBP,DBIT,QakUGBIAuAmdabucXlOf,WlRItduFSMEjCwmkbVPV,haAnIWAPZnqWKJHZubtA,Freizeit,tZHnaMEcNMMxpvFZAdjx +9952,JF78B330IL8AKEQ,CHF,2023-03-16,2023-01-31,-4493693464311613709632110286395250278421205912044580776714732064115337203268.547530,GBP,DBIT,hTIWMdfJKdCycCtcVZIa,OABZhgwiXUqfXMmSklHk,GpItXzAVpjsAvDFHxtHP,Freizeit,QbKsSKahDgJtFJQcPJyq +3604,NJ18VUU9VH26T0A,GBP,2026-08-11,2020-04-09,0.64973001968427147068,EUR,CRDT,qupJQwFywzUjbEdwPDUA,uyOHMYgdPtMhcVdnxCZx,cLMmgjuVZtoDOwxoKrFt,Lebenshaltung:Lebensmitteleinkäuft,XQYYbtGKlEBIBnEWqecs +7263,KT85HBZNJL59FFT,USD,2022-11-27,2024-07-15,-37374807.958562351366178447898590057117071635996571407457660485745838424652255349422449887484,GBP,DBIT,uHcJnYVJYKDQMoFMjGXC,PQGdgBCLypSRkHiJYdev,rGwrTRHsFHjLPYhFpMTJ,,dIxwCBlTvNJpYULlJAaS +9675,BJ715E6CD1OIU6T,CHF,2020-12-16,2024-01-07,-5040941689111955157468104725713611935085598625070764074521071414015940351382113590909197304063575.4515354590973595602470431141798115590834959037133034277462703823,GBP,DBIT,HGLztVTGOpGnChJsjprC,qLFITvGssIbHlFBfuZyg,SWQbyfBlwfdSCnoAtwmn,Beruf:Gehalt:super Firma,jtabNPVEZOlBVnaIvamZ +2631,BB0000NISDKBWM1,USD,2023-12-09,2021-09-25,35870065450695.1976,GBP,DBIT,gtwRCGANaKlcNLbLqXCW,qhkoHtHuLrwxdDjUitUM,SMAvrVhBeuNflTTfByZh,Lebenshaltung:Lebensmitteleinkäuft,JodnUWDKlXidVgYIIkZo +7105,FM81K0IHYG2B1K8,CHF,2022-07-17,2021-04-08,7605971335219411809496337191273512429.19144246140951276630353263005965894263583159362498576671567919,GBP,DBIT,bvkiJapOkQoCqDQaeSsj,wcUfBTvFUoxaSRsaNbOk,wzNzdPXmfLEXEgEvtXBP,Lebenshaltung:Lebensmitteleinkäuft,mQFwQMQRmhadGjzUhyIP +4791,XO29KPUGVXKV7P4,GBP,2025-05-09,2025-03-06,-3047323302463055726328888340075326228246153418725869094694662399.9369795962317797302779791691824533,CHF,CRDT,WPBXOTiXiJFuZyjStJxI,bKFooYlWkOIHkeDlcJxu,OXIINcOhpetOqPvcLwkf,Freizeit,jHrZgYXhlOxQlibgCCRq +9872,NX87N16NYF88GY3,CHF,2024-09-17,2022-11-07,-7503175603096494776785070745277206265109071257232396346239801093970295294378754146262745092564314724.58147937995295429167115163695901432938,USD,DBIT,PskmmmqmEWvvjVwdTbpa,IKnFvpHdkVECQXMJgPEb,XgxsPRqDemqlLkHurTtC,Lebenshaltung:Lebensmitteleinkäuft,iDHDfFpVGofjugPlXzMa +2685,DI50CT1EAUXO5ZQ,CHF,2020-11-27,2022-08-17,804255947854847664075204915880058282080805548244876707562721818851111658361963075718333712782.054580103972864189422158609687925786112724117046925451325120196326468662088148238188624,GBP,DBIT,EUSdiqhdVykkRxbeknBL,aUXqpaJrSZvchOtFcDZK,ruepxYDTWMuSxXoNiEBQ,Beruf:Gehalt:super Firma,tSCewecchqoQJuQXVXEr +6119,MJ453EJXQAF5KF9,USD,2020-06-02,2020-07-17,18687868432897828853760232671664003846966802581954654987871.542014558313629353382101420030766,EUR,DBIT,HhAovEIGHJoxAVgFeCVG,iUoROrwSAhKLpKuJqQZl,xHvmkmSMiiuCtJVFZDpN,Freizeit,GgDhdWxjgwwJUmNQOEzl diff --git a/tests/test_model_b4wexport.py b/tests/test_model_b4wexport.py index 29dd557..1e88230 100644 --- a/tests/test_model_b4wexport.py +++ b/tests/test_model_b4wexport.py @@ -33,6 +33,15 @@ def test_b4w_export_account_iban_to_short(): _ = B4wExportFactory.build(OwnrAcctIBAN="DE123") +def test_b4w_export_parameters_to_dict(): + data = B4wExportFactory.build() + params = data.parameters_to_dict() + expected = sorted(field.alias for field in B4wExport.model_fields.values()) + assert sorted(params) == expected + assert "OwnrAcctCcy" in params + assert all(isinstance(value, str) for value in params.values()) + + def test_b4w_export_parameters_to_str(): data = B4wExportFactory.build() params = data.parameters_to_str()