From 1608d01bb68c1f6292b04c70caa609d34943b371 Mon Sep 17 00:00:00 2001 From: Alex Schofield Date: Wed, 19 Feb 2025 15:37:57 +0000 Subject: rename write function & update references --- obfuscator/csv_writer.py | 23 ------------------- obfuscator/write.py | 23 +++++++++++++++++++ test/test_csv_writer.py | 57 ------------------------------------------------ test/test_write.py | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 80 insertions(+), 80 deletions(-) delete mode 100644 obfuscator/csv_writer.py create mode 100644 obfuscator/write.py delete mode 100644 test/test_csv_writer.py create mode 100644 test/test_write.py diff --git a/obfuscator/csv_writer.py b/obfuscator/csv_writer.py deleted file mode 100644 index de7cd4b..0000000 --- a/obfuscator/csv_writer.py +++ /dev/null @@ -1,23 +0,0 @@ -import csv -import io -from typing import List, Dict -from obfuscator.logger import get_logger - -logger = get_logger("CSVWRITER") - - -def create_byte_stream(data: List[Dict[str, str]]) -> bytes: - if not data: - logger.error("Invalid or empty data was provided to write") - - output = io.StringIO() - - headers = list(data[0].keys()) - - writer = csv.DictWriter(output, fieldnames=headers) - writer.writeheader() - writer.writerows(data) - - csv_string = output.getvalue() - - return csv_string.encode("utf-8") diff --git a/obfuscator/write.py b/obfuscator/write.py new file mode 100644 index 0000000..de7cd4b --- /dev/null +++ b/obfuscator/write.py @@ -0,0 +1,23 @@ +import csv +import io +from typing import List, Dict +from obfuscator.logger import get_logger + +logger = get_logger("CSVWRITER") + + +def create_byte_stream(data: List[Dict[str, str]]) -> bytes: + if not data: + logger.error("Invalid or empty data was provided to write") + + output = io.StringIO() + + headers = list(data[0].keys()) + + writer = csv.DictWriter(output, fieldnames=headers) + writer.writeheader() + writer.writerows(data) + + csv_string = output.getvalue() + + return csv_string.encode("utf-8") diff --git a/test/test_csv_writer.py b/test/test_csv_writer.py deleted file mode 100644 index eceac28..0000000 --- a/test/test_csv_writer.py +++ /dev/null @@ -1,57 +0,0 @@ -import io -import csv -from obfuscator.csv_writer import create_byte_stream - - -def csv_bytes_to_list(csv_bytes: bytes): - csv_string = csv_bytes.decode("utf-8") - f = io.StringIO(csv_string) - reader = csv.DictReader(f) - return [dict(row) for row in reader] - - -def test_create_byte_stream_valid_data(): - data = [ - {"student_id": "1234", "name": "Student 1", "course": "Course 1"}, - {"student_id": "5678", "name": "Student 2", "course": "Course 2"}, - ] - csv_bytes = create_byte_stream(data) - result = csv_bytes_to_list(csv_bytes) - assert result == data - - -def test_create_byte_stream_empty_data(): - csv_bytes = create_byte_stream([]) - assert csv_bytes == b"" - - -def test_create_byte_stream_handles_quoted_fields(): - data = [ - {"student_id": "1234", "name": 'Student "One"', "course": "Course, A"}, - {"student_id": "5678", "name": 'Student "Two"', "course": "Course, B"}, - ] - csv_bytes = create_byte_stream(data) - result = csv_bytes_to_list(csv_bytes) - assert result == data - - -def test_create_byte_stream_consistent_header_order(): - data = [ - {"student_id": "1234", "name": "Alice", "course": "Math"}, - {"student_id": "5678", "name": "Bob", "course": "Science"}, - ] - csv_bytes = create_byte_stream(data) - csv_string = csv_bytes.decode("utf-8") - header_line = csv_string.splitlines()[0] - expected_header = ",".join(data[0].keys()) - assert header_line == expected_header - - -def test_create_byte_stream_special_characters(): - data = [ - {"student_id": "1234", "name": "Student 1", "course": "Line1\nLine2"}, - {"student_id": "5678", "name": "Student 2", "course": "Value with, comma"}, - ] - csv_bytes = create_byte_stream(data) - result = csv_bytes_to_list(csv_bytes) - assert result == data diff --git a/test/test_write.py b/test/test_write.py new file mode 100644 index 0000000..eceac28 --- /dev/null +++ b/test/test_write.py @@ -0,0 +1,57 @@ +import io +import csv +from obfuscator.csv_writer import create_byte_stream + + +def csv_bytes_to_list(csv_bytes: bytes): + csv_string = csv_bytes.decode("utf-8") + f = io.StringIO(csv_string) + reader = csv.DictReader(f) + return [dict(row) for row in reader] + + +def test_create_byte_stream_valid_data(): + data = [ + {"student_id": "1234", "name": "Student 1", "course": "Course 1"}, + {"student_id": "5678", "name": "Student 2", "course": "Course 2"}, + ] + csv_bytes = create_byte_stream(data) + result = csv_bytes_to_list(csv_bytes) + assert result == data + + +def test_create_byte_stream_empty_data(): + csv_bytes = create_byte_stream([]) + assert csv_bytes == b"" + + +def test_create_byte_stream_handles_quoted_fields(): + data = [ + {"student_id": "1234", "name": 'Student "One"', "course": "Course, A"}, + {"student_id": "5678", "name": 'Student "Two"', "course": "Course, B"}, + ] + csv_bytes = create_byte_stream(data) + result = csv_bytes_to_list(csv_bytes) + assert result == data + + +def test_create_byte_stream_consistent_header_order(): + data = [ + {"student_id": "1234", "name": "Alice", "course": "Math"}, + {"student_id": "5678", "name": "Bob", "course": "Science"}, + ] + csv_bytes = create_byte_stream(data) + csv_string = csv_bytes.decode("utf-8") + header_line = csv_string.splitlines()[0] + expected_header = ",".join(data[0].keys()) + assert header_line == expected_header + + +def test_create_byte_stream_special_characters(): + data = [ + {"student_id": "1234", "name": "Student 1", "course": "Line1\nLine2"}, + {"student_id": "5678", "name": "Student 2", "course": "Value with, comma"}, + ] + csv_bytes = create_byte_stream(data) + result = csv_bytes_to_list(csv_bytes) + assert result == data -- cgit v1.2.3