11import json
2+ import pytest
23
34import azure .functions as func
45
56import time_tracker .time_entries ._application ._time_entries as azure_time_entries
7+ import time_tracker .time_entries ._infrastructure as infrastructure
8+ from time_tracker ._infrastructure import DB
9+ from time_tracker .time_entries import _domain
610
7- TIME_ENTRY_URL = "/api/time-entries /"
11+ TIME_ENTRY_URL = "/api/time_entries /"
812
913
14+ @pytest .fixture (name = 'insert_time_entry' )
15+ def _insert_time_entry () -> _domain .TimeEntry :
16+ def _new_time_entry (time_entry : _domain .TimeEntry , database : DB ):
17+ dao = infrastructure .TimeEntriesSQLDao (database )
18+ new_time_entry = dao .create (time_entry )
19+ return new_time_entry .__dict__
20+ return _new_time_entry
21+
1022def test__time_entry_azure_endpoint__creates_an_time_entry__when_time_entry_has_all_attributes (
1123 test_db , time_entry_factory , activity_factory , insert_activity
1224):
@@ -26,3 +38,66 @@ def test__time_entry_azure_endpoint__creates_an_time_entry__when_time_entry_has_
2638
2739 assert response .status_code == 201
2840 assert time_entry_json_data == time_entry_body
41+
42+ def test__time_entry_azure_endpoint__returns_all_time_entries (
43+ create_fake_database , time_entry_factory , insert_time_entry , activity_factory , insert_activity
44+ ):
45+ fake_database = create_fake_database
46+ inserted_activity = insert_activity (activity_factory (), fake_database )
47+ existent_time_entries = time_entry_factory (activity_id = inserted_activity .id , technologies = "[jira,sql]" )
48+ inserted_time_entries = [insert_time_entry (existent_time_entries , fake_database )]
49+
50+ azure_time_entries ._get_time_entries .DATABASE = fake_database
51+ req = func .HttpRequest (method = "GET" , body = None , url = TIME_ENTRY_URL )
52+
53+ response = azure_time_entries .get_time_entries (req )
54+ time_entries_json_data = response .get_body ().decode ("utf-8" )
55+
56+ assert response .status_code == 200
57+ assert time_entries_json_data == json .dumps (inserted_time_entries )
58+
59+
60+ def test__time_entry_azure_endpoint__returns_an_time_entry__when_time_entry_matches_its_id (
61+ create_fake_database , time_entry_factory , insert_time_entry , activity_factory , insert_activity
62+ ):
63+ fake_database = create_fake_database
64+ inserted_activity = insert_activity (activity_factory (), fake_database )
65+ existent_time_entries = time_entry_factory (activity_id = inserted_activity .id , technologies = "[jira,sql]" )
66+ inserted_time_entries = insert_time_entry (existent_time_entries , fake_database )
67+
68+ azure_time_entries ._get_time_entries .DATABASE = fake_database
69+
70+ req = func .HttpRequest (
71+ method = "GET" ,
72+ body = None ,
73+ url = TIME_ENTRY_URL ,
74+ route_params = {"id" : inserted_time_entries ["id" ]},
75+ )
76+
77+ response = azure_time_entries .get_time_entries (req )
78+ time_entry_json_data = response .get_body ().decode ("utf-8" )
79+
80+ assert response .status_code == 200
81+ assert time_entry_json_data == json .dumps (inserted_time_entries )
82+
83+
84+ def test__get_time_entries_azure_endpoint__returns_a_status_code_400__when_time_entry_recive_invalid_id (
85+ create_fake_database , time_entry_factory , insert_time_entry , activity_factory , insert_activity
86+ ):
87+ fake_database = create_fake_database
88+ inserted_activity = insert_activity (activity_factory (), fake_database )
89+ existent_time_entries = time_entry_factory (activity_id = inserted_activity .id , technologies = "[jira,sql]" )
90+ insert_time_entry (existent_time_entries , fake_database )
91+
92+ azure_time_entries ._get_time_entries .DATABASE = fake_database
93+ req = func .HttpRequest (
94+ method = "GET" ,
95+ body = None ,
96+ url = TIME_ENTRY_URL ,
97+ route_params = {"id" : "invalid id" },
98+ )
99+
100+ response = azure_time_entries .get_time_entries (req )
101+
102+ assert response .status_code == 400
103+ assert response .get_body () == b'Invalid Format ID'
0 commit comments