Add fonts, autotable, autotable examples
This commit is contained in:
66
go/webui/pdf_summary_test.go
Normal file
66
go/webui/pdf_summary_test.go
Normal file
@@ -0,0 +1,66 @@
|
||||
package webui
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// A summary row the user built in the editor must reach the PDF. Before, the caller
|
||||
// had to restate it by hand — so a row someone created showed on screen and then
|
||||
// quietly vanished from the export, which is the one number they most likely wanted
|
||||
// in the file.
|
||||
func TestPDFPicksUpTheTablesOwnSummaryRows(t *testing.T) {
|
||||
s := newCalcTable()
|
||||
s.AddSummaryRow(UserSummaryRow{
|
||||
ID: "total", Label: "Total revenue", Fn: CALC_FN_SUM,
|
||||
Operands: []string{"Revenue"}, DataType: CALC_TYPE_NUMBER, Precision: CalcPrecision(0),
|
||||
})
|
||||
s.Render()
|
||||
|
||||
pdf := string(s.ExportPDFBytes(AutoTablePDFHeader{Title: "Report"}))
|
||||
if !strings.Contains(pdf, "Total revenue") {
|
||||
t.Error("the table's own summary row is missing from the PDF")
|
||||
}
|
||||
if !strings.Contains(pdf, "300") {
|
||||
t.Error("the summary row's VALUE is missing from the PDF (100 + 200)")
|
||||
}
|
||||
}
|
||||
|
||||
// A calculated column the user built must reach it too, with its per-row values.
|
||||
func TestPDFPicksUpCalculatedColumns(t *testing.T) {
|
||||
s := newCalcTable()
|
||||
s.AddCalculated(UserCalculatedColumn{
|
||||
ID: "total", DisplayName: "Row total", Fn: CALC_FN_SUM,
|
||||
Operands: []string{"Revenue", "Cost"}, DataType: CALC_TYPE_NUMBER, Precision: CalcPrecision(0),
|
||||
})
|
||||
s.Render()
|
||||
|
||||
pdf := string(s.ExportPDFBytes(AutoTablePDFHeader{Title: "Report"}))
|
||||
if !strings.Contains(pdf, "Row total") {
|
||||
t.Error("the calculated column's header is missing from the PDF")
|
||||
}
|
||||
// Per row, not the column total: 100+40 and 200+50.
|
||||
for _, want := range []string{"140", "250"} {
|
||||
if !strings.Contains(pdf, want) {
|
||||
t.Errorf("calculated value %s missing from the PDF", want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// An explicit Summaries list is an escape hatch and must win.
|
||||
func TestPDFExplicitSummariesWin(t *testing.T) {
|
||||
s := newCalcTable()
|
||||
s.AddSummaryRow(UserSummaryRow{ID: "a", Label: "From the table", Fn: CALC_FN_SUM,
|
||||
Operands: []string{"Revenue"}})
|
||||
s.Render()
|
||||
|
||||
pdf := string(s.ExportPDFBytes(AutoTablePDFHeader{
|
||||
Summaries: []AutoTablePDFSummary{{Label: "Caller supplied", Value: "42"}},
|
||||
}))
|
||||
if !strings.Contains(pdf, "Caller supplied") {
|
||||
t.Error("an explicit summary list was ignored")
|
||||
}
|
||||
if strings.Contains(pdf, "From the table") {
|
||||
t.Error("the table's rows were added on top of the caller's")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user