Coverage report: 85%

Files Functions Classes

coverage.py v7.13.5, created at 2026-03-18 23:17 +0000

File class   statements missing excluded   coverage
backend / app / __init__.py (no class)   0 0 0   100%
backend / app / base_models.py CommonBase   3 0 0   100%
backend / app / base_models.py Owned   0 0 0   100%
backend / app / base_models.py (no class)   12 0 0   100%
backend / app / base_schemas.py Out   0 0 0   100%
backend / app / base_schemas.py OwnedOut   0 0 0   100%
backend / app / base_schemas.py GenericResponse   0 0 0   100%
backend / app / base_schemas.py (no class)   21 0 0   100%
backend / app / config.py Settings   0 0 0   100%
backend / app / config.py (no class)   56 2 0   96%
backend / app / core / __init__.py (no class)   0 0 0   100%
backend / app / core / models.py Setting   0 0 0   100%
backend / app / core / models.py User   29 5 0   83%
backend / app / core / models.py UserPreferences   0 0 0   100%
backend / app / core / models.py StripeDetails   0 0 0   100%
backend / app / core / models.py PremiumSettings   0 0 0   100%
backend / app / core / models.py UserToken   6 0 0   100%
backend / app / core / models.py UserQualification   0 0 0   100%
backend / app / core / models.py (no class)   79 0 0   100%
backend / app / core / oauth2.py (no class)   42 0 0   100%
backend / app / core / routers / __init__.py (no class)   3 0 0   100%
backend / app / core / routers / auth.py (no class)   144 12 0   92%
backend / app / core / routers / settings.py (no class)   3 0 0   100%
backend / app / core / routers / user.py (no class)   156 19 0   88%
backend / app / core / schemas.py SettingCreate   0 0 0   100%
backend / app / core / schemas.py SettingOut   0 0 0   100%
backend / app / core / schemas.py SettingUpdate   0 0 0   100%
backend / app / core / schemas.py UserRegister   0 0 0   100%
backend / app / core / schemas.py UserLogin   0 0 0   100%
backend / app / core / schemas.py Token   0 0 0   100%
backend / app / core / schemas.py TokenData   0 0 0   100%
backend / app / core / schemas.py UserPreferencesCreate   0 0 0   100%
backend / app / core / schemas.py UserPreferencesUpdate   0 0 0   100%
backend / app / core / schemas.py UserPreferencesOut   0 0 0   100%
backend / app / core / schemas.py PremiumDetailsCreate   0 0 0   100%
backend / app / core / schemas.py PremiumDetailsOut   0 0 0   100%
backend / app / core / schemas.py PremiumDetailsUpdate   0 0 0   100%
backend / app / core / schemas.py CurrentUserPremiumDetailsUpdate   0 0 0   100%
backend / app / core / schemas.py StripeDetails   0 0 0   100%
backend / app / core / schemas.py UserCreate   0 0 0   100%
backend / app / core / schemas.py UserOut   0 0 0   100%
backend / app / core / schemas.py UserUpdate   0 0 0   100%
backend / app / core / schemas.py CurrentUserUpdate   0 0 0   100%
backend / app / core / schemas.py CurrentUserUpdateResponse   0 0 0   100%
backend / app / core / schemas.py UserQualificationUpsert   8 0 0   100%
backend / app / core / schemas.py UserQualificationOut   0 0 0   100%
backend / app / core / schemas.py PasswordResetRequest   0 0 0   100%
backend / app / core / schemas.py PasswordReset   0 0 0   100%
backend / app / core / schemas.py CheckPendingEmailResponse   0 0 0   100%
backend / app / core / schemas.py AccountDeleteRequest   0 0 0   100%
backend / app / core / schemas.py (no class)   131 0 0   100%
backend / app / core / utils.py (no class)   37 0 0   100%
backend / app / data_tables / __init__.py (no class)   0 0 0   100%
backend / app / data_tables / models.py Keyword   0 0 0   100%
backend / app / data_tables / models.py Aggregator   0 0 0   100%
backend / app / data_tables / models.py Company   0 0 0   100%
backend / app / data_tables / models.py Location   8 0 0   100%
backend / app / data_tables / models.py Geolocation   0 0 0   100%
backend / app / data_tables / models.py File   0 0 0   100%
backend / app / data_tables / models.py Person   1 0 0   100%
backend / app / data_tables / models.py Job   0 0 0   100%
backend / app / data_tables / models.py Interview   0 0 0   100%
backend / app / data_tables / models.py JobApplicationUpdate   0 0 0   100%
backend / app / data_tables / models.py SpeculativeApplication   0 0 0   100%
backend / app / data_tables / models.py (no class)   134 0 0   100%
backend / app / data_tables / routers.py (no class)   41 4 0   90%
backend / app / data_tables / schemas.py KeywordCreate   0 0 0   100%
backend / app / data_tables / schemas.py KeywordOut   0 0 0   100%
backend / app / data_tables / schemas.py KeywordUpdate   0 0 0   100%
backend / app / data_tables / schemas.py AggregatorCreate   0 0 0   100%
backend / app / data_tables / schemas.py AggregatorOut   0 0 0   100%
backend / app / data_tables / schemas.py AggregatorUpdate   0 0 0   100%
backend / app / data_tables / schemas.py CompanyCreate   0 0 0   100%
backend / app / data_tables / schemas.py CompanyOut   0 0 0   100%
backend / app / data_tables / schemas.py CompanyUpdate   0 0 0   100%
backend / app / data_tables / schemas.py GeolocationOut   0 0 0   100%
backend / app / data_tables / schemas.py LocationCreate   0 0 0   100%
backend / app / data_tables / schemas.py LocationOut   0 0 0   100%
backend / app / data_tables / schemas.py LocationUpdate   0 0 0   100%
backend / app / data_tables / schemas.py FileCreate   0 0 0   100%
backend / app / data_tables / schemas.py FileOut   0 0 0   100%
backend / app / data_tables / schemas.py FileUpdate   0 0 0   100%
backend / app / data_tables / schemas.py PersonCreate   0 0 0   100%
backend / app / data_tables / schemas.py PersonOut   0 0 0   100%
backend / app / data_tables / schemas.py PersonUpdate   0 0 0   100%
backend / app / data_tables / schemas.py JobCreate   0 0 0   100%
backend / app / data_tables / schemas.py JobOut   1 0 0   100%
backend / app / data_tables / schemas.py JobUpdate   0 0 0   100%
backend / app / data_tables / schemas.py InterviewCreate   0 0 0   100%
backend / app / data_tables / schemas.py InterviewOut   1 0 0   100%
backend / app / data_tables / schemas.py InterviewUpdate   0 0 0   100%
backend / app / data_tables / schemas.py JobApplicationUpdateCreate   0 0 0   100%
backend / app / data_tables / schemas.py JobApplicationUpdateOut   0 0 0   100%
backend / app / data_tables / schemas.py JobApplicationUpdateUpdate   0 0 0   100%
backend / app / data_tables / schemas.py SpeculativeApplicationCreate   0 0 0   100%
backend / app / data_tables / schemas.py SpeculativeApplicationOut   1 0 0   100%
backend / app / data_tables / schemas.py SpeculativeApplicationUpdate   0 0 0   100%
backend / app / data_tables / schemas.py (no class)   154 0 0   100%
backend / app / database.py (no class)   30 1 0   97%
backend / app / demo / __init__.py (no class)   0 0 0   100%
backend / app / demo / routers.py (no class)   12 0 0   100%
backend / app / demo / seed.py (no class)   124 1 0   99%
backend / app / demo / setup.py (no class)   35 1 0   97%
backend / app / emails / __init__.py (no class)   0 0 0   100%
backend / app / emails / email_service.py EmailService   160 55 0   66%
backend / app / emails / email_service.py (no class)   39 0 0   100%
backend / app / emails / release_data.py (no class)   3 0 0   100%
backend / app / emails / routers / __init__.py (no class)   2 0 0   100%
backend / app / emails / routers / templates.py (no class)   19 0 0   100%
backend / app / emails / routers / tests.py (no class)   45 0 0   100%
backend / app / emails / utils.py (no class)   18 0 0   100%
backend / app / geolocation / __init__.py (no class)   0 0 0   100%
backend / app / geolocation / geolocation.py (no class)   76 1 0   99%
backend / app / geolocation / routers.py (no class)   10 0 0   100%
backend / app / job_email_scraping / __init__.py (no class)   0 0 0   100%
backend / app / job_email_scraping / email_parsers / __init__.py (no class)   5 0 0   100%
backend / app / job_email_scraping / email_parsers / indeed.py (no class)   92 13 0   86%
backend / app / job_email_scraping / email_parsers / linkedin.py (no class)   80 3 0   96%
backend / app / job_email_scraping / email_parsers / nhs.py (no class)   82 3 0   96%
backend / app / job_email_scraping / email_parsers / utils.py Platform   0 0 0   100%
backend / app / job_email_scraping / email_parsers / utils.py (no class)   22 3 0   86%
backend / app / job_email_scraping / email_parsers / veganjobs.py (no class)   34 2 0   94%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper   278 62 0   78%
backend / app / job_email_scraping / email_scraper.py (no class)   38 0 0   100%
backend / app / job_email_scraping / filtering.py (no class)   73 48 0   34%
backend / app / job_email_scraping / gmail.py (no class)   11 0 0   100%
backend / app / job_email_scraping / job_scrapers / __init__.py (no class)   6 0 0   100%
backend / app / job_email_scraping / job_scrapers / apify.py ApifyJobScraper   37 0 0   100%
backend / app / job_email_scraping / job_scrapers / apify.py (no class)   17 0 0   100%
backend / app / job_email_scraping / job_scrapers / brightdata.py BrightdataJobScraper   53 0 0   100%
backend / app / job_email_scraping / job_scrapers / brightdata.py (no class)   16 0 0   100%
backend / app / job_email_scraping / job_scrapers / indeed.py IndeedBrightdataJobScraper   10 10 0   0%
backend / app / job_email_scraping / job_scrapers / indeed.py IndeedApifyJobScraper   5 5 0   0%
backend / app / job_email_scraping / job_scrapers / indeed.py (no class)   24 6 0   75%
backend / app / job_email_scraping / job_scrapers / linkedin.py LinkedinBrightdataJobScraper   11 11 0   0%
backend / app / job_email_scraping / job_scrapers / linkedin.py (no class)   12 3 0   75%
backend / app / job_email_scraping / job_scrapers / nhs.py NhsJobScraper   35 35 0   0%
backend / app / job_email_scraping / job_scrapers / nhs.py (no class)   13 3 0   77%
backend / app / job_email_scraping / job_scrapers / veganjobs.py VeganJobsJobScraper   33 33 0   0%
backend / app / job_email_scraping / job_scrapers / veganjobs.py (no class)   13 3 0   77%
backend / app / job_email_scraping / location_parser.py LocationParser   45 0 0   100%
backend / app / job_email_scraping / location_parser.py (no class)   6 0 0   100%
backend / app / job_email_scraping / migrate_email_ids.py (no class)   27 27 0   0%
backend / app / job_email_scraping / models.py JobEmail   0 0 0   100%
backend / app / job_email_scraping / models.py ScrapedJob   0 0 0   100%
backend / app / job_email_scraping / models.py JobEmailScrapingServiceLog   12 1 0   92%
backend / app / job_email_scraping / models.py JobEmailScrapingPlatformStat   10 0 0   100%
backend / app / job_email_scraping / models.py JobEmailScrapingServiceError   0 0 0   100%
backend / app / job_email_scraping / models.py Filter   2 0 0   100%
backend / app / job_email_scraping / models.py ScrapingExclusionFilter   0 0 0   100%
backend / app / job_email_scraping / models.py ScrapingFavouriteFilter   0 0 0   100%
backend / app / job_email_scraping / models.py ForwardingConfirmationLink   0 0 0   100%
backend / app / job_email_scraping / models.py (no class)   129 0 0   100%
backend / app / job_email_scraping / routers / __init__.py (no class)   6 0 0   100%
backend / app / job_email_scraping / routers / forwarding_confirmation.py (no class)   24 0 0   100%
backend / app / job_email_scraping / routers / job_email.py (no class)   35 1 0   97%
backend / app / job_email_scraping / routers / scraped_job.py (no class)   64 14 0   78%
backend / app / job_email_scraping / routers / scraper_service.py (no class)   19 4 0   79%
backend / app / job_email_scraping / routers / scraping_filter.py (no class)   35 0 0   100%
backend / app / job_email_scraping / routers / service_log.py (no class)   15 0 0   100%
backend / app / job_email_scraping / run_email_scraper.py (no class)   20 1 0   95%
backend / app / job_email_scraping / schemas.py JobEmail   0 0 0   100%
backend / app / job_email_scraping / schemas.py JobEmailUpdate   0 0 0   100%
backend / app / job_email_scraping / schemas.py JobEmailOut   1 0 0   100%
backend / app / job_email_scraping / schemas.py ScrapedJob   0 0 0   100%
backend / app / job_email_scraping / schemas.py ScrapedJobUpdate   0 0 0   100%
backend / app / job_email_scraping / schemas.py ScrapedJobOut   1 0 0   100%
backend / app / job_email_scraping / schemas.py PaginatedScrapedJobResponse   0 0 0   100%
backend / app / job_email_scraping / schemas.py PaginatedJobEmailResponse   0 0 0   100%
backend / app / job_email_scraping / schemas.py JobEmailScrapingServiceLogOut   1 0 0   100%
backend / app / job_email_scraping / schemas.py JobEmailScrapingPlatformStatOut   0 0 0   100%
backend / app / job_email_scraping / schemas.py JobEmailScrapingServiceErrorOut   0 0 0   100%
backend / app / job_email_scraping / schemas.py JobEmailScrapingStartRequest   0 0 0   100%
backend / app / job_email_scraping / schemas.py ScrapingFilterCreate   0 0 0   100%
backend / app / job_email_scraping / schemas.py ScrapingFilterUpdate   0 0 0   100%
backend / app / job_email_scraping / schemas.py ScrapingFilterOut   1 0 0   100%
backend / app / job_email_scraping / schemas.py ForwardingConfirmationLinkOut   0 0 0   100%
backend / app / job_email_scraping / schemas.py ForwardingConfirmationLinkUpdate   0 0 0   100%
backend / app / job_email_scraping / schemas.py Salary   0 0 0   100%
backend / app / job_email_scraping / schemas.py JobInfo   0 0 0   100%
backend / app / job_email_scraping / schemas.py JobResult   0 0 0   100%
backend / app / job_email_scraping / schemas.py (no class)   158 0 0   100%
backend / app / job_rating / __init__.py (no class)   0 0 0   100%
backend / app / job_rating / chatgpt.py OpenAiError   0 0 0   100%
backend / app / job_rating / chatgpt.py (no class)   22 13 0   41%
backend / app / job_rating / claude.py ClaudeError   0 0 0   100%
backend / app / job_rating / claude.py (no class)   26 15 0   42%
backend / app / job_rating / models.py AiSystemPrompt   0 0 0   100%
backend / app / job_rating / models.py AiJobPromptTemplate   0 0 0   100%
backend / app / job_rating / models.py JobRating   2 0 0   100%
backend / app / job_rating / models.py JobRatingServiceLog   7 0 0   100%
backend / app / job_rating / models.py (no class)   44 0 0   100%
backend / app / job_rating / prompts.py (no class)   37 12 0   68%
backend / app / job_rating / routers / __init__.py (no class)   4 0 0   100%
backend / app / job_rating / routers / job_rating.py (no class)   4 0 0   100%
backend / app / job_rating / routers / llm_prompt.py (no class)   10 1 0   90%
backend / app / job_rating / routers / service_log.py (no class)   15 0 0   100%
backend / app / job_rating / routers / service_runner.py (no class)   19 4 0   79%
backend / app / job_rating / schemas.py AiSystemPromptOut   0 0 0   100%
backend / app / job_rating / schemas.py JobRatingOut   0 0 0   100%
backend / app / job_rating / schemas.py JobRatingServiceLogOut   0 0 0   100%
backend / app / job_rating / schemas.py JobRatingServiceLogStartRequest   0 0 0   100%
backend / app / job_rating / schemas.py (no class)   35 0 0   100%
backend / app / job_rating / scraped_job_rating.py ScrapedJobRater   89 2 0   98%
backend / app / job_rating / scraped_job_rating.py (no class)   30 1 0   97%
backend / app / main.py (no class)   83 7 0   92%
backend / app / models.py (no class)   4 0 0   100%
backend / app / payments / __init__.py (no class)   6 0 0   100%
backend / app / payments / checkout.py (no class)   12 0 0   100%
backend / app / payments / customer.py (no class)   40 0 0   100%
backend / app / payments / routers / __init__.py (no class)   2 0 0   100%
backend / app / payments / routers / routers.py (no class)   63 35 0   44%
backend / app / payments / routers / test_routers.py AdvanceClockRequest   0 0 0   100%
backend / app / payments / routers / test_routers.py (no class)   12 0 182   100%
backend / app / payments / setup.py (no class)   7 1 0   86%
backend / app / payments / webhooks.py (no class)   47 2 0   96%
backend / app / resources.py (no class)   3 0 0   100%
backend / app / routers / __init__.py (no class)   2 0 0   100%
backend / app / routers / export.py (no class)   47 0 0   100%
backend / app / routers / others.py (no class)   26 8 0   69%
backend / app / routers / utility.py (no class)   225 27 0   88%
backend / app / service_runner / __init__.py (no class)   0 0 0   100%
backend / app / service_runner / models.py ServiceLog   0 0 0   100%
backend / app / service_runner / models.py (no class)   6 0 0   100%
backend / app / service_runner / routers.py (no class)   92 59 0   36%
backend / app / service_runner / service_runner.py ServiceRunner   67 54 0   19%
backend / app / service_runner / service_runner.py (no class)   11 0 0   100%
backend / app / utils.py AppLogger   30 2 0   93%
backend / app / utils.py (no class)   69 12 0   83%
Total     4453 647 182   85%

No items found using the specified filter.