You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

51 lines
1.6 KiB

import unittest
from unittest.mock import MagicMock, patch
import pandas as pd
from pandas.testing import assert_frame_equal
from data_import.pipeline.readers import (
FILE_NAME_COLUMN,
UPLOAD_NAME_COLUMN,
UUID_COLUMN,
Reader,
)
class TestReader(unittest.TestCase):
def setUp(self):
self.parser = MagicMock()
self.parser.parse.return_value = [{"a": 1}, {"a": 2}]
filename = MagicMock()
filename.generated_name = "filename"
filename.upload_name = "upload_name"
self.filenames = MagicMock()
self.filenames.__iter__.return_value = [filename]
self.rows = [
{
UUID_COLUMN: "uuid",
FILE_NAME_COLUMN: filename.generated_name,
UPLOAD_NAME_COLUMN: filename.upload_name,
"a": 1,
},
{
UUID_COLUMN: "uuid",
FILE_NAME_COLUMN: filename.generated_name,
UPLOAD_NAME_COLUMN: filename.upload_name,
"a": 2,
},
]
@patch("data_import.pipeline.readers.uuid.uuid4")
def test_iter_method(self, mock):
mock.return_value = "uuid"
reader = Reader(self.filenames, self.parser)
self.assertEqual(list(reader), self.rows)
@patch("data_import.pipeline.readers.uuid.uuid4")
def test_batch(self, mock):
mock.return_value = "uuid"
reader = Reader(self.filenames, self.parser)
batch = next(reader.batch(2))
expected_df = pd.DataFrame(self.rows)
assert_frame_equal(batch, expected_df)