Add fill test case for text, combo and checkbox fields

This commit is contained in:
Adrian-George Bostan 2020-06-10 18:56:43 +03:00
parent 39d00eabaf
commit 705b191318
3 changed files with 137 additions and 0 deletions

View File

@ -148,6 +148,7 @@ func TestJSONExtractAndFill(t *testing.T) {
fieldDataExp, err := LoadFromJSONFile("./testdata/advancedform.json")
require.NoError(t, err)
jsonDataExp, err := fieldDataExp.JSON()
require.NoError(t, err)
// Check templates for equality.
require.Equal(t, jsonDataExp, jsonData)
@ -184,6 +185,7 @@ func TestJSONExtractAndFill(t *testing.T) {
fieldDataExp, err = LoadFromJSON(bytes.NewReader(jsonBytes))
require.NoError(t, err)
jsonDataExp, err = fieldDataExp.JSON()
require.NoError(t, err)
// Fill test PDF form fields and write to buffer.
f, err := os.Open(inputFilePath)
@ -212,6 +214,47 @@ func TestJSONExtractAndFill(t *testing.T) {
fieldData, err = LoadFromPDF(bytes.NewReader(buf.Bytes()))
require.NoError(t, err)
jsonData, err = fieldData.JSON()
require.NoError(t, err)
// Check field data for equality.
require.Equal(t, jsonDataExp, jsonData)
}
func TestJSONFillAndExtract(t *testing.T) {
// Read JSON fill data.
fieldDataExp, err := LoadFromJSONFile("./testdata/mixedfields.json")
require.NoError(t, err)
jsonDataExp, err := fieldDataExp.JSON()
require.NoError(t, err)
// Fill test PDF form fields and write to buffer.
f, err := os.Open("./testdata/mixedfields.pdf")
require.NoError(t, err)
defer f.Close()
reader, err := model.NewPdfReader(f)
require.NoError(t, err)
err = reader.AcroForm.Fill(fieldDataExp)
require.NoError(t, err)
var buf bytes.Buffer
writer := model.NewPdfWriter()
for i := range reader.PageList {
err := writer.AddPage(reader.PageList[i])
require.NoError(t, err)
}
err = writer.SetForms(reader.AcroForm)
require.NoError(t, err)
err = writer.Write(&buf)
require.NoError(t, err)
// Load field data from buffer.
fieldData, err := LoadFromPDF(bytes.NewReader(buf.Bytes()))
require.NoError(t, err)
jsonData, err := fieldData.JSON()
require.NoError(t, err)
// Check field data for equality.
require.Equal(t, jsonDataExp, jsonData)

94
fjson/testdata/mixedfields.json vendored Normal file
View File

@ -0,0 +1,94 @@
[
{
"name": "Given Name Text Box",
"value": "Jane"
},
{
"name": "Family Name Text Box",
"value": "Doe"
},
{
"name": "House nr Text Box",
"value": "100"
},
{
"name": "Address 2 Text Box",
"value": "Generic Avenue"
},
{
"name": "Postcode Text Box",
"value": "11122"
},
{
"name": "Country Combo Box",
"value": "France"
},
{
"name": "Height Formatted Field",
"value": "175"
},
{
"name": "City Text Box",
"value": "Paris"
},
{
"name": "Driving License Check Box",
"value": "Yes",
"options": [
"Yes",
"Off"
]
},
{
"name": "Favourite Colour List Box",
"value": "Yellow"
},
{
"name": "Language 1 Check Box",
"value": "Yes",
"options": [
"Yes",
"Off"
]
},
{
"name": "Language 2 Check Box",
"value": "Off",
"options": [
"Yes",
"Off"
]
},
{
"name": "Language 3 Check Box",
"value": "Yes",
"options": [
"Yes",
"Off"
]
},
{
"name": "Language 4 Check Box",
"value": "Off",
"options": [
"Yes",
"Off"
]
},
{
"name": "Language 5 Check Box",
"value": "Yes",
"options": [
"Yes",
"Off"
]
},
{
"name": "Gender List Box",
"value": "Woman"
},
{
"name": "Address 1 Text Box",
"value": "Generic Street"
}
]

BIN
fjson/testdata/mixedfields.pdf vendored Normal file

Binary file not shown.