backend/app/__init__.py |
(no function) |
0 |
0 |
0 |
100% |
backend/app/config.py |
(no function) |
15 |
0 |
0 |
100% |
backend/app/database.py |
get_db |
4 |
4 |
0 |
0% |
backend/app/database.py |
(no function) |
10 |
0 |
0 |
100% |
backend/app/eis/__init__.py |
(no function) |
0 |
0 |
0 |
100% |
backend/app/eis/email_scraper.py |
clean_email_address |
2 |
0 |
0 |
100% |
backend/app/eis/email_scraper.py |
get_user_id_from_email |
4 |
0 |
0 |
100% |
backend/app/eis/email_scraper.py |
GmailScraper.__init__ |
7 |
0 |
0 |
100% |
backend/app/eis/email_scraper.py |
GmailScraper._load_credentials |
8 |
4 |
0 |
50% |
backend/app/eis/email_scraper.py |
GmailScraper.authenticate |
12 |
3 |
0 |
75% |
backend/app/eis/email_scraper.py |
GmailScraper.get_email_ids |
8 |
8 |
0 |
0% |
backend/app/eis/email_scraper.py |
GmailScraper._extract_email_body |
14 |
14 |
0 |
0% |
backend/app/eis/email_scraper.py |
GmailScraper._decode_base64 |
1 |
1 |
0 |
0% |
backend/app/eis/email_scraper.py |
GmailScraper.get_email_data |
20 |
20 |
0 |
0% |
backend/app/eis/email_scraper.py |
GmailScraper.save_email_to_db |
8 |
0 |
0 |
100% |
backend/app/eis/email_scraper.py |
GmailScraper.extract_linkedin_job_ids |
3 |
0 |
0 |
100% |
backend/app/eis/email_scraper.py |
GmailScraper.get_indeed_redirected_url |
11 |
11 |
0 |
0% |
backend/app/eis/email_scraper.py |
GmailScraper.extract_indeed_job_ids |
12 |
0 |
0 |
100% |
backend/app/eis/email_scraper.py |
GmailScraper.save_jobs_to_db |
15 |
0 |
0 |
100% |
backend/app/eis/email_scraper.py |
GmailScraper.save_job_data_to_db |
15 |
0 |
0 |
100% |
backend/app/eis/email_scraper.py |
GmailScraper.run_scraping |
22 |
22 |
0 |
0% |
backend/app/eis/email_scraper.py |
GmailScraper._process_user_emails |
26 |
8 |
0 |
69% |
backend/app/eis/email_scraper.py |
GmailScraper._process_email |
28 |
9 |
0 |
68% |
backend/app/eis/email_scraper.py |
GmailScraper._scrape_remaining_jobs |
29 |
2 |
0 |
93% |
backend/app/eis/email_scraper.py |
GmailScraperService.__init__ |
4 |
4 |
0 |
0% |
backend/app/eis/email_scraper.py |
GmailScraperService.start |
9 |
9 |
0 |
0% |
backend/app/eis/email_scraper.py |
GmailScraperService.stop |
10 |
10 |
0 |
0% |
backend/app/eis/email_scraper.py |
GmailScraperService._run_service |
13 |
13 |
0 |
0% |
backend/app/eis/email_scraper.py |
GmailScraperService.status |
1 |
1 |
0 |
0% |
backend/app/eis/email_scraper.py |
(no function) |
57 |
2 |
0 |
96% |
backend/app/eis/job_scraper.py |
JobScrapper.__init__ |
8 |
8 |
0 |
0% |
backend/app/eis/job_scraper.py |
JobScrapper._load_credentials |
8 |
8 |
0 |
0% |
backend/app/eis/job_scraper.py |
JobScrapper.get_snapshot |
11 |
11 |
0 |
0% |
backend/app/eis/job_scraper.py |
JobScrapper.wait_for_data |
17 |
17 |
0 |
0% |
backend/app/eis/job_scraper.py |
JobScrapper.retrieve_data |
11 |
11 |
0 |
0% |
backend/app/eis/job_scraper.py |
JobScrapper.process_job_data |
1 |
1 |
0 |
0% |
backend/app/eis/job_scraper.py |
JobScrapper.scrape_job |
4 |
4 |
0 |
0% |
backend/app/eis/job_scraper.py |
IndeedJobScraper.process_job_data |
18 |
18 |
0 |
0% |
backend/app/eis/job_scraper.py |
LinkedinJobScraper.process_job_data |
17 |
17 |
0 |
0% |
backend/app/eis/job_scraper.py |
extract_indeed_jobs_from_email |
9 |
1 |
0 |
89% |
backend/app/eis/job_scraper.py |
parse_indeed_job_section |
51 |
8 |
0 |
84% |
backend/app/eis/job_scraper.py |
(no function) |
39 |
6 |
0 |
85% |
backend/app/eis/location_parser.py |
LocationParser.__init__ |
6 |
0 |
0 |
100% |
backend/app/eis/location_parser.py |
LocationParser.extract_postcode |
15 |
0 |
0 |
100% |
backend/app/eis/location_parser.py |
LocationParser.extract_attendance_type |
13 |
0 |
0 |
100% |
backend/app/eis/location_parser.py |
LocationParser.extract_country_with_match |
11 |
0 |
0 |
100% |
backend/app/eis/location_parser.py |
LocationParser.parse_location |
34 |
0 |
0 |
100% |
backend/app/eis/location_parser.py |
LocationParser.parse_location_only |
2 |
0 |
0 |
100% |
backend/app/eis/location_parser.py |
(no function) |
9 |
0 |
0 |
100% |
backend/app/eis/models.py |
(no function) |
47 |
0 |
0 |
100% |
backend/app/eis/routers.py |
get_service_logs_by_date_range |
14 |
14 |
0 |
0% |
backend/app/eis/routers.py |
(no function) |
13 |
0 |
0 |
100% |
backend/app/eis/schemas.py |
(no function) |
44 |
0 |
0 |
100% |
backend/app/main.py |
read_root |
1 |
1 |
0 |
0% |
backend/app/main.py |
health_check |
1 |
1 |
0 |
0% |
backend/app/main.py |
(no function) |
28 |
0 |
0 |
100% |
backend/app/models.py |
CommonBase.__tablename__ |
2 |
0 |
0 |
100% |
backend/app/models.py |
Location.name |
8 |
0 |
0 |
100% |
backend/app/models.py |
Person.name |
1 |
0 |
0 |
100% |
backend/app/models.py |
Person.name_company |
3 |
0 |
0 |
100% |
backend/app/models.py |
Job.name |
5 |
1 |
0 |
80% |
backend/app/models.py |
(no function) |
128 |
0 |
0 |
100% |
backend/app/oauth2.py |
create_access_token |
5 |
0 |
0 |
100% |
backend/app/oauth2.py |
verify_access_token |
9 |
3 |
0 |
67% |
backend/app/oauth2.py |
get_current_user |
4 |
0 |
0 |
100% |
backend/app/oauth2.py |
(no function) |
14 |
0 |
0 |
100% |
backend/app/routers/__init__.py |
generate_data_table_crud_router |
15 |
0 |
0 |
100% |
backend/app/routers/__init__.py |
generate_data_table_crud_router.handle_many_to_many_create |
11 |
2 |
0 |
82% |
backend/app/routers/__init__.py |
generate_data_table_crud_router.handle_many_to_many_update |
12 |
12 |
0 |
0% |
backend/app/routers/__init__.py |
generate_data_table_crud_router.get_all |
25 |
9 |
0 |
64% |
backend/app/routers/__init__.py |
generate_data_table_crud_router.get_one |
6 |
0 |
0 |
100% |
backend/app/routers/__init__.py |
generate_data_table_crud_router.create |
18 |
1 |
0 |
94% |
backend/app/routers/__init__.py |
generate_data_table_crud_router.update |
21 |
2 |
0 |
90% |
backend/app/routers/__init__.py |
generate_data_table_crud_router.delete |
14 |
0 |
0 |
100% |
backend/app/routers/__init__.py |
(no function) |
6 |
0 |
0 |
100% |
backend/app/routers/dashboard.py |
get_dashboard_data |
40 |
0 |
0 |
100% |
backend/app/routers/dashboard.py |
(no function) |
8 |
0 |
0 |
100% |
backend/app/routers/data_tables.py |
download_file |
14 |
4 |
0 |
71% |
backend/app/routers/data_tables.py |
(no function) |
17 |
0 |
0 |
100% |
backend/app/routers/export.py |
export_jobs_with_all_columns |
18 |
0 |
0 |
100% |
backend/app/routers/export.py |
(no function) |
12 |
0 |
0 |
100% |
backend/app/routers/login.py |
login |
9 |
1 |
0 |
89% |
backend/app/routers/login.py |
(no function) |
8 |
0 |
0 |
100% |
backend/app/routers/user.py |
assert_admin |
2 |
0 |
0 |
100% |
backend/app/routers/user.py |
get_all_users |
21 |
16 |
0 |
24% |
backend/app/routers/user.py |
get_current_user_profile |
1 |
0 |
0 |
100% |
backend/app/routers/user.py |
get_one_user |
5 |
0 |
0 |
100% |
backend/app/routers/user.py |
update_current_user_profile |
17 |
3 |
0 |
82% |
backend/app/routers/user.py |
update_user |
14 |
1 |
0 |
93% |
backend/app/routers/user.py |
create_user |
14 |
1 |
0 |
93% |
backend/app/routers/user.py |
(no function) |
17 |
0 |
0 |
100% |
backend/app/schemas.py |
JobOut.last_update_date |
9 |
0 |
0 |
100% |
backend/app/schemas.py |
JobOut.last_update_type |
14 |
0 |
0 |
100% |
backend/app/schemas.py |
JobOut.days_since_last_update |
4 |
0 |
0 |
100% |
backend/app/schemas.py |
JobOut.days_until_deadline |
4 |
0 |
0 |
100% |
backend/app/schemas.py |
(no function) |
227 |
0 |
0 |
100% |
backend/app/utils.py |
hash_password |
1 |
0 |
0 |
100% |
backend/app/utils.py |
verify_password |
1 |
0 |
0 |
100% |
backend/app/utils.py |
AppLogger.get_logger |
26 |
4 |
0 |
85% |
backend/app/utils.py |
AppLogger.create_service_logger |
3 |
0 |
0 |
100% |
backend/app/utils.py |
AppLogger.log_execution_time |
3 |
3 |
0 |
0% |
backend/app/utils.py |
AppLogger.log_stats |
11 |
11 |
0 |
0% |
backend/app/utils.py |
get_gmail_logger |
1 |
0 |
0 |
100% |
backend/app/utils.py |
get_job_scraper_logger |
1 |
1 |
0 |
0% |
backend/app/utils.py |
get_scheduler_logger |
1 |
1 |
0 |
0% |
backend/app/utils.py |
get_api_logger |
1 |
1 |
0 |
0% |
backend/app/utils.py |
get_database_logger |
1 |
1 |
0 |
0% |
backend/app/utils.py |
get_auth_logger |
1 |
1 |
0 |
0% |
backend/app/utils.py |
(no function) |
24 |
0 |
0 |
100% |
backend/tests/__init__.py |
(no function) |
0 |
0 |
0 |
100% |
backend/tests/conftest.py |
session |
5 |
0 |
0 |
100% |
backend/tests/conftest.py |
client |
4 |
0 |
0 |
100% |
backend/tests/conftest.py |
client.override_get_db |
3 |
0 |
0 |
100% |
backend/tests/conftest.py |
test_users |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
tokens |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
authorised_clients |
6 |
0 |
0 |
100% |
backend/tests/conftest.py |
test_keywords |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
test_aggregators |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
test_locations |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
test_companies |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
test_persons |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
test_files |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
test_jobs |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
test_interviews |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
test_job_alert_emails |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
test_scraped_jobs |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
test_service_logs |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
test_job_application_updates |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
test_settings |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
open_file |
4 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.check_output |
29 |
18 |
0 |
38% |
backend/tests/conftest.py |
CRUDTestBase.get_all |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.get_one |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.post |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.put |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.delete |
1 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.setup_method |
3 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_get_all_success |
4 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_get_all_unauthorized |
2 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_get_one_success |
4 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_get_one_unauthorized |
3 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_get_one_other_user |
3 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_get_one_non_exist |
2 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_post_success |
5 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_post_unauthorized |
2 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_put_success |
4 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_put_empty_body |
3 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_put_non_exist |
2 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_put_unauthorized |
3 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_put_other_user |
3 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_delete_success |
3 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_delete_non_exist |
2 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_delete_unauthorized |
3 |
0 |
0 |
100% |
backend/tests/conftest.py |
CRUDTestBase.test_delete_other_user |
3 |
0 |
0 |
100% |
backend/tests/conftest.py |
(no function) |
87 |
0 |
0 |
100% |
backend/tests/eis/__init__.py |
(no function) |
0 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
create_gmail_scraper |
13 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
mock_get_indeed_redirected_url |
2 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
patch_get_indeed_redirected_url |
2 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
gmail_scraper |
1 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
gmail_scraper_with_brightapi_skip |
1 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
create_email_data |
2 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
linkedin_email_data |
1 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
linkedin_email_data_user2 |
1 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
indeed_email_data |
1 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
indeed_email_data_user2 |
1 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
create_email_record |
5 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
linkedin_email_record |
1 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
linkedin_email_record_user2 |
1 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
indeed_email_record |
1 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
indeed_email_record_user2 |
1 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestCleanEmailAddress.test_clean_email_address |
2 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestGetUserIdFromEmail.test_get_user_id_existing_user |
3 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestGetUserIdFromEmail.test_get_user_id_non_existing_user |
2 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestGetUserIdFromEmail.test_get_user_id_empty_email |
2 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestGetUserIdFromEmail.test_get_user_id_case_sensitivity |
4 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestSaveEmailToDb.test_save_new_email_success |
13 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestSaveEmailToDb.test_save_existing_email_returns_existing |
9 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestExtractLinkedinJobIds.test_extract_linkedin_job_ids_real_email |
3 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestExtractLinkedinJobIds.test_extract_linkedin_job_ids_empty_body |
2 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestExtractLinkedinJobIds.test_extract_linkedin_job_ids_no_jobs |
3 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestExtractLinkedinJobIds.test_extract_linkedin_job_ids_url_variations |
4 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestExtractLinkedinJobIds.test_extract_linkedin_job_ids_with_duplicate_ids |
4 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestExtractLinkedinJobIds.test_extract_linkedin_job_ids_with_query_parameters |
5 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestExtractLinkedinJobIds.test_extract_linkedin_job_ids_malformed_urls |
4 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestExtractIndeedJobIds.test_extract_indeed_job_ids_real_email |
2 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestExtractIndeedJobIds.test_extract_indeed_job_ids_empty_body |
2 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestExtractIndeedJobIds.test_extract_indeed_job_ids_no_jobs |
3 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestExtractIndeedJobIds.test_extract_indeed_job_ids_url_variations |
4 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestExtractIndeedJobIds.test_extract_indeed_job_ids_with_duplicate_ids |
4 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestExtractIndeedJobIds.test_extract_indeed_job_ids_malformed_urls |
4 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestSaveJobsToDb.test_save_new_jobs_success |
7 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestSaveJobsToDb.test_save_existing_jobs_returns_existing |
7 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestSaveJobsToDb.test_save_jobs_different_owners |
13 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestSaveJobDataToDb.sample_job_data |
1 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestSaveJobDataToDb.sample_scraped_job |
5 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestSaveJobDataToDb.test_save_job_data_single_job_and_data |
13 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestSaveJobDataToDb.test_save_job_data_multiple_jobs_and_data |
21 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestProcessEmailJobs.test_process_linkedin_email_jobs_success |
3 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestProcessEmailJobs.test_process_indeed_email_jobs_success |
3 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestProcessEmailJobs.test_process_indeed_email_jobs_success_no_brightapi |
4 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestProcessEmailJobs.test_process_linkedin_email_jobs_success_duplicates_different_owners |
6 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestProcessEmailJobs.test_process_linkedin_email_jobs_success_duplicates_same_owner |
4 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestProcessUserEmails.test_single_user |
18 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestProcessUserEmails.test_single_user.mock_get_email_ids_side_effect |
3 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestProcessUserEmails.test_single_user.mock_get_email_data_side_effect |
3 |
1 |
0 |
67% |
backend/tests/eis/test_email_scraper.py |
TestProcessUserEmails.test_multiple_users |
19 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestProcessUserEmails.test_multiple_users.mock_get_email_ids_side_effect |
5 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestProcessUserEmails.test_multiple_users.mock_get_email_data_side_effect |
5 |
1 |
0 |
80% |
backend/tests/eis/test_email_scraper.py |
TestProcessUserEmails.test_multiple_users_same_jobs |
19 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestProcessUserEmails.test_multiple_users_same_jobs.mock_get_email_ids_side_effect |
5 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestProcessUserEmails.test_multiple_users_same_jobs.mock_get_email_data_side_effect |
5 |
1 |
0 |
80% |
backend/tests/eis/test_email_scraper.py |
TestProcessUserEmails.test_skip_brightdata |
7 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestProcessUserEmails.test_skip_brightdata.mock_get_email_ids_side_effect |
3 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestProcessUserEmails.test_skip_brightdata.mock_get_email_data_side_effect |
3 |
1 |
0 |
67% |
backend/tests/eis/test_email_scraper.py |
TestScrapeRemainingJobs._scraped_jobs |
9 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestScrapeRemainingJobs.indeed_scraped_jobs |
1 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestScrapeRemainingJobs.indeed_scraped_jobs_user2 |
1 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestScrapeRemainingJobs.linkedin_scraped_jobs |
1 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestScrapeRemainingJobs.test_indeed_success |
8 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestScrapeRemainingJobs.test_indeed_nobrightapi_success |
14 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestScrapeRemainingJobs.test_indeed_nobrightapi_fail |
8 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestScrapeRemainingJobs.test_linkedin_success |
8 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
TestScrapeRemainingJobs.test_indeed_multiple_users_shared_jobs_success |
14 |
0 |
0 |
100% |
backend/tests/eis/test_email_scraper.py |
(no function) |
101 |
0 |
0 |
100% |
backend/tests/eis/test_job_scraper.py |
test_extract_indeed_jobs_from_email |
2 |
0 |
0 |
100% |
backend/tests/eis/test_job_scraper.py |
test_parse_indeed_job_section |
2 |
0 |
0 |
100% |
backend/tests/eis/test_job_scraper.py |
MockLinkedinJobScraper.__init__ |
2 |
0 |
0 |
100% |
backend/tests/eis/test_job_scraper.py |
MockLinkedinJobScraper.scrape_job |
5 |
0 |
0 |
100% |
backend/tests/eis/test_job_scraper.py |
MockIndeedJobScraper.__init__ |
2 |
0 |
0 |
100% |
backend/tests/eis/test_job_scraper.py |
MockIndeedJobScraper.scrape_job |
5 |
0 |
0 |
100% |
backend/tests/eis/test_job_scraper.py |
(no function) |
22 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.parser |
1 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_extract_postcode_uk |
2 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_extract_postcode_us |
2 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_extract_postcode_canada |
2 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_extract_postcode_general |
2 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_extract_postcode_letter_number_combinations_parametrized |
2 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_extract_postcode_none_cases |
2 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_extract_attendance_type_remote |
2 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_extract_attendance_type_hybrid |
2 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_extract_attendance_type_onsite |
2 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_extract_attendance_type_none_cases |
2 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_extract_attendance_type_case_insensitive |
6 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_parse_location_parametrized |
3 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser._assert_location_result |
4 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_parse_location_only_method |
5 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_parser_handles_empty_string |
6 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_parser_handles_whitespace_only |
6 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_parser_handles_special_characters |
3 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_parser_performance |
7 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_complex_location_strings |
10 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
TestLocationParser.test_edge_cases |
10 |
0 |
0 |
100% |
backend/tests/eis/test_location_parser.py |
(no function) |
40 |
0 |
0 |
100% |
backend/tests/eis/test_routers.py |
(no function) |
18 |
0 |
0 |
100% |
backend/tests/routers/__init__.py |
(no function) |
0 |
0 |
0 |
100% |
backend/tests/routers/test_dashboard.py |
TestDashboardRouter.test_success |
15 |
0 |
0 |
100% |
backend/tests/routers/test_dashboard.py |
TestDashboardRouter.test_unauthorized |
2 |
0 |
0 |
100% |
backend/tests/routers/test_dashboard.py |
(no function) |
5 |
0 |
0 |
100% |
backend/tests/routers/test_data_tables.py |
TestCompanyCRUD.test_get_all_specific_company |
5 |
0 |
0 |
100% |
backend/tests/routers/test_data_tables.py |
TestCompanyCRUD.test_get_all_specific_id_not_owned |
3 |
0 |
0 |
100% |
backend/tests/routers/test_data_tables.py |
TestFileCRUD.test_file_download_data_url_format |
5 |
0 |
0 |
100% |
backend/tests/routers/test_data_tables.py |
TestFileCRUD.test_file_download_plain_base64_format |
5 |
0 |
0 |
100% |
backend/tests/routers/test_data_tables.py |
TestFileCRUD.test_file_download_binary_content |
7 |
0 |
0 |
100% |
backend/tests/routers/test_data_tables.py |
TestFileCRUD.test_file_download_not_found |
4 |
0 |
0 |
100% |
backend/tests/routers/test_data_tables.py |
TestFileCRUD.test_file_download_unauthorized |
5 |
0 |
0 |
100% |
backend/tests/routers/test_data_tables.py |
TestFileCRUD.test_file_download_empty_content |
6 |
0 |
0 |
100% |
backend/tests/routers/test_data_tables.py |
(no function) |
78 |
0 |
0 |
100% |
backend/tests/routers/test_export.py |
TestExport.test_export_data |
2 |
0 |
0 |
100% |
backend/tests/routers/test_export.py |
TestExport.test_export_no_data |
3 |
0 |
0 |
100% |
backend/tests/routers/test_export.py |
(no function) |
3 |
0 |
0 |
100% |
backend/tests/routers/test_login.py |
TestLogin.test_login_user |
8 |
0 |
0 |
100% |
backend/tests/routers/test_login.py |
TestLogin.test_incorrect_login |
2 |
0 |
0 |
100% |
backend/tests/routers/test_login.py |
(no function) |
8 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_get_all_users_admin |
3 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_get_all_users_non_admin |
2 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_get_all_users_unauthorised |
2 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_get_current_user_profile_success |
4 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_get_user_by_id |
3 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_get_user_by_id_non_admin |
2 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_get_user_by_id_unauthorised |
2 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_get_user_by_id_not_found |
2 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.get_user |
1 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_update_same_user_admin |
5 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_update_different_user_admin |
5 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_update_different_user_admin_existing |
3 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_update_different_user_admin_incorrect |
3 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_update_same_user_non_admin |
4 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_update_different_user_non_admin |
5 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_update_me_user_non_admin |
5 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_update_nopassword_user_non_admin |
4 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_update_different_user_non_admin_existing |
4 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_update_different_user_non_admin_incorrect |
4 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_update_user_noemail |
4 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_update_user_unauthorised |
6 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_create_user |
5 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
TestUser.test_create_user_limited |
3 |
0 |
0 |
100% |
backend/tests/routers/test_user.py |
(no function) |
27 |
0 |
0 |
100% |
backend/tests/test_utils.py |
TestPasswordUtils.test_hash_is_not_plaintext |
4 |
0 |
0 |
100% |
backend/tests/test_utils.py |
TestPasswordUtils.test_correct_password_verifies |
3 |
0 |
0 |
100% |
backend/tests/test_utils.py |
TestPasswordUtils.test_incorrect_password_fails |
4 |
0 |
0 |
100% |
backend/tests/test_utils.py |
TestPasswordUtils.test_hash_is_unique_due_to_salt |
6 |
0 |
0 |
100% |
backend/tests/test_utils.py |
(no function) |
6 |
0 |
0 |
100% |
backend/tests/utils/__init__.py |
(no function) |
0 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
create_settings |
5 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
create_users |
18 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
delete_user |
4 |
4 |
0 |
0% |
backend/tests/utils/create_data.py |
override_entries_properties |
13 |
3 |
0 |
77% |
backend/tests/utils/create_data.py |
add_to_db |
5 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
create_keywords |
3 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
create_aggregators |
3 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
create_companies |
3 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
create_locations |
3 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
create_people |
3 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
create_jobs |
5 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
create_files |
3 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
create_interviews |
4 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
create_job_application_updates |
3 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
create_job_alert_emails |
5 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
create_scraped_jobs |
4 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
create_service_logs |
3 |
0 |
0 |
100% |
backend/tests/utils/create_data.py |
(no function) |
22 |
0 |
0 |
100% |
backend/tests/utils/files.py |
get_resources_path |
2 |
0 |
0 |
100% |
backend/tests/utils/files.py |
load_file_as_base64 |
9 |
3 |
0 |
67% |
backend/tests/utils/files.py |
get_file_info |
15 |
7 |
0 |
53% |
backend/tests/utils/files.py |
load_all_resource_files |
13 |
1 |
0 |
92% |
backend/tests/utils/files.py |
(no function) |
7 |
0 |
0 |
100% |
backend/tests/utils/seed_database.py |
reset_database |
9 |
0 |
0 |
100% |
backend/tests/utils/seed_database.py |
seed_database |
3 |
3 |
0 |
0% |
backend/tests/utils/seed_database.py |
(no function) |
10 |
1 |
0 |
90% |
backend/tests/utils/table_data.py |
add_mappings |
6 |
0 |
0 |
100% |
backend/tests/utils/table_data.py |
(no function) |
43 |
0 |
0 |
100% |