| app/__init__.py | 
                getEnvironmentVars | 
                14 | 
                1 | 
                0 | 
                93% | 
            
            
                | app/__init__.py | 
                create_app | 
                20 | 
                1 | 
                0 | 
                95% | 
            
            
                | app/__init__.py | 
                FlaskSessionStorage.__init__ | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/__init__.py | 
                FlaskSessionStorage.get_item | 
                3 | 
                3 | 
                0 | 
                0% | 
            
            
                | app/__init__.py | 
                FlaskSessionStorage.set_item | 
                2 | 
                2 | 
                0 | 
                0% | 
            
            
                | app/__init__.py | 
                FlaskSessionStorage.remove_item | 
                3 | 
                3 | 
                0 | 
                0% | 
            
            
                | app/__init__.py | 
                (no function) | 
                20 | 
                1 | 
                0 | 
                95% | 
            
            
                | app/controllers/__init__.py | 
                (no function) | 
                0 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/controllers/ai.py | 
                get_openai | 
                4 | 
                4 | 
                0 | 
                0% | 
            
            
                | app/controllers/ai.py | 
                get_gemini | 
                6 | 
                6 | 
                0 | 
                0% | 
            
            
                | app/controllers/ai.py | 
                (no function) | 
                19 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/controllers/database.py | 
                get_session_storage | 
                2 | 
                2 | 
                0 | 
                0% | 
            
            
                | app/controllers/database.py | 
                get_db | 
                3 | 
                3 | 
                0 | 
                0% | 
            
            
                | app/controllers/database.py | 
                get_service_client | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/controllers/database.py | 
                generate_code_verifier | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/controllers/database.py | 
                generate_code_challenge | 
                3 | 
                3 | 
                0 | 
                0% | 
            
            
                | app/controllers/database.py | 
                (no function) | 
                12 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/models/errors.py | 
                BaseError.__init__ | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/models/errors.py | 
                UserAlreadyExistsError.__init__ | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/models/errors.py | 
                UserNotFoundError.__init__ | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/models/errors.py | 
                DatabaseError.__init__ | 
                1 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/models/errors.py | 
                AuthenticationError.__init__ | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/models/errors.py | 
                ModelError.__init__ | 
                1 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/models/errors.py | 
                (no function) | 
                13 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/models/response.py | 
                success_response | 
                1 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/models/response.py | 
                error_response | 
                1 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/models/response.py | 
                (no function) | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/models/status_codes.py | 
                (no function) | 
                9 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/models/suggestion.py | 
                Suggestion.__init__ | 
                6 | 
                6 | 
                0 | 
                0% | 
            
            
                | app/models/suggestion.py | 
                Suggestion.get_suggestion | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/models/suggestion.py | 
                Suggestion.to_json | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/models/suggestion.py | 
                (no function) | 
                11 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/models/user.py | 
                Base.__init__ | 
                1 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/models/user.py | 
                Base.to_json | 
                1 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/models/user.py | 
                Base.__getattr__ | 
                1 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/models/user.py | 
                Base.__getitem__ | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/models/user.py | 
                Base.get_user | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/models/user.py | 
                Suggestion.hash_password | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/models/user.py | 
                (no function) | 
                15 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/__init__.py | 
                register_blueprints | 
                8 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/__init__.py | 
                (no function) | 
                10 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/auth.py | 
                login_page | 
                1 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/auth.py | 
                login_route | 
                15 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/auth.py | 
                auth_complete_route | 
                1 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/auth.py | 
                auth | 
                7 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/auth.py | 
                signup_route | 
                9 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/auth.py | 
                signout_route | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/auth.py | 
                (no function) | 
                21 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/classes.py | 
                create_class | 
                10 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/classes.py | 
                get_classes_by_instructor | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/classes.py | 
                register_user_to_class | 
                10 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/classes.py | 
                (no function) | 
                11 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/docs.py | 
                serve_docs | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/routes/docs.py | 
                docs_index | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/routes/docs.py | 
                serve_static | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/routes/docs.py | 
                serve_tsdocs | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/routes/docs.py | 
                docs_tsindex | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/routes/docs.py | 
                serve_tsstatic | 
                1 | 
                1 | 
                0 | 
                0% | 
            
            
                | app/routes/docs.py | 
                (no function) | 
                17 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/logging.py | 
                log_event_route | 
                10 | 
                2 | 
                0 | 
                80% | 
            
            
                | app/routes/logging.py | 
                get_all_logs_route | 
                5 | 
                2 | 
                0 | 
                60% | 
            
            
                | app/routes/logging.py | 
                get_logs_by_user_route | 
                9 | 
                3 | 
                0 | 
                67% | 
            
            
                | app/routes/logging.py | 
                get_logs_by_class_route | 
                7 | 
                3 | 
                0 | 
                57% | 
            
            
                | app/routes/logging.py | 
                log_suggestion_route | 
                11 | 
                2 | 
                0 | 
                82% | 
            
            
                | app/routes/logging.py | 
                ai_usage_route | 
                5 | 
                2 | 
                0 | 
                60% | 
            
            
                | app/routes/logging.py | 
                health_check | 
                1 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/logging.py | 
                (no function) | 
                24 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/main_page.py | 
                main_page_route | 
                4 | 
                2 | 
                0 | 
                50% | 
            
            
                | app/routes/main_page.py | 
                download_route | 
                4 | 
                4 | 
                0 | 
                0% | 
            
            
                | app/routes/main_page.py | 
                get_all_data | 
                9 | 
                9 | 
                0 | 
                0% | 
            
            
                | app/routes/main_page.py | 
                (no function) | 
                13 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/quiz.py | 
                generate_quiz_route | 
                26 | 
                26 | 
                0 | 
                0% | 
            
            
                | app/routes/quiz.py | 
                (no function) | 
                9 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/suggestions.py | 
                generate_suggestion_route | 
                14 | 
                3 | 
                0 | 
                79% | 
            
            
                | app/routes/suggestions.py | 
                refine_prompt | 
                10 | 
                3 | 
                0 | 
                70% | 
            
            
                | app/routes/suggestions.py | 
                generate_hint | 
                11 | 
                3 | 
                0 | 
                73% | 
            
            
                | app/routes/suggestions.py | 
                generate_explanation | 
                11 | 
                11 | 
                0 | 
                0% | 
            
            
                | app/routes/suggestions.py | 
                validate_fix | 
                12 | 
                3 | 
                0 | 
                75% | 
            
            
                | app/routes/suggestions.py | 
                list_models_route | 
                8 | 
                8 | 
                0 | 
                0% | 
            
            
                | app/routes/suggestions.py | 
                get_suggestion_details | 
                7 | 
                7 | 
                0 | 
                0% | 
            
            
                | app/routes/suggestions.py | 
                (no function) | 
                23 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/routes/user.py | 
                get_user_route | 
                7 | 
                2 | 
                0 | 
                71% | 
            
            
                | app/routes/user.py | 
                update_user_status_route | 
                11 | 
                2 | 
                0 | 
                82% | 
            
            
                | app/routes/user.py | 
                get_user_class_status_route | 
                10 | 
                2 | 
                0 | 
                80% | 
            
            
                | app/routes/user.py | 
                create_user_section_route | 
                5 | 
                2 | 
                0 | 
                60% | 
            
            
                | app/routes/user.py | 
                get_user_section_route | 
                6 | 
                2 | 
                0 | 
                67% | 
            
            
                | app/routes/user.py | 
                update_user_section_route | 
                13 | 
                2 | 
                0 | 
                85% | 
            
            
                | app/routes/user.py | 
                update_user_settings_route | 
                8 | 
                2 | 
                0 | 
                75% | 
            
            
                | app/routes/user.py | 
                get_user_classes_route | 
                7 | 
                3 | 
                0 | 
                57% | 
            
            
                | app/routes/user.py | 
                get_all_users_route | 
                7 | 
                3 | 
                0 | 
                57% | 
            
            
                | app/routes/user.py | 
                delete_user_route | 
                7 | 
                3 | 
                0 | 
                57% | 
            
            
                | app/routes/user.py | 
                update_user_route | 
                8 | 
                2 | 
                0 | 
                75% | 
            
            
                | app/routes/user.py | 
                (no function) | 
                32 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/auth_service.py | 
                login_with_provider | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/auth_service.py | 
                login_with_email | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/auth_service.py | 
                callback | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/auth_service.py | 
                signout | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/auth_service.py | 
                signup_with_email | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/auth_service.py | 
                (no function) | 
                9 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/class_service.py | 
                insert_new_class | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/class_service.py | 
                fetch_classes_by_instructor | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/class_service.py | 
                insert_class_user | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/class_service.py | 
                (no function) | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/log_service.py | 
                log_event | 
                5 | 
                3 | 
                0 | 
                40% | 
            
            
                | app/services/log_service.py | 
                log_suggestion | 
                9 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/log_service.py | 
                get_all_logs | 
                6 | 
                3 | 
                0 | 
                50% | 
            
            
                | app/services/log_service.py | 
                get_logs_by_user | 
                11 | 
                3 | 
                0 | 
                73% | 
            
            
                | app/services/log_service.py | 
                get_ai_usage | 
                6 | 
                3 | 
                0 | 
                50% | 
            
            
                | app/services/log_service.py | 
                get_all_data_from_db | 
                13 | 
                3 | 
                0 | 
                77% | 
            
            
                | app/services/log_service.py | 
                get_logs_by_class | 
                9 | 
                4 | 
                0 | 
                56% | 
            
            
                | app/services/log_service.py | 
                (no function) | 
                9 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/quiz_service.py | 
                build_prompt_from_suggestions | 
                9 | 
                9 | 
                0 | 
                0% | 
            
            
                | app/services/quiz_service.py | 
                generate_quiz_from_prompt | 
                27 | 
                27 | 
                0 | 
                0% | 
            
            
                | app/services/quiz_service.py | 
                (no function) | 
                7 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/suggestion_service.py | 
                getSuggestion | 
                13 | 
                2 | 
                0 | 
                85% | 
            
            
                | app/services/suggestion_service.py | 
                getSuggestionFromOpenAI | 
                15 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/suggestion_service.py | 
                getSuggestionFromOllama | 
                9 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/suggestion_service.py | 
                getSuggestionFromGoogle | 
                26 | 
                1 | 
                0 | 
                96% | 
            
            
                | app/services/suggestion_service.py | 
                getAvailableModels | 
                10 | 
                2 | 
                0 | 
                80% | 
            
            
                | app/services/suggestion_service.py | 
                getModelsFromOpenAI | 
                7 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/suggestion_service.py | 
                getModelsFromOllama | 
                9 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/suggestion_service.py | 
                getModelsFromGoogle | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/suggestion_service.py | 
                generate_refined_prompt | 
                6 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/suggestion_service.py | 
                generate_hint_from_gemini | 
                6 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/suggestion_service.py | 
                generate_explanation_from_gemini | 
                6 | 
                2 | 
                0 | 
                67% | 
            
            
                | app/services/suggestion_service.py | 
                check_code_correctness | 
                7 | 
                3 | 
                0 | 
                57% | 
            
            
                | app/services/suggestion_service.py | 
                get_suggestion_by_id | 
                8 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/suggestion_service.py | 
                (no function) | 
                23 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/user_service.py | 
                update_user_class_status | 
                11 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/user_service.py | 
                get_user_class_status | 
                7 | 
                3 | 
                0 | 
                57% | 
            
            
                | app/services/user_service.py | 
                create_user_section | 
                11 | 
                4 | 
                0 | 
                64% | 
            
            
                | app/services/user_service.py | 
                get_user_section | 
                13 | 
                4 | 
                0 | 
                69% | 
            
            
                | app/services/user_service.py | 
                update_user_section | 
                5 | 
                3 | 
                0 | 
                40% | 
            
            
                | app/services/user_service.py | 
                get_classes_by_user_id | 
                15 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/user_service.py | 
                get_all_users | 
                24 | 
                0 | 
                0 | 
                100% | 
            
            
                | app/services/user_service.py | 
                get_user_by_id | 
                22 | 
                22 | 
                0 | 
                0% | 
            
            
                | app/services/user_service.py | 
                update_user_settings | 
                5 | 
                5 | 
                0 | 
                0% | 
            
            
                | app/services/user_service.py | 
                delete_user | 
                9 | 
                9 | 
                0 | 
                0% | 
            
            
                | app/services/user_service.py | 
                edit_user | 
                10 | 
                10 | 
                0 | 
                0% | 
            
            
                | app/services/user_service.py | 
                (no function) | 
                16 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/__init__.py | 
                (no function) | 
                0 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/conftest.py | 
                app | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/conftest.py | 
                client | 
                1 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/conftest.py | 
                (no function) | 
                9 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_auth_route.py | 
                test_login_page | 
                2 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_auth_route.py | 
                test_login_route_email_success | 
                11 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_auth_route.py | 
                test_login_route_email_missing_fields | 
                10 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_auth_route.py | 
                test_login_route_github_success | 
                6 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_auth_route.py | 
                test_login_route_github_missing_provider | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_auth_route.py | 
                test_auth_complete | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_auth_route.py | 
                test_auth_callback | 
                8 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_auth_route.py | 
                test_auth_callback_missing_code | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_auth_route.py | 
                test_auth_callback_next_url | 
                10 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_auth_route.py | 
                test_auth_signup_success | 
                8 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_auth_route.py | 
                test_auth_signup_missing_fields | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_auth_route.py | 
                test_auth_signout_success | 
                7 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_auth_route.py | 
                test_auth_signout_missing_user_id | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_auth_route.py | 
                (no function) | 
                17 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_classes_route.py | 
                test_create_class_sucess | 
                7 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_classes_route.py | 
                test_create_class_missing_fields | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_classes_route.py | 
                test_create_class_unknown_error | 
                6 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_classes_route.py | 
                test_get_classes_by_intructor_success | 
                7 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_classes_route.py | 
                test_get_classes_by_intructor_unknown_error | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_classes_route.py | 
                test_register_user_to_class_success | 
                7 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_classes_route.py | 
                test_register_user_to_class_missing_fields | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_classes_route.py | 
                test_register_user_to_class_unknown_error | 
                6 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_classes_route.py | 
                (no function) | 
                10 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_index_route.py | 
                test_index_route | 
                2 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_index_route.py | 
                (no function) | 
                1 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_log_route.py | 
                test_health_check | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_log_route.py | 
                test_log_event_success | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_log_route.py | 
                test_log_event_missing_fields | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_log_route.py | 
                test_get_all_logs_success | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_log_route.py | 
                test_get_logs_by_user_success | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_log_route.py | 
                test_get_logs_by_class_success | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_log_route.py | 
                test_log_suggestion_success | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_log_route.py | 
                test_log_suggestion_missing_fields | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_log_route.py | 
                test_ai_usage_success | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_log_route.py | 
                (no function) | 
                18 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_quiz_route.py | 
                (no function) | 
                0 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_suggestions_route.py | 
                mock_get_suggestion | 
                2 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_suggestions_route.py | 
                mock_check_code_correctness | 
                2 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_suggestions_route.py | 
                mock_get_code_hint | 
                2 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_suggestions_route.py | 
                mock_get_refined_prompt | 
                2 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_suggestions_route.py | 
                test_suggestions_route_prompt | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_suggestions_route.py | 
                test_suggestions_route_no_prompt | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_suggestions_route.py | 
                test_suggestions_route_refine | 
                6 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_suggestions_route.py | 
                test_suggestions_route_hint | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_suggestions_route.py | 
                test_suggestions_route_answer | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_suggestions_route.py | 
                (no function) | 
                16 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_get_user_success | 
                6 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_get_user_not_found | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_update_user_status_success | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_update_user_status_invalid_status | 
                2 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_get_user_class_status_success | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_get_user_class_status_not_found | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_create_user_section_success | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_get_user_sections_success | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_update_user_section_status_success | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_update_user_section_status_invalid_status | 
                2 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_update_user_section_status_missing_id | 
                2 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_update_user_settings_success | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_update_user_settings_missing_settings | 
                2 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_get_user_classes_success | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_get_users_success | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_delete_user_success | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_update_user_success | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                test_update_user_missing_data | 
                2 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/routes/test_user_route.py | 
                (no function) | 
                22 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_auth_service.py | 
                test_login_with_provider | 
                8 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_auth_service.py | 
                test_login_with_email | 
                7 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_auth_service.py | 
                test_callback_success | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_auth_service.py | 
                test_callback_failure | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_auth_service.py | 
                test_signout_success | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_auth_service.py | 
                test_signout_failure | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_auth_service.py | 
                test_signup_with_email | 
                10 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_auth_service.py | 
                (no function) | 
                18 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_class_service.py | 
                test_insert_new_class_success | 
                7 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_class_service.py | 
                test_insert_new_class_failure | 
                6 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_class_service.py | 
                test_fetch_classes_by_instructor_success | 
                7 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_class_service.py | 
                test_fetch_classes_by_instructor_failure | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_class_service.py | 
                test_insert_class_user_success | 
                6 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_class_service.py | 
                test_insert_class_user_failure | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_class_service.py | 
                (no function) | 
                15 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_log_service.py | 
                mock_execute_with_data | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_log_service.py | 
                test_log_event_success | 
                11 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_log_service.py | 
                test_log_suggestion_success | 
                12 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_log_service.py | 
                test_log_suggestion_failure_no_data | 
                9 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_log_service.py | 
                test_get_all_logs | 
                8 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_log_service.py | 
                test_get_logs_by_user | 
                10 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_log_service.py | 
                test_get_logs_by_user_with_section_and_class | 
                15 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_log_service.py | 
                test_get_logs_by_class | 
                10 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_log_service.py | 
                test_get_ai_usage | 
                8 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_log_service.py | 
                test_get_all_data_from_db | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_log_service.py | 
                (no function) | 
                22 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                mock_openai_client | 
                19 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                mock_gemini_client | 
                19 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                mock_db_client | 
                17 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                mock_requests | 
                11 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestion_routes_to_openai | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestion_routes_to_ollama | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestion_routes_to_google | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestion_defaults_to_google_on_invalid_vendor | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestionFromOpenAI_success_correct | 
                9 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestionFromOpenAI_success_incorrect | 
                7 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestionFromOpenAI_api_error | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestionFromOllama_success_correct | 
                7 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestionFromOllama_success_incorrect | 
                7 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestionFromOllama_request_error | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestionFromOllama_other_error | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestionFromGoogle_success | 
                10 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestionFromGoogle_gemini_error | 
                6 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestionFromGoogle_json_decode_error | 
                8 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestionFromGoogle_empty_response | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getSuggestionFromGoogle_no_usage_metadata | 
                7 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getAvailableModels_routes_openai | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getAvailableModels_routes_ollama | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getAvailableModels_routes_google | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getAvailableModels_invalid_vendor | 
                2 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getModelsFromOpenAI_success | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getModelsFromOpenAI_api_error | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getModelsFromOllama_success | 
                6 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getModelsFromOllama_request_error | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getModelsFromOllama_missing_models_key | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getModelsFromGoogle_success | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_getModelsFromGoogle_api_error | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_generate_refined_prompt_success | 
                6 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_generate_refined_prompt_api_error | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_generate_hint_from_gemini_success | 
                11 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_generate_hint_from_gemini_api_error | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_generate_explanation_from_gemini_success | 
                12 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_check_code_correctness | 
                12 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_get_suggestion_by_id_found | 
                12 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_get_suggestion_by_id_not_found | 
                6 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                test_get_suggestion_by_id_db_error | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_suggestion_service.py | 
                (no function) | 
                55 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_update_user_class_status_with_class_id | 
                8 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_update_user_class_status_with_class_id_error | 
                9 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_update_user_class_status_without_class_id | 
                8 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_update_user_class_status_without_class_id_error | 
                9 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_get_user_class_status_success | 
                10 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_get_user_class_status_no_data | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_create_user_section_with_class_id | 
                11 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_create_user_section_without_class_id | 
                11 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_get_user_section_existing | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_get_user_section_creates_new | 
                7 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_update_user_section | 
                11 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_get_classes_by_user_id_returns_classes | 
                6 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_get_classes_by_user_id_no_data | 
                5 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_get_classes_by_user_id_raises_error | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_get_all_users_merges_sources | 
                18 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_get_all_users_handles_empty_sources | 
                4 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                test_get_all_users_raises_database_error | 
                3 | 
                0 | 
                0 | 
                100% | 
            
            
                | tests/services/test_user_service.py | 
                (no function) | 
                43 | 
                0 | 
                0 | 
                100% |