sync SVN r18218
This commit is contained in:
227
utile/Teste/grid_albit/test_grid_albit_stack.prg
Normal file
227
utile/Teste/grid_albit/test_grid_albit_stack.prg
Normal file
@@ -0,0 +1,227 @@
|
||||
* test_grid_albit_stack.prg - dovada prin rulare (nu analiza statica) a CE declanseaza deschiderea
|
||||
* cautarii partenerului cand se paraseste celula Partener Credit (Grid1.Column10) goala, in
|
||||
* frm_modific2024 (COMUN\clase\omodificari.vc2:6375), ecranul de verificare dupa import.
|
||||
* Instrumentare: mock_cauta_alfa_capture.prg inlocuieste cauta_alfa cu o capturare de stare
|
||||
* (ASTACKINFO/LockScreen/USED/RECCOUNT/RecordSource), fara sa deschida vreun formular - restul
|
||||
* lantului (do_cauta/CautPartenerContabilitate/alege_partener/LostFocus/AfterRowColChange) e REAL.
|
||||
* tact e construit din structura REALA de productie (vact_tot -> ales/Cu_tva/tipnota, exact ca in
|
||||
* Programe\ocont2003.prg::note_fara_predefinire), cu doua randuri: randul 1 cont 4111 (are
|
||||
* config_cont_ireg+coresp_tip_cont) cu partener CREDIT gol, randul 2 cu partener deja completat.
|
||||
*
|
||||
* Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\grid_albit\test_grid_albit_stack.prg"
|
||||
* Iesire: D:\ROA\ROACONT\COMUN\utile\Teste\grid_albit\test_grid_albit_stack_log.txt
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
SET DELETED ON
|
||||
SET EXACT ON
|
||||
SET CENTURY ON
|
||||
SET DATE DMY
|
||||
SET NULLDISPLAY TO ''
|
||||
CLOSE DATABASES
|
||||
|
||||
PUBLIC gcUILog, gcSyncDir, gnCaptureN, gcCaptureSyncStep, goFormTest
|
||||
gcSyncDir = 'D:\ROA\ROACONT\COMUN\utile\Teste\grid_albit\uisync\'
|
||||
gcUILog = 'D:\ROA\ROACONT\COMUN\utile\Teste\grid_albit\test_grid_albit_stack_log.txt'
|
||||
STRTOFILE('START ' + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog)
|
||||
gnCaptureN = 0
|
||||
gcCaptureSyncStep = 0
|
||||
|
||||
ON ERROR DO PrErrLocal WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
||||
ON SHUTDOWN QUIT
|
||||
|
||||
*-- cai complete: la lansare vfp9 -A -T directorul curent NU e cel al scriptului, deci nume goale
|
||||
*-- de PRG nu se gasesc (era cauza dialogului "Program Error: harnesslog.prg does not exist")
|
||||
SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\ui_harness.prg" ADDITIVE
|
||||
|
||||
*-- mock-ul cauta_alfa TREBUIE incarcat inaintea test_init_env_auto (care face
|
||||
*-- SET PROCEDURE TO cauta_alfa ADDITIVE) - la nume duplicat VFP tine fisierul incarcat PRIMUL
|
||||
SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\utile\Teste\grid_albit\mock_cauta_alfa_capture.prg" ADDITIVE
|
||||
|
||||
TRY
|
||||
DO "D:\ROA\ROACONT\COMUN\utile\Teste\test_init_env_auto.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT', 2026, 9
|
||||
IF gnHandle <= 0
|
||||
DO HarnessLog WITH 'FAIL: conectare Oracle esuata (gnHandle=' + TRANSFORM(gnHandle) + ')'
|
||||
DO HarnessDone WITH 'error'
|
||||
QUIT
|
||||
ENDIF
|
||||
DO HarnessLog WITH 'mediu initializat gnHandle=' + TRANSFORM(gnHandle)
|
||||
|
||||
DO BuildTact
|
||||
DO HarnessLog WITH 'tact construit, reccount=' + TRANSFORM(RECCOUNT('tact')) + ' campuri=' + TRANSFORM(FCOUNT('tact'))
|
||||
DO HarnessLog WITH ' rand1: scc=' + ALLTRIM(tact.scc) + ' partc=[' + ALLTRIM(NVL(tact.partc,'')) + ']'
|
||||
GO 2 IN tact
|
||||
DO HarnessLog WITH ' rand2: scc=' + ALLTRIM(tact.scc) + ' partc=[' + ALLTRIM(NVL(tact.partc,'')) + ']'
|
||||
GO 1 IN tact
|
||||
|
||||
SELECT tact
|
||||
GO TOP
|
||||
goFormTest = CREATEOBJECT('frm_modific2024', 90023, .T., NULL)
|
||||
goFormTest.lActivExtrase = .T.
|
||||
goFormTest.WindowType = 0
|
||||
goFormTest.Show()
|
||||
DO HarnessLog WITH 'form afisat: LockScreen=' + TRANSFORM(goFormTest.LockScreen) + ' Grid1.RecordSource=[' + goFormTest.Grid1.RecordSource + '] Grid1.RecordSourceType=' + TRANSFORM(goFormTest.Grid1.RecordSourceType) + ' Visible=' + TRANSFORM(goFormTest.Visible)
|
||||
|
||||
*=====================================================================
|
||||
* SCENARIU A: parasirea celulei Partener Credit (goala) prin LostFocus, urmat de Click pe
|
||||
* butonul "Partener Credit" - tiparul exact din log.txt (dubla cautare)
|
||||
*=====================================================================
|
||||
DO HarnessLog WITH ''
|
||||
DO HarnessLog WITH '=== SCENARIU A: Column10.Text1.LostFocus (partc gol) apoi Command2.Click ==='
|
||||
SELECT tact
|
||||
GO 1
|
||||
LOCAL lnCapturiA0, lnCapturiA1
|
||||
lnCapturiA0 = gnCaptureN
|
||||
DO HarnessLog WITH 'A: inainte - LockScreen=' + TRANSFORM(goFormTest.LockScreen) + ' recno=' + TRANSFORM(RECNO('tact')) + ' partc=[' + ALLTRIM(NVL(tact.partc,'')) + ']'
|
||||
|
||||
*-- incearca intai focus REAL (poate declansa evenimente native suplimentare), apoi apelul direct
|
||||
*-- garanteaza deterministic reproducerea, indiferent daca SetFocus a functionat headless
|
||||
TRY
|
||||
goFormTest.Grid1.SetFocus()
|
||||
goFormTest.Grid1.Column10.Text1.SetFocus()
|
||||
DO HarnessLog WITH 'A: SetFocus real pe Column10.Text1 - OK, ActiveColumn=' + TRANSFORM(goFormTest.Grid1.ActiveColumn)
|
||||
CATCH TO loExFocus
|
||||
DO HarnessLog WITH 'A: SetFocus real a esuat (' + loExFocus.Message + ') - continui cu apelul direct al metodei'
|
||||
ENDTRY
|
||||
|
||||
goFormTest.Grid1.Column10.Text1.LostFocus()
|
||||
lnCapturiA1 = gnCaptureN
|
||||
DO HarnessLog WITH 'A1 (LostFocus): capturi noi=' + TRANSFORM(lnCapturiA1 - lnCapturiA0) + ' LockScreen dupa=' + TRANSFORM(goFormTest.LockScreen) + ' partc=[' + ALLTRIM(NVL(tact.partc,'')) + ']'
|
||||
|
||||
goFormTest.Command2.Click()
|
||||
DO HarnessLog WITH 'A2 (Command2.Click): capturi noi=' + TRANSFORM(gnCaptureN - lnCapturiA1) + ' LockScreen dupa=' + TRANSFORM(goFormTest.LockScreen)
|
||||
DO HarnessLog WITH 'A: TOTAL capturi scenariu=' + TRANSFORM(gnCaptureN - lnCapturiA0) + ' (asteptat 2 daca ipoteza H1 se confirma: LostFocus + Click deschid ambele cautarea)'
|
||||
|
||||
*=====================================================================
|
||||
* SCENARIU B: schimbare de rand, cu randul PARASIT avand partc gol - testeaza (B1) daca un GO
|
||||
* brut pe cursorul legat declanseaza singur vreun eveniment, si (B2) dansul LockScreen din
|
||||
* AfterRowColChange (16083-16097) cand randul recalculat (nRecLipsuri) are partc gol
|
||||
*=====================================================================
|
||||
DO HarnessLog WITH ''
|
||||
DO HarnessLog WITH '=== SCENARIU B: schimbare de rand, randul cu partc gol e cel reverificat de AfterRowColChange ==='
|
||||
SELECT tact
|
||||
GO 1
|
||||
LOCAL lnCapturiB0, lnCapturiB1
|
||||
lnCapturiB0 = gnCaptureN
|
||||
TRY
|
||||
goFormTest.Grid1.Column10.Text1.SetFocus()
|
||||
CATCH TO loExFocus
|
||||
ENDTRY
|
||||
GO 2 IN tact
|
||||
lnCapturiB1 = gnCaptureN
|
||||
DO HarnessLog WITH 'B1 (GO 2 brut, fara apel explicit): capturi noi=' + TRANSFORM(lnCapturiB1 - lnCapturiB0) + ' LockScreen=' + TRANSFORM(goFormTest.LockScreen)
|
||||
|
||||
goFormTest.nRecLipsuri = 1 && "randul parasit" pe care AfterRowColChange il reverifica e randul 1 (partc gol)
|
||||
goFormTest.cSemnLipsuri = 'FORTAT-DIFERIT-CA-SA-INTRE-PE-RAMURA'
|
||||
DO HarnessLog WITH 'B2: inainte de AfterRowColChange - LockScreen=' + TRANSFORM(goFormTest.LockScreen) + ' recno curent=' + TRANSFORM(RECNO('tact')) + ' nRecLipsuri=' + TRANSFORM(goFormTest.nRecLipsuri)
|
||||
goFormTest.Grid1.AfterRowColChange(10)
|
||||
DO HarnessLog WITH 'B2 (AfterRowColChange explicit): capturi noi=' + TRANSFORM(gnCaptureN - lnCapturiB1) + ' LockScreen dupa=' + TRANSFORM(goFormTest.LockScreen) + ' recno curent=' + TRANSFORM(RECNO('tact'))
|
||||
DO HarnessLog WITH 'B: TOTAL capturi scenariu=' + TRANSFORM(gnCaptureN - lnCapturiB0)
|
||||
|
||||
*=====================================================================
|
||||
* SCENARIU C: Click direct pe buton, FARA ca focusul sa fi trecut prin celula (fara LostFocus)
|
||||
*=====================================================================
|
||||
DO HarnessLog WITH ''
|
||||
DO HarnessLog WITH '=== SCENARIU C: Command2.Click direct, focus pe alt control (nu in celula Partener Credit) ==='
|
||||
SELECT tact
|
||||
GO 1
|
||||
LOCAL lnCapturiC0
|
||||
lnCapturiC0 = gnCaptureN
|
||||
TRY
|
||||
goFormTest.but_renunt1.SetFocus()
|
||||
CATCH TO loExFocus
|
||||
ENDTRY
|
||||
goFormTest.Command2.Click()
|
||||
DO HarnessLog WITH 'C (Command2.Click direct): capturi noi=' + TRANSFORM(gnCaptureN - lnCapturiC0) + ' LockScreen dupa=' + TRANSFORM(goFormTest.LockScreen)
|
||||
|
||||
DO HarnessLog WITH ''
|
||||
DO HarnessLog WITH '=== REZULTAT: total capturi cauta_alfa=' + TRANSFORM(gnCaptureN) + ' ==='
|
||||
DO HarnessDone WITH 'done'
|
||||
DO HarnessLog WITH 'TOTAL: test terminat fara exceptie'
|
||||
CATCH TO loEx
|
||||
DO HarnessLog WITH 'EXCEPTIE: ' + loEx.Message + ' (' + TRANSFORM(loEx.LineNo) + ') ' + loEx.Procedure
|
||||
DO HarnessDone WITH 'error'
|
||||
ENDTRY
|
||||
|
||||
QUIT
|
||||
|
||||
**********************************************************
|
||||
* tact - structura REALA de productie (vact_tot -> ales/Cu_tva/tipnota), ca in
|
||||
* Programe\ocont2003.prg::note_fara_predefinire (liniile 1007-1082). Doua randuri: primul cu
|
||||
* cont 4111 (config_cont_ireg + coresp_tip_cont populate pe schema de test) si partener CREDIT
|
||||
* gol - tinta bugului; al doilea cu partener deja completat, doar ca sa existe "schimbare de rand".
|
||||
PROCEDURE BuildTact
|
||||
LOCAL llSucces
|
||||
IF USED('tact')
|
||||
USE IN tact
|
||||
ENDIF
|
||||
IF USED('actactan')
|
||||
USE IN actactan
|
||||
ENDIF
|
||||
IF USED('crsJtvaTemp')
|
||||
USE IN crsJtvaTemp
|
||||
ENDIF
|
||||
*-- Init/Load (frm_modific2024) citesc crsJtvaTemp - exact apelul din ocont2003.prg:997
|
||||
update_jtva_coloane("", "crsJtvaTemp", 1)
|
||||
|
||||
llSucces = goExecutor.oExecuta("select * from vact_tot where 1=2", "v_act")
|
||||
IF !llSucces
|
||||
DO HarnessLog WITH 'FAIL: vact_tot inaccesibil - ' + goExecutor.cEroare
|
||||
RETURN .F.
|
||||
ENDIF
|
||||
SELECT * FROM v_act INTO CURSOR actactan READWRITE
|
||||
USE IN v_act
|
||||
SELECT .F. AS ales, IIF(EMPTY(NVL(a.id_jtva_coloana,0)),0,1) AS Cu_tva, CAST(0 AS N(2)) AS tipnota, a.* FROM actactan a INTO CURSOR tact READWRITE
|
||||
USE IN actactan
|
||||
|
||||
*-- trul/trul_obinv - formularul le foloseste (pgfArticole) chiar daca randurile de tact nu au
|
||||
*-- rulaje; goale, aceeasi structura ca in ocont2003.prg::note_fara_predefinire (1017-1044)
|
||||
IF USED('trul')
|
||||
USE IN trul
|
||||
ENDIF
|
||||
llSucces = goExecutor.oExecuta("select * from vrul_tot where 1=2", "v_rul")
|
||||
IF !llSucces
|
||||
DO HarnessLog WITH 'FAIL: vrul_tot inaccesibil - ' + goExecutor.cEroare
|
||||
RETURN .F.
|
||||
ENDIF
|
||||
SELECT *, valoare + valtva AS valoarectva, valoarev + valtvav AS valoarevctva FROM v_rul INTO CURSOR trul READWRITE
|
||||
USE IN v_rul
|
||||
|
||||
IF USED('trul_obinv')
|
||||
USE IN trul_obinv
|
||||
ENDIF
|
||||
llSucces = goExecutor.oExecuta("select * from vrul_obinv_tot where 1=2", "v_rul_obinv")
|
||||
IF !llSucces
|
||||
DO HarnessLog WITH 'FAIL: vrul_obinv_tot inaccesibil - ' + goExecutor.cEroare
|
||||
RETURN .F.
|
||||
ENDIF
|
||||
SELECT *, valoare + valtva AS valoarectva, valoarev + valtvav AS valoarevctva FROM v_rul_obinv INTO CURSOR trul_obinv READWRITE
|
||||
USE IN v_rul_obinv
|
||||
|
||||
SELECT tact
|
||||
APPEND BLANK
|
||||
REPLACE dataireg WITH DATETIME(), dataact WITH DATETIME(), datascad WITH DATETIME() + 30 * 86400
|
||||
REPLACE id_sucursala WITH NVL(gnIdSucursala, 0), sters WITH 0, an WITH gnAn, luna WITH gnLuna
|
||||
REPLACE scd WITH '628', scc WITH '4111', partd WITH 'CHELTUIALA TEST', id_partd WITH 0
|
||||
REPLACE partc WITH '', id_partc WITH 0, suma WITH 100.00, nract WITH 1, cod WITH 1
|
||||
|
||||
APPEND BLANK
|
||||
REPLACE dataireg WITH DATETIME(), dataact WITH DATETIME(), datascad WITH DATETIME() + 30 * 86400
|
||||
REPLACE id_sucursala WITH NVL(gnIdSucursala, 0), sters WITH 0, an WITH gnAn, luna WITH gnLuna
|
||||
REPLACE scd WITH '5121', scc WITH '4111', partd WITH '', id_partd WITH 0
|
||||
REPLACE partc WITH 'PARTENER DEJA ALES', id_partc WITH 1, suma WITH 50.00, nract WITH 2, cod WITH 1
|
||||
|
||||
GO TOP
|
||||
RETURN .T.
|
||||
ENDPROC
|
||||
|
||||
**********************************************************
|
||||
PROCEDURE PrErrLocal
|
||||
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
|
||||
LOCAL lcMsg
|
||||
lcMsg = 'EROARE ' + TRANSFORM(tnError) + ' ' + TRANSFORM(tcMessage) + ' in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLineNo)
|
||||
IF TYPE('gcUILog') = 'C' AND !EMPTY(gcUILog)
|
||||
SET SAFETY OFF
|
||||
STRTOFILE(IIF(FILE(gcUILog), FILETOSTR(gcUILog), '') + lcMsg + CHR(13) + CHR(10), gcUILog)
|
||||
ENDIF
|
||||
ENDPROC
|
||||
Reference in New Issue
Block a user