Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
refactor: TT-356 change directory from files in source to azure_time_…
…tracker
  • Loading branch information
Andrés Soto committed Oct 13, 2021
commit 11831bd795b9f481636b6d2a750f2b106e34eb92
35 changes: 31 additions & 4 deletions V2/azure_time_tracker/activities/__init__.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,48 @@
from time_tracker.source.use_cases.use_case import get_all, get_by_id
from time_tracker.source.daos.activities_json_dao import ActivitiesJsonDao
from time_tracker.source.services.activity_service import ActivityService
from time_tracker.source import use_cases

import logging
import json
import azure.functions as func


JSON_PATH = 'V2/azure_time_tracker/time_tracker/source/activities_data.json'


def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info(
'Python HTTP trigger function processed a request to get an activity.'
)
activity_id = req.route_params.get('id')
status_code = 200

if activity_id:
response = json.dumps(get_by_id(activity_id))
activity_use_case = use_cases.GetActivityUseCase(
create_activity_service(JSON_PATH)
)
activity = activity_use_case.get_activity_by_id(activity_id)
if activity:
response = json.dumps(activity.__dict__)
else:
response = b'Not Found'
status_code = 404
else:
response = json.dumps(get_all())
activities_use_case = use_cases.GetActivitiesUseCase(
create_activity_service(JSON_PATH)
)
response = json.dumps(
[
activity.__dict__
for activity in activities_use_case.get_activities()
]
)

return func.HttpResponse(
body=response, status_code=200, mimetype="application/json"
body=response, status_code=status_code, mimetype="application/json"
)


def create_activity_service(path: str):
activity_json = ActivitiesJsonDao(path)
return ActivityService(activity_json)
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from V2.source.dtos.activity import Activity
from time_tracker.source.dtos.activity import Activity
import abc
import typing

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from V2.source.daos.activities_dao import ActivitiesDao
from V2.source.dtos.activity import Activity
from time_tracker.source.daos.activities_dao import ActivitiesDao
from time_tracker.source.dtos.activity import Activity
import dataclasses
import json
import typing
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,13 @@ def create_app(test_config=None):
if test_config is not None:
app.config.from_mapping(test_config)

activities_namespace = Namespace('activities', description='Endpoint for activities')
activities_namespace = Namespace(
'activities', description='Endpoint for activities'
)
activities_namespace.route('/')(activities_endpoints.Activities)
activities_namespace.route('/<string:activity_id>')(activities_endpoints.Activity)
activities_namespace.route('/<string:activity_id>')(
activities_endpoints.Activity
)

api.add_namespace(activities_namespace)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
from V2.source.daos.activities_json_dao import ActivitiesJsonDao
from V2.source.services.activity_service import ActivityService
from V2.source import use_cases
from time_tracker.source.daos.activities_json_dao import ActivitiesJsonDao
from time_tracker.source.services.activity_service import ActivityService
from time_tracker.source import use_cases
from flask_restplus import Resource
from http import HTTPStatus

JSON_PATH = './V2/source/activities_data.json'
JSON_PATH = 'V2/azure_time_tracker/time_tracker/source/activities_data.json'


class Activities(Resource):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from V2.source.daos.activities_dao import ActivitiesDao
from V2.source.dtos.activity import Activity
from time_tracker.source.daos.activities_dao import ActivitiesDao
from time_tracker.source.dtos.activity import Activity
import typing


Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from V2.source.services.activity_service import ActivityService
from V2.source.dtos.activity import Activity
from time_tracker.source.services.activity_service import ActivityService
from time_tracker.source.dtos.activity import Activity
import typing


Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from V2.source.services.activity_service import ActivityService
from V2.source.dtos.activity import Activity
from time_tracker.source.services.activity_service import ActivityService
from time_tracker.source.dtos.activity import Activity


class GetActivityUseCase:
Expand Down
33 changes: 0 additions & 33 deletions V2/azure_time_tracker/time_tracker/source/use_cases/use_case.py

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
from activities import main
import azure.functions as func
import json
import pytest
import typing
import shutil


@pytest.fixture
def activities_json(tmpdir_factory):
temporary_directory = tmpdir_factory.mktemp("tmp")
json_file = temporary_directory.join("activities.json")
activities = [
{
'id': 'c61a4a49-3364-49a3-a7f7-0c5f2d15072b',
'name': 'Development',
'description': 'Development',
'deleted': 'b4327ba6-9f96-49ee-a9ac-3c1edf525172',
'status': None,
'tenant_id': 'cc925a5d-9644-4a4f-8d99-0bee49aadd05',
},
{
'id': '94ec92e2-a500-4700-a9f6-e41eb7b5507c',
'name': 'Management',
'description': None,
'deleted': '7cf6efe5-a221-4fe4-b94f-8945127a489a',
'status': None,
'tenant_id': 'cc925a5d-9644-4a4f-8d99-0bee49aadd05',
},
{
'id': 'd45c770a-b1a0-4bd8-a713-22c01a23e41b',
'name': 'Operations',
'description': 'Operation activities performed.',
'deleted': '7cf6efe5-a221-4fe4-b94f-8945127a489a',
'status': 'active',
'tenant_id': 'cc925a5d-9644-4a4f-8d99-0bee49aadd05',
},
]

with open(json_file, 'w') as outfile:
json.dump(activities, outfile)

with open(json_file) as outfile:
activities_json = json.load(outfile)

yield activities_json
shutil.rmtree(temporary_directory)


def test__activity_azure_endpoint__returns_all_activities(
activities_json: typing.List[dict],
):
req = func.HttpRequest(method='GET', body=None, url='/api/activities')

response = main(req)
activities_json_data = response.get_body().decode("utf-8")

assert response.status_code == 200
assert activities_json_data == json.dumps(activities_json)


def test__activity_azure_endpoint__returns_an_activity__when_activity_matches_its_id(
activities_json: typing.List[dict],
):
req = func.HttpRequest(
method='GET',
body=None,
url='/api/activities/',
route_params={"id": activities_json[0]['id']},
)

response = main(req)
activitiy_json_data = response.get_body().decode("utf-8")

assert response.status_code == 200
assert activitiy_json_data == json.dumps(activities_json[0])
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from V2.source.entry_points.flask_api import create_app
from time_tracker.source.entry_points.flask_api import create_app
import json
import pytest
import typing
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from V2.source.daos.activities_json_dao import ActivitiesJsonDao
from V2.source.dtos.activity import Activity
from time_tracker.source.daos.activities_json_dao import ActivitiesJsonDao
from time_tracker.source.dtos.activity import Activity
from faker import Faker
import json
import pytest
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from V2.source.entry_points.flask_api.activities_endpoints import (
from time_tracker.source.entry_points.flask_api.activities_endpoints import (
Activities,
Activity,
)
from V2.source import use_cases
from V2.source.dtos.activity import Activity as ActivityDTO
from time_tracker.source import use_cases
from time_tracker.source.dtos.activity import Activity as ActivityDTO
from pytest_mock import MockFixture
from faker import Faker
from werkzeug.exceptions import NotFound
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from V2.source.services.activity_service import ActivityService
from time_tracker.source.services.activity_service import ActivityService
from faker import Faker


Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from V2.source.services.activity_service import ActivityService
from V2.source import use_cases
from time_tracker.source.services.activity_service import ActivityService
from time_tracker.source import use_cases
from pytest_mock import MockFixture
from faker import Faker

Expand Down