def test_validate_template_stream(template_stream): try: TemplateMiddleware().validate_stream(b"") assert False except InvalidTemplateError: assert True TemplateMiddleware().validate_stream(template_stream) assert True
def test_fill_sejda(sejda_template, sejda_data): elements = TemplateMiddleware().build_elements(sejda_template, sejda=True) for k, v in elements.items(): if k in sejda_data: v.value = sejda_data[k] if elements[k].type == ElementType.text: elements[k].font = TextConstants().global_font elements[k].font_size = TextConstants().global_font_size elements[k].font_color = TextConstants().global_font_color elements[k].text_x_offset = TextConstants().global_text_x_offset elements[k].text_y_offset = TextConstants().global_text_y_offset elements[k].text_wrap_length = TextConstants( ).global_text_wrap_length elements[k].validate_constants() elements[k].validate_value() elements[k].validate_text_attributes() result_stream = Filler().fill(sejda_template, elements, sejda=True) assert result_stream != template_stream for element in TemplateCore().iterate_elements(result_stream): assert element[TemplateConstants().parent_key][ TemplateConstants().field_editable_key] == pdfrw.PdfObject(1)
def test_fill(template_stream, data_dict): elements = TemplateMiddleware().build_elements(template_stream) for k, v in data_dict.items(): if k in elements: elements[k].value = v if elements[k].type == ElementType.text: elements[k].font = TextConstants().global_font elements[k].font_size = TextConstants().global_font_size elements[k].font_color = TextConstants().global_font_color elements[k].text_x_offset = TextConstants( ).global_text_x_offset elements[k].text_y_offset = TextConstants( ).global_text_y_offset elements[k].text_wrap_length = TextConstants( ).global_text_wrap_length elements[k].validate_constants() elements[k].validate_value() elements[k].validate_text_attributes() result_stream = Filler().fill(template_stream, elements) assert result_stream != template_stream for element in TemplateCore().iterate_elements(result_stream): key = TemplateCore().get_element_key(element) assert element[ TemplateConstants().field_editable_key] == pdfrw.PdfObject(1) if isinstance(data_dict[key], bool): assert element[TemplateConstants().checkbox_field_value_key] == ( pdfrw.PdfName.Yes if data_dict[key] else pdfrw.PdfName.Off)
def test_validate_template(): bad_inputs = [""] try: TemplateMiddleware().validate_template(*bad_inputs) assert False except InvalidTemplateError: assert True
def test_build_elements(template_with_radiobutton_stream, data_dict): for k, v in (TemplateMiddleware().build_elements( template_with_radiobutton_stream).items()): if k in data_dict and k == v.name: data_dict[k] = True for k in data_dict.keys(): assert data_dict[k]
def test_fill_with_radiobutton(template_with_radiobutton_stream, data_dict): elements = TemplateMiddleware().build_elements( template_with_radiobutton_stream) data_dict["radio_1"] = 0 data_dict["radio_2"] = 1 data_dict["radio_3"] = 2 radio_button_tracker = {} for k, v in data_dict.items(): if k in elements: elements[k].value = v if elements[k].type == ElementType.text: elements[k].font = TextConstants().global_font elements[k].font_size = TextConstants().global_font_size elements[k].font_color = TextConstants().global_font_color elements[k].text_x_offset = TextConstants( ).global_text_x_offset elements[k].text_y_offset = TextConstants( ).global_text_y_offset elements[k].text_wrap_length = TextConstants( ).global_text_wrap_length elements[k].validate_constants() elements[k].validate_value() elements[k].validate_text_attributes() result_stream = Filler().fill(template_with_radiobutton_stream, elements) assert result_stream != template_with_radiobutton_stream for element in TemplateCore().iterate_elements(result_stream): key = TemplateCore().get_element_key(element) if isinstance(data_dict[key], bool) or isinstance(data_dict[key], str): assert element[ TemplateConstants().field_editable_key] == pdfrw.PdfObject(1) else: assert element[TemplateConstants().parent_key][ TemplateConstants().field_editable_key] == pdfrw.PdfObject(1) if isinstance(data_dict[key], bool): assert element[TemplateConstants().checkbox_field_value_key] == ( pdfrw.PdfName.Yes if data_dict[key] else pdfrw.PdfName.Off) elif isinstance(data_dict[key], int): if key not in radio_button_tracker: radio_button_tracker[key] = 0 radio_button_tracker[key] += 1 if data_dict[key] == radio_button_tracker[key] - 1: assert element[TemplateConstants(). checkbox_field_value_key] == BasePdfName( "/" + str(data_dict[key]), False) else: assert (element[TemplateConstants().checkbox_field_value_key] == pdfrw.PdfName.Off)
def test_build_elements_sejda(sejda_template, sejda_data): data_dict = {key: False for key in sejda_data.keys()} for k, v in TemplateMiddleware().build_elements(sejda_template, sejda=True).items(): if k in data_dict and k == v.name: data_dict[k] = True for k in data_dict.keys(): assert data_dict[k]