diff --git a/app/routes.py b/app/routes.py index 90395d9..9e3010e 100644 --- a/app/routes.py +++ b/app/routes.py @@ -12,7 +12,7 @@ MOCK_USER_ID = 1 @main.route('/') def index(): # Ensure the mock user exists - user = User.query.get(MOCK_USER_ID) + user = db.session.get(User, MOCK_USER_ID) if not user: user = User(id=MOCK_USER_ID, email='prototype@example.com') db.session.add(user) diff --git a/tests/test_routes.py b/tests/test_routes.py index fa62420..f77d502 100644 --- a/tests/test_routes.py +++ b/tests/test_routes.py @@ -37,10 +37,14 @@ def test_add_folder_validation_failure_empty_name(client, mock_user): content_type='application/x-www-form-urlencoded') assert response.status_code == 200 + soup = BeautifulSoup(response.data, 'html.parser') # Check that the specific error message is present - assert b'Folder name is required' in response.data + error_text = soup.find(string='Folder name is required') + assert error_text is not None # Check that the input field has the error class - assert b'input-error' in response.data + name_input = soup.find('input', {'name': 'name'}) + assert name_input is not None + assert 'input-error' in name_input.get('class', []) def test_add_folder_validation_failure_short_name(client, mock_user): """Test validation failure when folder name is too short.""" @@ -49,7 +53,9 @@ def test_add_folder_validation_failure_short_name(client, mock_user): content_type='application/x-www-form-urlencoded') assert response.status_code == 200 - assert b'Folder name must be at least 3 characters' in response.data + soup = BeautifulSoup(response.data, 'html.parser') + error_text = soup.find(string='Folder name must be at least 3 characters') + assert error_text is not None def test_add_folder_validation_failure_long_name(client, mock_user): """Test validation failure when folder name is too long.""" @@ -59,7 +65,9 @@ def test_add_folder_validation_failure_long_name(client, mock_user): content_type='application/x-www-form-urlencoded') assert response.status_code == 200 - assert b'Folder name must be less than 50 characters' in response.data + soup = BeautifulSoup(response.data, 'html.parser') + error_text = soup.find(string='Folder name must be less than 50 characters') + assert error_text is not None def test_add_folder_validation_failure_empty_rule(client, mock_user): """Test validation failure when rule text is empty.""" @@ -68,7 +76,9 @@ def test_add_folder_validation_failure_empty_rule(client, mock_user): content_type='application/x-www-form-urlencoded') assert response.status_code == 200 - assert b'Rule text is required' in response.data + soup = BeautifulSoup(response.data, 'html.parser') + error_text = soup.find(string='Rule text is required') + assert error_text is not None def test_add_folder_validation_failure_short_rule(client, mock_user): """Test validation failure when rule text is too short.""" @@ -77,7 +87,9 @@ def test_add_folder_validation_failure_short_rule(client, mock_user): content_type='application/x-www-form-urlencoded') assert response.status_code == 200 - assert b'Rule text must be at least 10 characters' in response.data + soup = BeautifulSoup(response.data, 'html.parser') + error_text = soup.find(string='Rule text must be at least 10 characters') + assert error_text is not None def test_add_folder_validation_failure_long_rule(client, mock_user): """Test validation failure when rule text is too long.""" @@ -87,7 +99,9 @@ def test_add_folder_validation_failure_long_rule(client, mock_user): content_type='application/x-www-form-urlencoded') assert response.status_code == 200 - assert b'Rule text must be less than 200 characters' in response.data + soup = BeautifulSoup(response.data, 'html.parser') + error_text = soup.find(string='Rule text must be less than 200 characters') + assert error_text is not None def test_add_folder_validation_multiple_errors(client, mock_user): """Test validation failure with multiple errors.""" @@ -96,8 +110,11 @@ def test_add_folder_validation_multiple_errors(client, mock_user): content_type='application/x-www-form-urlencoded') assert response.status_code == 200 - assert b'Folder name must be at least 3 characters' in response.data - assert b'Rule text must be at least 10 characters' in response.data + soup = BeautifulSoup(response.data, 'html.parser') + error_text1 = soup.find(string='Folder name must be at least 3 characters') + error_text2 = soup.find(string='Rule text must be at least 10 characters') + assert error_text1 is not None + assert error_text2 is not None # Edit folder validation failure tests def test_edit_folder_validation_failure_empty_name(client, mock_folder): @@ -107,7 +124,9 @@ def test_edit_folder_validation_failure_empty_name(client, mock_folder): content_type='application/x-www-form-urlencoded') assert response.status_code == 200 - assert b'Folder name is required' in response.data + soup = BeautifulSoup(response.data, 'html.parser') + error_text = soup.find(string='Folder name is required') + assert error_text is not None def test_edit_folder_validation_failure_short_name(client, mock_folder): """Test validation failure when folder name is too short during edit.""" @@ -116,7 +135,9 @@ def test_edit_folder_validation_failure_short_name(client, mock_folder): content_type='application/x-www-form-urlencoded') assert response.status_code == 200 - assert b'Folder name must be at least 3 characters' in response.data + soup = BeautifulSoup(response.data, 'html.parser') + error_text = soup.find(string='Folder name must be at least 3 characters') + assert error_text is not None def test_edit_folder_validation_failure_long_name(client, mock_folder): """Test validation failure when folder name is too long during edit.""" @@ -126,7 +147,9 @@ def test_edit_folder_validation_failure_long_name(client, mock_folder): content_type='application/x-www-form-urlencoded') assert response.status_code == 200 - assert b'Folder name must be less than 50 characters' in response.data + soup = BeautifulSoup(response.data, 'html.parser') + error_text = soup.find(string='Folder name must be less than 50 characters') + assert error_text is not None def test_edit_folder_validation_failure_empty_rule(client, mock_folder): """Test validation failure when rule text is empty during edit.""" @@ -135,7 +158,9 @@ def test_edit_folder_validation_failure_empty_rule(client, mock_folder): content_type='application/x-www-form-urlencoded') assert response.status_code == 200 - assert b'Rule text is required' in response.data + soup = BeautifulSoup(response.data, 'html.parser') + error_text = soup.find(string='Rule text is required') + assert error_text is not None def test_edit_folder_validation_failure_short_rule(client, mock_folder): """Test validation failure when rule text is too short during edit.""" @@ -144,7 +169,9 @@ def test_edit_folder_validation_failure_short_rule(client, mock_folder): content_type='application/x-www-form-urlencoded') assert response.status_code == 200 - assert b'Rule text must be at least 10 characters' in response.data + soup = BeautifulSoup(response.data, 'html.parser') + error_text = soup.find(string='Rule text must be at least 10 characters') + assert error_text is not None def test_edit_folder_validation_failure_long_rule(client, mock_folder): """Test validation failure when rule text is too long during edit.""" @@ -154,7 +181,9 @@ def test_edit_folder_validation_failure_long_rule(client, mock_folder): content_type='application/x-www-form-urlencoded') assert response.status_code == 200 - assert b'Rule text must be less than 200 characters' in response.data + soup = BeautifulSoup(response.data, 'html.parser') + error_text = soup.find(string='Rule text must be less than 200 characters') + assert error_text is not None def test_edit_folder_validation_multiple_errors(client, mock_folder): """Test validation failure with multiple errors during edit.""" @@ -163,8 +192,11 @@ def test_edit_folder_validation_multiple_errors(client, mock_folder): content_type='application/x-www-form-urlencoded') assert response.status_code == 200 - assert b'Folder name must be at least 3 characters' in response.data - assert b'Rule text must be at least 10 characters' in response.data + soup = BeautifulSoup(response.data, 'html.parser') + error_text1 = soup.find(string='Folder name must be at least 3 characters') + error_text2 = soup.find(string='Rule text must be at least 10 characters') + assert error_text1 is not None + assert error_text2 is not None # Dialog close tests def test_add_folder_success_closes_dialog(client, mock_user):