55import requests_mock
66from make_data .data_loader import NYCTaxiDataFetcher , ParquetDataSaver , GCSUploader
77
8+
89@pytest .fixture
910def requests_mock_fixture ():
1011 with requests_mock .Mocker () as m :
1112 yield m
1213
14+
1315@pytest .fixture
1416def sample_data ():
1517 yield pd .DataFrame ({"col1" : [1 , 2 , 3 ]})
1618
19+
1720def test_nyc_taxi_data_fetcher_fetch (requests_mock_fixture , sample_data ):
1821 year , month = 2023 , 1
1922 fetcher = NYCTaxiDataFetcher ("green" )
2023 url = fetcher ._construct_url (year , month )
21-
24+
2225 buffer = BytesIO ()
2326 sample_data .to_parquet (buffer , index = False )
2427 buffer .seek (0 )
@@ -29,6 +32,7 @@ def test_nyc_taxi_data_fetcher_fetch(requests_mock_fixture, sample_data):
2932 assert not df .empty
3033 assert "col1" in df .columns
3134
35+
3236def test_nyc_taxi_data_fetcher_fetch_failure (requests_mock_fixture ):
3337 """Test the case where the fetch fails and status code 1 is returned."""
3438 fetcher = NYCTaxiDataFetcher ("green" )
@@ -38,6 +42,7 @@ def test_nyc_taxi_data_fetcher_fetch_failure(requests_mock_fixture):
3842 df = fetcher .fetch (2023 , 1 )
3943 assert df == 1
4044
45+
4146def test_parquet_data_saver_save (sample_data ):
4247 saver = ParquetDataSaver ()
4348 file_name = "test.parquet"
@@ -48,13 +53,15 @@ def test_parquet_data_saver_save(sample_data):
4853 loaded_df = pd .read_parquet (file_name )
4954 assert loaded_df .equals (sample_data )
5055
56+
5157def test_parquet_data_saver_cleanup ():
5258 saver = ParquetDataSaver ()
5359 file_name = "test.parquet"
5460
5561 saver .cleanup (file_name )
5662 assert not os .path .exists (file_name )
5763
64+
5865def test_gcs_uploader_upload (mocker , tmp_path ):
5966 mock_client = mocker .patch ("google.cloud.storage.Client" )
6067 mock_bucket = mock_client .return_value .bucket .return_value
@@ -70,6 +77,7 @@ def test_gcs_uploader_upload(mocker, tmp_path):
7077
7178 mock_blob .upload_from_filename .assert_called_once_with (str (file_name ))
7279
80+
7381def test_gcs_uploader_check_file_exists (mocker ):
7482 mock_client = mocker .patch ("google.cloud.storage.Client" )
7583 mock_bucket = mock_client .return_value .bucket .return_value
0 commit comments