diff options
| author | lian-manonog <160282780+lian-manonog@users.noreply.github.com> | 2024-08-27 10:48:56 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-27 10:48:56 +0100 |
| commit | c610d3fc42a610ca5daff80606f8e67f9d1e20f2 (patch) | |
| tree | 9a7d397028986693923c9b7169d142c34a783cb0 /tests/test_transform_lambda.py | |
| parent | 5c236c6ee0d0b7e0612a51bf8eaa59322d192a6e (diff) | |
| parent | e51e9fc3c7fa886fe5e753bd123d45c8871673bc (diff) | |
| download | de-project-bentley-c610d3fc42a610ca5daff80606f8e67f9d1e20f2.tar.gz de-project-bentley-c610d3fc42a610ca5daff80606f8e67f9d1e20f2.zip | |
Merge pull request #97 from ajschofield/test/test_transform_lambda
PR: mergeing test_transform_lambda to dev
Diffstat (limited to 'tests/test_transform_lambda.py')
| -rw-r--r-- | tests/test_transform_lambda.py | 61 |
1 files changed, 58 insertions, 3 deletions
diff --git a/tests/test_transform_lambda.py b/tests/test_transform_lambda.py index 37ca08f..5ed743e 100644 --- a/tests/test_transform_lambda.py +++ b/tests/test_transform_lambda.py @@ -1,11 +1,23 @@ -from src.transform_lambda import read_from_s3_subfolder_to_df +from src.transform_lambda import ( + read_from_s3_subfolder_to_df, + list_existing_s3_files, + bucket_name, +) from moto import mock_aws import pytest import pandas as pd import os import boto3 +from botocore.exceptions import ClientError import numpy as np +# import caplog +import logging + + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + @pytest.fixture(scope="class") def aws_credentials(): @@ -23,7 +35,7 @@ def s3_client(aws_credentials): class TestReadFromS3: - @pytest.mark.skip(reason="The test is broken!") + # @pytest.mark.skip(reason="The test is broken!") def test_returns_dictionary_with_correct_value_pair(self, s3_client): s3_client.create_bucket( Bucket="dummy_buc", @@ -53,7 +65,7 @@ class TestReadFromS3: assert isinstance(result["Foods"], pd.DataFrame) assert result["Foods"].eq(expected_df, axis="columns").all(axis=None) - @pytest.mark.skip(reason="The test is broken!") + # @pytest.mark.skip(reason="The test is broken!") def test_returns_dictionary_of_dataframes_for_multiple_tables(self, s3_client): s3_client.upload_file( "tests/dummy_2.csv", "dummy_buc", "Cars/2024/08/21/Cars_14:03:56.csv" @@ -84,3 +96,46 @@ class TestReadFromS3: assert list(result.keys()) == tables assert result["Foods"].eq(expected_foods_df, axis="columns").all(axis=None) assert result["Cars"].eq(expected_cars_df, axis="columns").all(axis=None) + + +class TestListExistingFiles: + def test_functions_receives_error_if_no_bucket(self, s3_client, caplog): + caplog.set_level(logging.INFO) + + with pytest.raises(ClientError): + list_existing_s3_files("rando_bucket", client=s3_client) + + assert ( + "Error listing S3 objects: An error occurred (NoSuchBucket) when calling the ListObjectsV2 operation: The specified bucket does not exist" + in caplog.text + ) + + def test_recieves_logger_error_if_no_files_listed(self, s3_client, caplog): + caplog.set_level(logging.INFO) + + s3_client.create_bucket( + Bucket="mock_bucket", + CreateBucketConfiguration={"LocationConstraint": "eu-west-2"}, + ) + response = list_existing_s3_files("mock_bucket", client=s3_client) + assert "The bucket is empty" in caplog.text + + def test_retrieves_existing_files(self, s3_client, caplog): + caplog.set_level(logging.INFO) + + s3_client.upload_file("tests/dummy.txt", "mock_bucket", "dummy.txt") + result = list_existing_s3_files("mock_bucket", client=s3_client) + assert result == ["dummy.txt"] + + +class TestBucketName: + def test_functions_retrieves_bucket(self, s3_client): + s3_client.create_bucket( + Bucket="mock_bucket", + CreateBucketConfiguration={"LocationConstraint": "eu-west-2"}, + ) + + bucket = bucket_name("mock_bucket", s3_client) + assert bucket == "mock_bucket" + + # def test_ |
