storno eFactura: forma rearanjata (butoane jos, meniu Trimite, stare pe un rand, redimensionabila), sume vizibile in grid (V(250)), fara SET STEP ON in borderou; e2e adaptat (mock xmenu)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WsxyCHJYL6W9MZ6FPnH8ax
This commit is contained in:
24
utile/Teste/storno/mock_xmenu_storno.prg
Normal file
24
utile/Teste/storno/mock_xmenu_storno.prg
Normal file
@@ -0,0 +1,24 @@
|
||||
* mock_xmenu_storno.prg - mock XMENU specific testului E2E storno (test_storno_e2e.prg).
|
||||
* Raspunde din coada PUBLIC gaXmenuQueue/gnXmenuQueuePos (populata de test inainte de fiecare
|
||||
* Click care deschide meniul cmdTrimite); coada goala -> 0 (echivalent Esc/renuntare la xmenu).
|
||||
* Logheaza toate apelurile in PUBLIC gaXmenuCalls/gnXmenuCalls.
|
||||
FUNCTION xmenu
|
||||
LPARAMETERS tcItems, tnBar
|
||||
LOCAL lnRaspuns
|
||||
IF TYPE('gnXmenuQueuePos') = 'N' AND gnXmenuQueuePos <= ALEN(gaXmenuQueue)
|
||||
lnRaspuns = gaXmenuQueue[gnXmenuQueuePos]
|
||||
gnXmenuQueuePos = gnXmenuQueuePos + 1
|
||||
ELSE
|
||||
lnRaspuns = 0
|
||||
ENDIF
|
||||
IF TYPE('gnXmenuCalls') = 'N'
|
||||
gnXmenuCalls = gnXmenuCalls + 1
|
||||
DIMENSION gaXmenuCalls[gnXmenuCalls, 2]
|
||||
gaXmenuCalls[gnXmenuCalls, 1] = TRANSFORM(tcItems)
|
||||
gaXmenuCalls[gnXmenuCalls, 2] = lnRaspuns
|
||||
ENDIF
|
||||
IF TYPE('gcUILog') = 'C'
|
||||
DO PrLogLocal WITH 'MOCK xmenu: [' + LEFT(TRANSFORM(tcItems), 100) + '] -> ' + TRANSFORM(lnRaspuns)
|
||||
ENDIF
|
||||
RETURN lnRaspuns
|
||||
ENDFUNC
|
||||
@@ -8,8 +8,9 @@
|
||||
*
|
||||
* ZERO trimiteri ANAF: Thisform.oAnaf.AnafeFacturaServer e inlocuit cu MockAnafServerStorno
|
||||
* (mock_anaf_server_storno.prg) imediat dupa ce forma reala citeste cCodFiscal/lTest de la
|
||||
* serverul real. cmdValideaza (ValidareEFacturaANAF, apel HTTP real, hardcodat /prod/ -
|
||||
* xmlefactura.prg:1275,1278) NU e apelat; se ocoleste cu SetStare(1) direct.
|
||||
* serverul real. Valideaza() (ValidareEFacturaANAF, apel HTTP real, hardcodat /prod/ -
|
||||
* xmlefactura.prg:1275,1278) NU e apelat; se ocoleste cu SetStare(1) direct. cmdTrimite.Click
|
||||
* deschide XMENU, mockuit din coada gaXmenuQueue (mock_xmenu_storno.prg).
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
@@ -21,15 +22,20 @@ SET NULLDISPLAY TO ''
|
||||
CLOSE DATABASES
|
||||
|
||||
PUBLIC gcUILog, gcTestDir, gcTesteDir
|
||||
PUBLIC gnPass, gnFail, gnMockRaspuns, gnAmsgCalls, gnMockApeluri
|
||||
PUBLIC gnPass, gnFail, gnMockRaspuns, gnAmsgCalls, gnMockApeluri, gnXmenuCalls, gnXmenuQueuePos
|
||||
PUBLIC loAnaf, loForm, loMockSrv, loStornoForm, lnLastErrorNo, lcLastErrorMsg
|
||||
DECLARE gaAmsgCalls[1,2]
|
||||
DECLARE gaMockApeluri[1,3]
|
||||
DECLARE gaXmenuCalls[1,2]
|
||||
DECLARE gaXmenuQueue[1]
|
||||
gnPass = 0
|
||||
gnFail = 0
|
||||
gnAmsgCalls = 0
|
||||
gnMockApeluri = 0
|
||||
gnMockRaspuns = 6
|
||||
gnXmenuCalls = 0
|
||||
gnXmenuQueuePos = 1
|
||||
gaXmenuQueue[1] = 0
|
||||
lnLastErrorNo = 0
|
||||
lcLastErrorMsg = ''
|
||||
|
||||
@@ -44,6 +50,7 @@ ON SHUTDOWN QUIT
|
||||
* mock-urile INAINTEA test_init_env_auto: la nume duplicat de procedura castiga fisierul
|
||||
* cautat PRIMUL (vezi mock_amessagebox.prg / capcana testare-ui-vfp.md)
|
||||
SET PROCEDURE TO (gcTestDir + 'mock_amessagebox_storno.prg') ADDITIVE
|
||||
SET PROCEDURE TO (gcTestDir + 'mock_xmenu_storno.prg') ADDITIVE
|
||||
SET PROCEDURE TO (gcTestDir + 'mock_anaf_server_storno.prg') ADDITIVE
|
||||
|
||||
TRY
|
||||
@@ -365,7 +372,28 @@ DEFINE CLASS DriverStorno AS Custom
|
||||
DO TVerdict WITH RECCOUNT('crsStornoDetalii') > 0, 'grid crsStornoDetalii populat', 'reccount=' + TRANSFORM(RECCOUNT('crsStornoDetalii'))
|
||||
DO TVerdict WITH 'TEST' $ UPPER(loStorno.Caption), 'Caption contine TEST', 'caption=[' + loStorno.Caption + ']'
|
||||
DO TVerdict WITH UPPER(ALLTRIM(loStorno.lblStare.Caption)) == 'NEVALIDAT', 'stare initiala Nevalidat', 'stare=[' + loStorno.lblStare.Caption + ']'
|
||||
DO TVerdict WITH loStorno.lblStare.ForeColor == RGB(96,96,96), 'lblStare gri la Nevalidat', 'forecolor=' + TRANSFORM(loStorno.lblStare.ForeColor)
|
||||
DO TVerdict WITH FILE(loStorno.pcFisierStorno), 'fisier storno exista pe disc', 'fisier=[' + loStorno.pcFisierStorno + ']'
|
||||
DO PrLogLocal WITH 'grid coloane: ' + TRANSFORM(loStorno.grdModificari.cElement.Width) + '/' + TRANSFORM(loStorno.grdModificari.cOriginal.Width) + '/' + TRANSFORM(loStorno.grdModificari.cNou.Width) + ;
|
||||
' controlsource: ' + loStorno.grdModificari.cElement.ControlSource + '|' + loStorno.grdModificari.cOriginal.ControlSource + '|' + loStorno.grdModificari.cNou.ControlSource
|
||||
DO TVerdict WITH loStorno.grdModificari.cElement.Width = 330 AND loStorno.grdModificari.cOriginal.Width = 180 AND loStorno.grdModificari.cNou.Width = 180, 'latimi coloane grid (330/180/180)', ''
|
||||
DO TVerdict WITH LOWER(loStorno.grdModificari.cElement.ControlSource) == 'crsstornodetalii.element' AND LOWER(loStorno.grdModificari.cOriginal.ControlSource) == 'crsstornodetalii.original' AND LOWER(loStorno.grdModificari.cNou.ControlSource) == 'crsstornodetalii.nou', 'controlsource coloane grid calificat', ''
|
||||
|
||||
* V(250) in loc de C(250) (fix Marius, cf. docs/storno_forma_ux_diff.md pct.12b) -
|
||||
* sumele nu mai vin cu padding la dreapta, care le scotea vizual din coloana.
|
||||
LOCAL lnPadFail, lcPadDetail
|
||||
lnPadFail = 0
|
||||
lcPadDetail = ''
|
||||
SELECT crsStornoDetalii
|
||||
SCAN
|
||||
IF LEN(crsStornoDetalii.original) != LEN(ALLTRIM(crsStornoDetalii.original)) OR LEN(crsStornoDetalii.nou) != LEN(ALLTRIM(crsStornoDetalii.nou))
|
||||
lnPadFail = lnPadFail + 1
|
||||
lcPadDetail = lcPadDetail + 'rand=' + TRANSFORM(RECNO()) + ' original=[' + crsStornoDetalii.original + '] nou=[' + crsStornoDetalii.nou + '] '
|
||||
ENDIF
|
||||
ENDSCAN
|
||||
DO TVerdict WITH lnPadFail = 0, 'fara padding pe original/nou (V(250), sumele nu mai ies din coloana)', 'randuri cu padding=' + TRANSFORM(lnPadFail) + ' ' + lcPadDetail
|
||||
|
||||
DO TVerdict WITH EMPTY(loStorno.txtMotiv.Value), 'txtMotiv fara apostrofuri la init', 'value=[' + TRANSFORM(loStorno.txtMotiv.Value) + ']'
|
||||
This.nState = 1
|
||||
|
||||
CASE This.nState = 1
|
||||
@@ -381,8 +409,20 @@ DEFINE CLASS DriverStorno AS Custom
|
||||
loStorno = loStornoForm
|
||||
loStorno.SetStare(1)
|
||||
DO TVerdict WITH UPPER(ALLTRIM(loStorno.lblStare.Caption)) == 'VALID', 'SetStare(1) -> Valid (ocolire ValidareEFacturaANAF, retea reala, cf. instructiuni)', 'stare=[' + loStorno.lblStare.Caption + ']'
|
||||
DO TVerdict WITH loStorno.lblStare.ForeColor == RGB(0,128,0), 'lblStare verde la Valid', 'forecolor=' + TRANSFORM(loStorno.lblStare.ForeColor)
|
||||
|
||||
* renuntare la xmenu (0) -> cmdTrimite.Click nu schimba nimic, fara retea
|
||||
gaXmenuQueue[1] = 0
|
||||
gnXmenuQueuePos = 1
|
||||
loStorno.cmdTrimite.Click()
|
||||
DO TVerdict WITH UPPER(ALLTRIM(loStorno.lblStare.Caption)) == 'TRIMIS', 'dupa cmdTrimite.Click -> Trimis', 'stare=[' + loStorno.lblStare.Caption + ']'
|
||||
DO TVerdict WITH UPPER(ALLTRIM(loStorno.lblStare.Caption)) == 'VALID', 'renuntare xmenu -> starea nu se schimba', 'stare=[' + loStorno.lblStare.Caption + ']'
|
||||
|
||||
* optiunea 2 (trimite fara validare, cf. instructiuni: fara Valideaza/retea reala)
|
||||
gaXmenuQueue[1] = 2
|
||||
gnXmenuQueuePos = 1
|
||||
loStorno.cmdTrimite.Click()
|
||||
DO TVerdict WITH loStorno.pnStare = 2, 'dupa cmdTrimite.Click (xmenu=2) -> Trimis', 'pnStare=' + TRANSFORM(loStorno.pnStare) + ' caption=[' + loStorno.lblStare.Caption + ']'
|
||||
DO TVerdict WITH loStorno.lblStare.ForeColor == RGB(0,64,160), 'lblStare albastru la Trimis', 'forecolor=' + TRANSFORM(loStorno.lblStare.ForeColor)
|
||||
DO TVerdict WITH ExistaApelMock('TrimiteFacturaXML'), 'mock a primit TrimiteFacturaXML', ''
|
||||
This.nState = 3
|
||||
|
||||
|
||||
Reference in New Issue
Block a user