[test-report-system] tests functions instead of returned values

Previous tests for report definition had modified report.scm to return
bool #f to signify 'aborted definition'. This had mistakenly
invalidated an old-report handling code path whereby guid was missing.

This commit will modify old tests to define reports, and verify
success/failure according to the (gnc:all-report-template-guids) list
length which, indirectly, is a surrogate marker for a successful
report definition.
This commit is contained in:
Christopher Lam 2019-02-26 19:45:29 +08:00
parent c6b7338fbc
commit 548ee9f56b

View File

@ -12,75 +12,88 @@
(test-begin "Testing/Temporary/test-report-system")
;; if (test-runner-factory gnc:test-runner) is commented out, this
;; will create Testing/Temporary/test-asset-performance.log
(test-assert "Minimum Report Definition" (test-check1))
(test-assert "Missing GUID detection" (test-check2))
(test-assert "Detect double GUID" (test-check3))
(test-assert "Report with Full Argument Set" (test-check4))
(test-check1)
(test-check2)
(test-check3)
(test-check4)
(test-end "Testing/Temporary/test-report-system"))
;; -----------------------------------------------------------------------
(define (test-check1)
(display "\n*** Minimum Report Definition\n")
(gnc:define-report 'version "1"
'name "Test Report Template"
'report-guid "54c2fc051af64a08ba2334c2e9179e23"))
'report-guid "54c2fc051af64a08ba2334c2e9179e23")
(test-equal "1 report successfully defined"
1
(length (gnc:all-report-template-guids))))
;; -----------------------------------------------------------------------
(define (test-check2)
(not (gnc:define-report 'version "1"
'name "Test Report Template")))
(display "\n*** Missing GUID detection:\n")
(gnc:define-report 'version "1"
'name "Test Report Template")
(test-equal "2 reports defined, with 1 autogenerated guid"
2
(length (gnc:all-report-template-guids))))
;; -----------------------------------------------------------------------
(define (test-check3)
(not (gnc:define-report 'version "1"
'name "Test Report Template"
'report-guid "54c2fc051af64a08ba2334c2e9179e23"
'parent-type "Parent Type"
'options-generator "Options Generator"
'renderer "Renderer"
'options-cleanup-cb "Options Clean-Up"
'options-changed-cb "Options Changed"
'in-menu? #f
'menu-path "Menu Path"
'menu-name "Menu Name"
'menu-tip "Menu Tip"
'export-types "Export Types"
'export-thunk "Export Thunk")))
(display "\n*** Detect double GUID\n")
(gnc:define-report 'version "1"
'name "Test Report Template"
'report-guid "54c2fc051af64a08ba2334c2e9179e23"
'parent-type "Parent Type"
'options-generator "Options Generator"
'renderer "Renderer"
'options-cleanup-cb "Options Clean-Up"
'options-changed-cb "Options Changed"
'in-menu? #f
'menu-path "Menu Path"
'menu-name "Menu Name"
'menu-tip "Menu Tip"
'export-types "Export Types"
'export-thunk "Export Thunk")
(test-equal "still only 2 reports defined"
2
(length (gnc:all-report-template-guids))))
;; -----------------------------------------------------------------------
(define (test-check4)
(display "\n*** Report with Full Argument Set\n")
(let ((guid "54c2fc051af64a08ba2334c2e9179e24"))
(and
(gnc:define-report 'version "1"
'name "Test Report Template"
'report-guid guid
'parent-type "Parent Type"
'options-generator "Options Generator"
'renderer "Renderer"
'options-cleanup-cb "Options Clean-Up"
'options-changed-cb "Options Changed"
'in-menu? #f
'menu-path "Menu Path"
'menu-name "Menu Name"
'menu-tip "Menu Tip"
'export-types "Export Types"
'export-thunk "Export Thunk")
(let ((tmpl (gnc:find-report-template guid)))
(and
(string=? (gnc:report-template-version tmpl) "1")
(string=? (gnc:report-template-name tmpl) "Test Report Template")
(string=? (gnc:report-template-report-guid tmpl) guid)
;; parent type is not exported -> it is used in gnc:make-report
(string=? (gnc:report-template-options-generator tmpl) "Options Generator")
(string=? (gnc:report-template-renderer tmpl) "Renderer")
(string=? (gnc:report-template-options-cleanup-cb tmpl) "Options Clean-Up")
(string=? (gnc:report-template-options-changed-cb tmpl) "Options Changed")
(not (gnc:report-template-in-menu? tmpl))
(string=? (gnc:report-template-menu-path tmpl) "Menu Path")
(string=? (gnc:report-template-menu-name tmpl) "Menu Name")
(string=? (gnc:report-template-menu-tip tmpl) "Menu Tip")
(string=? (gnc:report-template-export-types tmpl) "Export Types")
(string=? (gnc:report-template-export-thunk tmpl) "Export Thunk"))))))
(gnc:define-report 'version "1"
'name "Test Report Template"
'report-guid guid
'parent-type "Parent Type"
'options-generator "Options Generator"
'renderer "Renderer"
'options-cleanup-cb "Options Clean-Up"
'options-changed-cb "Options Changed"
'in-menu? #f
'menu-path "Menu Path"
'menu-name "Menu Name"
'menu-tip "Menu Tip"
'export-types "Export Types"
'export-thunk "Export Thunk")
(let ((tmpl (gnc:find-report-template guid)))
(test-assert "report properties correctly set"
(and
(string=? (gnc:report-template-version tmpl) "1")
(string=? (gnc:report-template-name tmpl) "Test Report Template")
(string=? (gnc:report-template-report-guid tmpl) guid)
;; parent type is not exported -> it is used in gnc:make-report
(string=? (gnc:report-template-options-generator tmpl) "Options Generator")
(string=? (gnc:report-template-renderer tmpl) "Renderer")
(string=? (gnc:report-template-options-cleanup-cb tmpl) "Options Clean-Up")
(string=? (gnc:report-template-options-changed-cb tmpl) "Options Changed")
(not (gnc:report-template-in-menu? tmpl))
(string=? (gnc:report-template-menu-path tmpl) "Menu Path")
(string=? (gnc:report-template-menu-name tmpl) "Menu Name")
(string=? (gnc:report-template-menu-tip tmpl) "Menu Tip")
(string=? (gnc:report-template-export-types tmpl) "Export Types")
(string=? (gnc:report-template-export-thunk tmpl) "Export Thunk"))))))