1+ import pytest
12import json
23
34import azure .functions as func
45
56import time_tracker .time_entries ._application ._time_entries as azure_time_entries
7+ from time_tracker ._infrastructure import DB
8+ from time_tracker .time_entries import _domain as domain_time_entries
9+ from time_tracker .time_entries import _infrastructure as infrastructure_time_entries
10+
611
712TIME_ENTRY_URL = "/api/time-entries/"
813
914
15+ @pytest .fixture (name = 'insert_time_entry' )
16+ def _insert_time_entry () -> domain_time_entries .TimeEntry :
17+ def _new_time_entry (time_entry : domain_time_entries .TimeEntry , database : DB ):
18+ dao = infrastructure_time_entries .TimeEntriesSQLDao (database )
19+ new_time_entry = dao .create (time_entry )
20+ return new_time_entry
21+ return _new_time_entry
22+
23+
1024def test__time_entry_azure_endpoint__creates_an_time_entry__when_time_entry_has_all_attributes (
1125 test_db , time_entry_factory , activity_factory , insert_activity
1226):
@@ -26,3 +40,39 @@ def test__time_entry_azure_endpoint__creates_an_time_entry__when_time_entry_has_
2640
2741 assert response .status_code == 201
2842 assert time_entry_json_data == time_entry_body
43+
44+
45+ def test__delete_time_entries_azure_endpoint__returns_an_time_entry_with_true_deleted__when_its_id_is_found (
46+ test_db , time_entry_factory , insert_time_entry , insert_activity , activity_factory ,
47+ ):
48+ inserted_activity = insert_activity (activity_factory (), test_db ).__dict__
49+ time_entry_body = time_entry_factory (activity_id = inserted_activity ["id" ], technologies = "[jira,sql]" )
50+ inserted_time_entry = insert_time_entry (time_entry_body , test_db )
51+
52+ req = func .HttpRequest (
53+ method = 'DELETE' ,
54+ body = None ,
55+ url = TIME_ENTRY_URL ,
56+ route_params = {"id" : inserted_time_entry .id },
57+ )
58+
59+ response = azure_time_entries ._delete_time_entry .delete_time_entry (req )
60+ time_entry_json_data = json .loads (response .get_body ().decode ("utf-8" ))
61+
62+ assert response .status_code == 200
63+ assert time_entry_json_data ['deleted' ] is True
64+
65+
66+ def test__delete_time_entries_azure_endpoint__returns_a_status_code_400__when_time_entry_recive_invalid_id (
67+ ):
68+ req = func .HttpRequest (
69+ method = "DELETE" ,
70+ body = None ,
71+ url = TIME_ENTRY_URL ,
72+ route_params = {"id" : "invalid id" },
73+ )
74+
75+ response = azure_time_entries ._delete_time_entry .delete_time_entry (req )
76+
77+ assert response .status_code == 400
78+ assert response .get_body () == b'Invalid Format ID'
0 commit comments