Skip to content

Commit

Permalink
add as_txt functionality to produce string (#455)
Browse files Browse the repository at this point in the history
  • Loading branch information
Adam-W1 authored Jan 23, 2024
1 parent 12a4ce3 commit defff14
Show file tree
Hide file tree
Showing 20 changed files with 70 additions and 36 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,5 @@ tsconfig.tsbuildinfo
.yarn/install-state.gz
docs/**/typedoc
.venv

__pycache__/
2 changes: 1 addition & 1 deletion python/answer_displayers/CheckboxesField.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from python.answer_displayer import AnswerDisplayer
from python.answer_displayers.shared.answer_displayer import AnswerDisplayer


class CheckboxesFieldDisplayer(AnswerDisplayer):
Expand Down
2 changes: 1 addition & 1 deletion python/answer_displayers/ClientSideFileUploadField.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from python.answer_displayer import AnswerDisplayer
from python.answer_displayers.shared.answer_displayer import AnswerDisplayer


class ClientSideFileUploadFieldDisplayer(AnswerDisplayer):
Expand Down
2 changes: 1 addition & 1 deletion python/answer_displayers/DatePartsField.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import contextlib
import datetime

from python.answer_displayer import AnswerDisplayer
from python.answer_displayers.shared.answer_displayer import AnswerDisplayer


class DatePartsFieldDisplayer(AnswerDisplayer):
Expand Down
2 changes: 1 addition & 1 deletion python/answer_displayers/EmailAddressField.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from python.answer_displayer import AnswerDisplayer
from python.answer_displayers.shared.answer_displayer import AnswerDisplayer


class EmailAddressFieldDisplayer(AnswerDisplayer):
Expand Down
2 changes: 1 addition & 1 deletion python/answer_displayers/FreeTextField.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from bs4 import BeautifulSoup
from python.answer_displayer import AnswerDisplayer
from python.answer_displayers.shared.answer_displayer import AnswerDisplayer


class FreeTextFieldDisplayer(AnswerDisplayer):
Expand Down
2 changes: 1 addition & 1 deletion python/answer_displayers/MonthYearField.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import contextlib
import datetime

from python.answer_displayer import AnswerDisplayer
from python.answer_displayers.shared.answer_displayer import AnswerDisplayer


class MonthYearFieldDisplayer(AnswerDisplayer):
Expand Down
27 changes: 23 additions & 4 deletions python/answer_displayers/MultiInputField.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import Any

from python.answer_displayer import AnswerDisplayer
from python.answer_displayers.shared.answer_displayer import AnswerDisplayer


class MultiInputFieldDisplayer(AnswerDisplayer):
Expand All @@ -22,7 +22,7 @@ def _legacy_parsed_answer(self) -> str:

@property
def _parse_multi_input_component(self) -> list[dict[str, AnswerDisplayer]]:
from python.dictionaries import (
from python.answer_displayers.shared.dictionaries import (
EXISTING_KEY_TO_TYPE_DICT,
FIELD_TO_DISPLAYER_DICT_MULTI_INPUT,
)
Expand All @@ -46,11 +46,30 @@ def as_csv(self) -> str | list[dict[str, AnswerDisplayer]]:
return self._parse_multi_input_component

@property
def as_txt(self) -> str | list[dict[str, AnswerDisplayer]]:
def as_txt(self) -> str:
if self.legacy:
return self._legacy_parsed_answer
else:
return self._parse_multi_input_component
multi_input_rows_as_string = ""
for index, answer_displayers_for_each_item_in_row in enumerate(
self._parse_multi_input_component
):
text_for_row = ""
for (
key,
answer_displayer,
) in answer_displayers_for_each_item_in_row.items():
text_for_row = text_for_row + str(answer_displayer.as_txt) + "\n"
multi_input_rows_as_string = (
multi_input_rows_as_string
+ "Multi-input item "
+ str(index + 1)
+ "\n"
+ text_for_row
+ "\n"
)

return multi_input_rows_as_string

@property
def as_pdf(self) -> str | list[dict[str, AnswerDisplayer]]:
Expand Down
2 changes: 1 addition & 1 deletion python/answer_displayers/NumberField.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from python.answer_displayer import AnswerDisplayer
from python.answer_displayers.shared.answer_displayer import AnswerDisplayer


class NumberFieldDisplayer(AnswerDisplayer):
Expand Down
2 changes: 1 addition & 1 deletion python/answer_displayers/RadiosField.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from python.answer_displayer import AnswerDisplayer
from python.answer_displayers.shared.answer_displayer import AnswerDisplayer


class RadiosFieldDisplayer(AnswerDisplayer):
Expand Down
2 changes: 1 addition & 1 deletion python/answer_displayers/TelephoneNumberField.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from python.answer_displayer import AnswerDisplayer
from python.answer_displayers.shared.answer_displayer import AnswerDisplayer


class TelephoneNumberFieldDisplayer(AnswerDisplayer):
Expand Down
2 changes: 1 addition & 1 deletion python/answer_displayers/TextField.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from python.answer_displayer import AnswerDisplayer
from python.answer_displayers.shared.answer_displayer import AnswerDisplayer


class TextFieldDisplayer(AnswerDisplayer):
Expand Down
2 changes: 1 addition & 1 deletion python/answer_displayers/UkAddressField.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from python.answer_displayer import AnswerDisplayer
from python.answer_displayers.shared.answer_displayer import AnswerDisplayer


class UkAddressFieldDisplayer(AnswerDisplayer):
Expand Down
2 changes: 1 addition & 1 deletion python/answer_displayers/WebsiteField.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from python.answer_displayer import AnswerDisplayer
from python.answer_displayers.shared.answer_displayer import AnswerDisplayer


class WebsiteFieldDisplayer(AnswerDisplayer):
Expand Down
2 changes: 1 addition & 1 deletion python/answer_displayers/YesNoField.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from python.answer_displayer import AnswerDisplayer
from python.answer_displayers.shared.answer_displayer import AnswerDisplayer


class YesNoFieldDisplayer(AnswerDisplayer):
Expand Down
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion python/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "funding-service-design-digital-form-builder-tools"
version = "0.0.2" # please follow semver.org if you can!
version = "1.0.0" # please follow semver.org if you can!
authors = [
{ name="DLUHC", email="[email protected]" },
]
Expand Down
47 changes: 30 additions & 17 deletions python/tests/test_MultiInputField.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,17 @@ def test_as_pdf(answer, expected_result):
_TEST_INPUTS = [
[
{
"gLqiyJ": "Test Value for Money CYP Form",
"gLqiyJ": "Test Value for Money CYP Form FIRST",
"yuzbjT": 678,
"HpLJyL": {"HpLJyL__month": 3, "HpLJyL__year": 2024},
"MadvIr": "Capital",
}
},
{
"gLqiyJ": "Test Value for Money CYP Form SECOND",
"yuzbjT": 678,
"HpLJyL": {"HpLJyL__month": 4, "HpLJyL__year": 2024},
"MadvIr": "Capital",
},
],
[
{
Expand All @@ -66,14 +72,23 @@ def test_as_pdf(answer, expected_result):

_TEST_OUTPUTS_LENGTHS = [4, 5]

_TEST_TEXT_OUTPUTS = [
"Multi-input item 1\nTest Value for Money CYP Form FIRST\n£678.00\nMarch 2024\nCapital\n\nMulti-input item 2\nTest Value for Money CYP Form SECOND\n£678.00\nApril 2024\nCapital\n\n",
"Multi-input item 1\nTest About your organisation CYP Form\n268 Schultz Fold, Upper Berge, W12 0HS\nhttps://twitter.com/luhc\nNone\nNone\n\n",
]
_TEST_OUTPUTS = [
["Test Value for Money CYP Form", "£678.00", "March 2024", "Capital"],
[
"Test About your organisation CYP Form",
"268 Schultz Fold, Upper Berge, W12 0HS",
"https://twitter.com/luhc",
None,
None,
["Test Value for Money CYP Form FIRST", "£678.00", "March 2024", "Capital"],
["Test Value for Money CYP Form SECOND", "£678.00", "April 2024", "Capital"],
],
[
[
"Test About your organisation CYP Form",
"268 Schultz Fold, Upper Berge, W12 0HS",
"https://twitter.com/luhc",
None,
None,
]
],
]

Expand All @@ -84,20 +99,18 @@ def test_as_pdf(answer, expected_result):
)
def test_as_csv_multi_input(answer, expected_answers):
answer_displayers = MultiInputFieldDisplayer(answer).as_csv
for answer_displayer_dict in answer_displayers:
for key, expected_answer in zip(answer_displayer_dict, expected_answers):
for index, answer_displayer_dict in enumerate(answer_displayers):
for key, expected_answer in zip(answer_displayer_dict, expected_answers[index]):
assert answer_displayer_dict[key].as_csv == expected_answer


@pytest.mark.parametrize(
"answer, expected_answers",
zip(_TEST_INPUTS, _TEST_OUTPUTS),
zip(_TEST_INPUTS, _TEST_TEXT_OUTPUTS),
)
def test_as_txt_multi_input(answer, expected_answers):
answer_displayers = MultiInputFieldDisplayer(answer).as_txt
for answer_displayer_dict in answer_displayers:
for key, expected_answer in zip(answer_displayer_dict, expected_answers):
assert answer_displayer_dict[key].as_txt == expected_answer
multiinput_as_text = MultiInputFieldDisplayer(answer).as_txt
assert multiinput_as_text == expected_answers


@pytest.mark.parametrize(
Expand All @@ -106,6 +119,6 @@ def test_as_txt_multi_input(answer, expected_answers):
)
def test_as_pdf_multi_input(answer, expected_answers):
answer_displayers = MultiInputFieldDisplayer(answer).as_pdf
for answer_displayer_dict in answer_displayers:
for key, expected_answer in zip(answer_displayer_dict, expected_answers):
for index, answer_displayer_dict in enumerate(answer_displayers):
for key, expected_answer in zip(answer_displayer_dict, expected_answers[index]):
assert answer_displayer_dict[key].as_pdf == expected_answer
2 changes: 1 addition & 1 deletion version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
VERSION=0.1.230
VERSION=0.1.231

0 comments on commit defff14

Please sign in to comment.