mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
keep it minimal first
This commit is contained in:
parent
85cfa15335
commit
414bdc6431
3 changed files with 1 additions and 94 deletions
|
|
@ -1,17 +1,14 @@
|
|||
import boto3
|
||||
import json
|
||||
from uuid import UUID
|
||||
from datetime import datetime, timezone
|
||||
from fastapi import APIRouter, Depends, HTTPException, Query
|
||||
from sqlmodel import select
|
||||
from sqlalchemy.dialects.postgresql import insert
|
||||
|
||||
from backend.app.dependencies import validate_token
|
||||
from backend.app.config import get_settings
|
||||
from backend.app.db.connection import get_db_session
|
||||
from backend.app.db.models.bulk_address_uploads import BulkAddressUpload
|
||||
from backend.app.db.models.portfolio import PropertyModel, PropertyCreationStatus, PortfolioStatus
|
||||
from backend.app.bulk_uploads.schema import TriggerSplitterRequest, ConfirmMatchesRequest
|
||||
from backend.app.bulk_uploads.schema import TriggerSplitterRequest
|
||||
from utils.s3 import parse_s3_uri, read_csv_from_s3
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +1,7 @@
|
|||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class TriggerSplitterRequest(BaseModel):
|
||||
task_id: str
|
||||
sub_task_id: str
|
||||
s3_uri: str
|
||||
|
||||
|
||||
class AcceptedRow(BaseModel):
|
||||
uprn: int
|
||||
address_line_1: str
|
||||
address_line_2: Optional[str] = None
|
||||
postcode: str
|
||||
internal_reference: Optional[str] = None
|
||||
|
||||
|
||||
class ConfirmMatchesRequest(BaseModel):
|
||||
accepted_rows: list[AcceptedRow]
|
||||
|
|
|
|||
|
|
@ -1,77 +0,0 @@
|
|||
from unittest.mock import MagicMock, patch
|
||||
import pytest
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def client():
|
||||
with patch("backend.app.config.get_settings") as mock_settings:
|
||||
mock_settings.return_value = MagicMock(
|
||||
ENVIRONMENT="local",
|
||||
AWS_DEFAULT_REGION="eu-west-1",
|
||||
POSTCODE_SPLITTER_SQS_URL="https://sqs.eu-west-1.amazonaws.com/123456789/postcode-splitter",
|
||||
)
|
||||
from backend.app.main import app
|
||||
yield TestClient(app)
|
||||
|
||||
|
||||
@patch("backend.app.bulk_uploads.router.boto3")
|
||||
@patch("backend.app.bulk_uploads.router.TasksInterface")
|
||||
def test_trigger_splitter_creates_task_and_enqueues(mock_tasks_cls, mock_boto3, client):
|
||||
mock_tasks = MagicMock()
|
||||
mock_tasks.create_task.return_value = ("task-123", "subtask-456")
|
||||
mock_tasks_cls.return_value = mock_tasks
|
||||
|
||||
mock_sqs = MagicMock()
|
||||
mock_sqs.send_message.return_value = {"MessageId": "msg-789"}
|
||||
mock_boto3.client.return_value = mock_sqs
|
||||
|
||||
response = client.post(
|
||||
"/v1/bulk-uploads/trigger-splitter",
|
||||
json={
|
||||
"upload_id": "upload-abc",
|
||||
"s3_uri": "s3://bucket/file.csv",
|
||||
"portfolio_id": "portfolio-xyz",
|
||||
},
|
||||
headers={"Authorization": "Bearer test-token"},
|
||||
)
|
||||
|
||||
assert response.status_code == 202
|
||||
body = response.json()
|
||||
assert body["task_id"] == "task-123"
|
||||
assert body["sub_task_id"] == "subtask-456"
|
||||
assert body["sqs_message_id"] == "msg-789"
|
||||
|
||||
mock_sqs.send_message.assert_called_once()
|
||||
call_kwargs = mock_sqs.send_message.call_args[1]
|
||||
import json
|
||||
payload = json.loads(call_kwargs["MessageBody"])
|
||||
assert payload["task_id"] == "task-123"
|
||||
assert payload["sub_task_id"] == "subtask-456"
|
||||
assert payload["s3_uri"] == "s3://bucket/file.csv"
|
||||
|
||||
|
||||
@patch("backend.app.bulk_uploads.router.boto3")
|
||||
@patch("backend.app.bulk_uploads.router.TasksInterface")
|
||||
def test_trigger_splitter_uses_provided_task_ids(mock_tasks_cls, mock_boto3, client):
|
||||
mock_sqs = MagicMock()
|
||||
mock_sqs.send_message.return_value = {"MessageId": "msg-999"}
|
||||
mock_boto3.client.return_value = mock_sqs
|
||||
|
||||
response = client.post(
|
||||
"/v1/bulk-uploads/trigger-splitter",
|
||||
json={
|
||||
"upload_id": "upload-abc",
|
||||
"s3_uri": "s3://bucket/file.csv",
|
||||
"portfolio_id": "portfolio-xyz",
|
||||
"task_id": "existing-task",
|
||||
"sub_task_id": "existing-subtask",
|
||||
},
|
||||
headers={"Authorization": "Bearer test-token"},
|
||||
)
|
||||
|
||||
assert response.status_code == 202
|
||||
mock_tasks_cls.assert_not_called()
|
||||
body = response.json()
|
||||
assert body["task_id"] == "existing-task"
|
||||
assert body["sub_task_id"] == "existing-subtask"
|
||||
Loading…
Add table
Reference in a new issue