diff --git a/ecs/crm-datafetch/tests/aws/test_s3.py b/ecs/crm-datafetch/tests/aws/test_s3.py index 7153d2a0..e30deaa7 100644 --- a/ecs/crm-datafetch/tests/aws/test_s3.py +++ b/ecs/crm-datafetch/tests/aws/test_s3.py @@ -1,5 +1,5 @@ import pytest -from src.aws.s3 import ConfigBucket, S3Resource +from src.aws.s3 import ConfigBucket, DataBucket, S3Resource @pytest.fixture @@ -157,3 +157,61 @@ class TestConfigBucket: sut = ConfigBucket() assert str(sut) == bucket_name + + +class TestDataBucket: + + def test_put_csv(self, s3_test, s3_client, bucket_name, monkeypatch): + """ + Cases: + 任意のファイルをPUTできること + Arranges: + + Expects: + PUTしたファイルが存在する + """ + monkeypatch.setattr('src.aws.s3.IMPORT_DATA_BUCKET', bucket_name) + monkeypatch.setattr('src.aws.s3.CRM_IMPORT_DATA_FOLDER', 'crm/target') + + sut = DataBucket() + actual = sut.put_csv('test.csv', 'test,test,test') + + actual = s3_client.get_object(Bucket=bucket_name, Key=f'crm/target/test.csv') + assert actual['Body'].read().decode('utf-8') == 'test,test,test' + + def test_put_csv_from(self, s3_test, s3_client, bucket_name, monkeypatch): + """ + Cases: + 他のバケットから任意のファイルをコピーできること + Arranges: + + Expects: + コピーしたファイルが存在する + """ + for_copy_bucket = 'for-copy-bucket' + s3_client.create_bucket(Bucket=for_copy_bucket) + s3_client.put_object(Bucket=bucket_name, Key='hogehoge/test.csv', Body=b'test,test,test') + + monkeypatch.setattr('src.aws.s3.IMPORT_DATA_BUCKET', for_copy_bucket) + monkeypatch.setattr('src.aws.s3.CRM_IMPORT_DATA_FOLDER', 'crm/target') + + sut = DataBucket() + sut.put_csv_from(bucket_name, 'hogehoge/test.csv') + actual = s3_client.get_object(Bucket=for_copy_bucket, Key=f'crm/target/test.csv') + + assert actual['Body'].read().decode('utf-8') == 'test,test,test' + + def test_data_bucket_str(self, s3_test, s3_client, bucket_name, monkeypatch): + """ + Cases: + 設定ファイル配置バケットを文字列化したとき、バケット名が取得できること + Arranges: + + Expects: + 環境変数の設定ファイル配置バケット名と一致する + """ + monkeypatch.setattr('src.aws.s3.IMPORT_DATA_BUCKET', bucket_name) + + sut = DataBucket() + + assert str(sut) == bucket_name