@@ -295,72 +295,76 @@ def test_validate_config_empty(self):
295295 from claude_diary .exporters .notion import NotionExporter
296296 assert not NotionExporter ({}).validate_config ()
297297
298- @patch ("requests.post" )
299- def test_export_success (self , mock_post ):
298+ def test_export_success (self ):
300299 from claude_diary .exporters .notion import NotionExporter
300+ mock_requests = MagicMock ()
301301 mock_resp = MagicMock ()
302302 mock_resp .status_code = 200
303- mock_post .return_value = mock_resp
304-
305- exp = NotionExporter ({ "api_token" : "secret_abc" , "database_id " : "db123" })
306- result = exp . export ( SAMPLE_ENTRY )
307- assert result is True
308- mock_post . assert_called_once ()
309-
310- # Verify the API call — requests.post(url, headers=..., json=..., timeout=...)
311- call_kwargs = mock_post . call_args
312- assert call_kwargs [ 0 ][ 0 ] == "https://api.notion.com/v1/pages"
313- headers = call_kwargs [1 ][ "headers" ]
314- assert headers [ "Authorization" ] == "Bearer secret_abc"
315- assert headers ["Notion-Version " ] == "2022-06-28 "
316-
317- @ patch ( "requests.post" )
318- def test_export_failure_status (self , mock_post ):
303+ mock_requests . post .return_value = mock_resp
304+
305+ with patch . dict ( "sys.modules" , { "requests " : mock_requests }):
306+ exp = NotionExporter ({ "api_token" : "secret_abc" , "database_id" : "db123" } )
307+ result = exp . export ( SAMPLE_ENTRY )
308+ assert result is True
309+ mock_requests . post . assert_called_once ()
310+
311+ # Verify the API call — requests.post(url, headers=..., json=..., timeout=...)
312+ call_kwargs = mock_requests . post . call_args
313+ assert call_kwargs [0 ][ 0 ] == "https://api.notion.com/v1/pages"
314+ headers = call_kwargs [ 1 ][ "headers" ]
315+ assert headers ["Authorization " ] == "Bearer secret_abc "
316+ assert headers [ "Notion-Version" ] == "2022-06-28"
317+
318+ def test_export_failure_status (self ):
319319 from claude_diary .exporters .notion import NotionExporter
320+ mock_requests = MagicMock ()
320321 mock_resp = MagicMock ()
321322 mock_resp .status_code = 400
322- mock_post .return_value = mock_resp
323+ mock_requests . post .return_value = mock_resp
323324
324- exp = NotionExporter ({"api_token" : "secret_abc" , "database_id" : "db123" })
325- result = exp .export (SAMPLE_ENTRY )
326- assert result is False
325+ with patch .dict ("sys.modules" , {"requests" : mock_requests }):
326+ exp = NotionExporter ({"api_token" : "secret_abc" , "database_id" : "db123" })
327+ result = exp .export (SAMPLE_ENTRY )
328+ assert result is False
327329
328- @patch ("requests.post" )
329- def test_export_with_team_member (self , mock_post ):
330+ def test_export_with_team_member (self ):
330331 """Team mode: Author field should be included in properties."""
331332 from claude_diary .exporters .notion import NotionExporter
333+ mock_requests = MagicMock ()
332334 mock_resp = MagicMock ()
333335 mock_resp .status_code = 200
334- mock_post .return_value = mock_resp
335-
336- exp = NotionExporter ({
337- "api_token" : "secret_abc" ,
338- "database_id " : "db123 " ,
339- "member_name " : "alice " ,
340- })
341- exp . export ( SAMPLE_ENTRY )
342-
343- call_kwargs = mock_post . call_args
344- properties = call_kwargs [ 1 ][ "json" ][ "properties" ]
345- assert "Author" in properties
346- assert properties [ "Author" ][ "select" ][ "name" ] == "alice"
347-
348- @ patch ( "requests.post" )
349- def test_export_properties_structure (self , mock_post ):
336+ mock_requests . post .return_value = mock_resp
337+
338+ with patch . dict ( "sys.modules" , { "requests" : mock_requests }):
339+ exp = NotionExporter ({
340+ "api_token " : "secret_abc " ,
341+ "database_id " : "db123 " ,
342+ "member_name" : "alice" ,
343+ } )
344+ exp . export ( SAMPLE_ENTRY )
345+
346+ call_kwargs = mock_requests . post . call_args
347+ properties = call_kwargs [ 1 ][ "json" ][ "properties" ]
348+ assert "Author" in properties
349+ assert properties [ "Author" ][ "select" ][ "name" ] == "alice"
350+
351+ def test_export_properties_structure (self ):
350352 """Verify properties include git commits and code stats when present."""
351353 from claude_diary .exporters .notion import NotionExporter
354+ mock_requests = MagicMock ()
352355 mock_resp = MagicMock ()
353356 mock_resp .status_code = 200
354- mock_post .return_value = mock_resp
357+ mock_requests . post .return_value = mock_resp
355358
356- exp = NotionExporter ({"api_token" : "secret_abc" , "database_id" : "db123" })
357- exp .export (RICH_ENTRY )
359+ with patch .dict ("sys.modules" , {"requests" : mock_requests }):
360+ exp = NotionExporter ({"api_token" : "secret_abc" , "database_id" : "db123" })
361+ exp .export (RICH_ENTRY )
358362
359- call_kwargs = mock_post .call_args
360- properties = call_kwargs [1 ]["json" ]["properties" ]
361- assert "Git Commits" in properties
362- assert "Lines Changed" in properties
363- assert properties ["Lines Changed" ]["number" ] == 60 # 50 added + 10 deleted
363+ call_kwargs = mock_requests . post .call_args
364+ properties = call_kwargs [1 ]["json" ]["properties" ]
365+ assert "Git Commits" in properties
366+ assert "Lines Changed" in properties
367+ assert properties ["Lines Changed" ]["number" ] == 60 # 50 added + 10 deleted
364368
365369 def test_export_requests_not_installed (self ):
366370 """When requests is not installed, export should return False."""
0 commit comments