@@ -180,6 +180,70 @@ async def test_update_project(
180180 assert response == Project .from_dict (updated_project_dict )
181181
182182
183+ @pytest .mark .asyncio
184+ async def test_archive_project (
185+ todoist_api : TodoistAPI ,
186+ todoist_api_async : TodoistAPIAsync ,
187+ requests_mock : responses .RequestsMock ,
188+ default_project : Project ,
189+ ) -> None :
190+ project_id = default_project .id
191+ endpoint = f"{ DEFAULT_API_URL } /projects/{ project_id } /archive"
192+
193+ archived_project_dict = default_project .to_dict ()
194+ archived_project_dict ["is_archived" ] = True
195+
196+ requests_mock .add (
197+ method = responses .POST ,
198+ url = endpoint ,
199+ json = archived_project_dict ,
200+ status = 200 ,
201+ match = [auth_matcher ()],
202+ )
203+
204+ project = todoist_api .archive_project (project_id )
205+
206+ assert len (requests_mock .calls ) == 1
207+ assert project == Project .from_dict (archived_project_dict )
208+
209+ project = await todoist_api_async .archive_project (project_id )
210+
211+ assert len (requests_mock .calls ) == 2
212+ assert project == Project .from_dict (archived_project_dict )
213+
214+
215+ @pytest .mark .asyncio
216+ async def test_unarchive_project (
217+ todoist_api : TodoistAPI ,
218+ todoist_api_async : TodoistAPIAsync ,
219+ requests_mock : responses .RequestsMock ,
220+ default_project : Project ,
221+ ) -> None :
222+ project_id = default_project .id
223+ endpoint = f"{ DEFAULT_API_URL } /projects/{ project_id } /unarchive"
224+
225+ unarchived_project_dict = default_project .to_dict ()
226+ unarchived_project_dict ["is_archived" ] = False
227+
228+ requests_mock .add (
229+ method = responses .POST ,
230+ url = endpoint ,
231+ json = unarchived_project_dict ,
232+ status = 200 ,
233+ match = [auth_matcher ()],
234+ )
235+
236+ project = todoist_api .unarchive_project (project_id )
237+
238+ assert len (requests_mock .calls ) == 1
239+ assert project == Project .from_dict (unarchived_project_dict )
240+
241+ project = await todoist_api_async .unarchive_project (project_id )
242+
243+ assert len (requests_mock .calls ) == 2
244+ assert project == Project .from_dict (unarchived_project_dict )
245+
246+
183247@pytest .mark .asyncio
184248async def test_delete_project (
185249 todoist_api : TodoistAPI ,
0 commit comments