Code
Hub
Workspaces
Following
Trending
Connect
MCP
copy
Create free account
hub
/
github.com/MadsLorentzen/ai-job-search
/ types & classes
Types & classes
102 in github.com/MadsLorentzen/ai-job-search
⨍
Functions
539
◇
Types & classes
102
↳
Endpoints
8
↓ 23 callers
Class
FakeWorksheet
tests/test_convert_salary_excel.py:15
↓ 3 callers
Class
VerificationError
Raised when a generated PDF does not satisfy its checks.
tools/verify_pdf.py:16
Class
AlreadyAppliedTests
tests/test_upstream_triage.py:115
Class
Apply
tests/test_rank_state.py:202
Class
ApplyArchivesThePosting
Step 6b must also write the posting text it is holding to the archive.
tests/test_apply_records_application.py:253
Class
ApplyRecordsApplication
/apply Step 6b writes the row that six other commands read.
tests/test_apply_records_application.py:53
Class
ArchiveNameIsOnePathComponent
`<company>_<role>` must derive a single path component. `Novo Nordisk A/S` used to derive `novo_nordisk_a/s_<role>/`: every command that *der
tests/test_apply_records_application.py:388
Class
Candidates
tests/test_rank_state.py:63
Class
CheckerRepoFixture
tests/test_check_framework_version.py:29
Class
CleanTreeTests
tests/test_security_guards.py:60
Class
CompoundCategoryPairingTests
tests/test_convert_salary_excel.py:394
Class
DeadlineSurvivesEveryWrite
#319: the deadline is carried through the whole pipeline and never dropped. The header migration must be header-line-only (inserting it mid-colum
tests/test_apply_records_application.py:313
Class
DetectColumnTypeTests
tests/test_convert_salary_excel.py:33
Class
DirectCloneFallbackTests
tests/test_check_upstream_updates.py:88
Class
DraftedMeansDraftedToEveryReader
`drafted` is non-final, so readers that mean *submitted* must say so. Each of these defines its set by exclusion from the final statuses, so
tests/test_apply_records_application.py:189
Class
ForkWithoutUpstreamRemoteTests
tests/test_check_upstream_updates.py:72
Class
FormatEntryTests
tests/test_salary_lookup.py:27
Class
FrameworkVersionGateTests
tests/test_check_framework_version.py:69
Class
GitignoreGuardTests
tests/test_security_guards.py:227
Class
GitignoreNegationTests
tests/test_security_guards.py:337
Class
GitignorePatternBehaviorTests
Pin the match semantics of the shipped .gitignore, not just rule presence. The guard checks that a rule exists; it never checks what the rule mat
tests/test_security_guards.py:263
Class
GuardRepoFixture
Builds a minimal repo tree the guards pass on, then breaks one thing per test. The guard script resolves the repo root from its own location, so
tests/test_security_guards.py:24
Class
HookGuardTests
A hook in .claude/settings.json runs with no prompt when its event fires. The shape used here is the one the Shai-Hulud worm planted in its Augus
tests/test_security_guards.py:110
Class
HtmlReportCommandFileTests
Structural checks on the command file itself.
tests/test_html_report_command.py:26
Class
HtmlReportGitignoreTests
reports/ must be gitignored — it holds personal generated output.
tests/test_html_report_command.py:94
Class
HtmlReportLintIntegrationTests
lint_skills.py must pass after the command is added.
tests/test_html_report_command.py:147
Class
HtmlReportTrackerFieldTests
The dashboard is a consumer of every tracker column: the Step 1 field enumeration and the Step 3 table columns must stay in phase with the can
tests/test_html_report_command.py:46
Class
LinterRepoFixture
tests/test_lint_skills.py:22
Class
ManifestGuardTests
tests/test_security_guards.py:360
Class
MatchScoreTests
tests/test_salary_lookup.py:452
Class
MissingUpstreamRefTests
tests/test_upstream_triage.py:155
Class
NotionSyncCommandSpec
tests/test_notion_sync_command.py:25
Class
NullShapeEndToEndTests
The disagreement in full: --validate blesses a file with a null metadata/categories, then the lookup path must render it, not crash. Both pay
tests/test_salary_lookup.py:362
Class
OutcomeFollowupBranchSpec
tests/test_outcome_followup.py:26
Class
ParseNumericCellLocaleTests
tests/test_convert_salary_excel.py:375
Class
ParsePageCountTests
tests/test_verify_pdf.py:16
Class
PermissionGuardTests
tests/test_security_guards.py:67
Class
PostedDateStalenessSpec
Step 3 must consume the posted_date #391 persists. The field exists because a 27-month-old posting ranked Strong Fit at position 1 of 133 (#3
tests/test_rank_command.py:424
Class
RankBatchLimitSpec
The expensive fetch-and-score batch is bounded independently of output.
tests/test_rank_command.py:489
Class
RankCommandSpec
tests/test_rank_command.py:45
Class
RankStateCase
tests/test_rank_state.py:40
Class
RankStateToolSpec
Guards for routing Step 1/3/4 through tools/rank_state.py (#395). /rank's Step 1 and Step 4 used to read the whole of seen_jobs.json into the
tests/test_rank_command.py:526
Class
ReaderCases
Spot-checks across readers that prove the vocabulary block is reachable from each command that makes decisions based on tracker status. Forma
tests/test_tracker_status_vocab.py:285
Class
ReadersBucketMap
Each reader that classifies tracker values must handle both spellings and must not include archive-only values in tracker buckets.
tests/test_tracker_status_vocab.py:161
Class
ReadmeImageReferences
tests/test_readme_assets.py:17
Class
RealChangelogTests
tests/test_changelog_structure.py:128
Class
RealRepoTests
tests/test_security_guards.py:419
Class
RelevanceFilterTests
tests/test_upstream_triage.py:72
Class
RunToolTests
tests/test_verify_pdf.py:98
Class
ScrapeProvenanceSpec
tests/test_scrape_provenance.py:31
Class
ScrapeSearchOutputContractTests
Every portal CLI's search output must carry the Step 2 contract fields.
tests/test_scrape_contract.py:53
Class
SearchCompanyRefactoredTests
tests/test_salary_lookup.py:472
Class
SearchCompanyTests
tests/test_salary_lookup.py:196
Class
SeenJobsPostingDateTests
The posting date Step 2 guarantees must survive into Step 4's storage. Step 2's contract promises a `date` on every portal CLI's search output an
tests/test_scrape_contract.py:92
Class
SettingsShapeTests
tests/test_lint_skills.py:66
Class
SetupStep3ContactBlocks
tests/test_setup_command.py:42
Class
SkillAndCommandCheckTests
check_skill()/check_command() are the linter's main job and were previously untested - only check_settings() had coverage, so deleting e.g. th
tests/test_lint_skills.py:114
Class
Sweep
tests/test_rank_state.py:141
Class
TemplatesStillCarryThePlaceholders
The instructions above target real tokens; if a template renames them, the instruction and this test must move together.
tests/test_setup_command.py:70
Class
TestAgentSelection
tests/test_robots_check.py:82
Class
TestApplyWiring
tests/test_company_research_cache.py:100
Class
TestArgumentHardening
A URL can never be read by curl as an option. gate() rebuilds the target as scheme://host/robots.txt, so the gate path was never exposed; thi
tests/test_robots_check.py:215
Class
TestAtsExtractionEncoding
F34: every documented extraction command must pin the encoding.
tests/test_latex_guidance.py:115
Class
TestBulletBracketTrap
F9: no document or template doc may teach `\\item [text]`.
tests/test_latex_guidance.py:50
Class
TestCacheDefinition
tests/test_company_research_cache.py:53
Class
TestCli
tests/test_robots_check.py:101
Class
TestCvSentinelsAreDataLocated
tests/test_placeholder_integrity.py:51
Class
TestForkWarningsAtTheDecisionPoint
tests/test_onboarding_privacy.py:32
Class
TestGmailQueryOperators
tests/test_gmail_sync_command.py:20
Class
TestInterviewWiring
tests/test_company_research_cache.py:133
Class
TestMatchScoreAnglicize
tests/test_salary_lookup.py:160
Class
TestMatchScoreExactMatch
tests/test_salary_lookup.py:123
Class
TestMatchScoreNoOverlap
tests/test_salary_lookup.py:173
Class
TestMatchScoreShortQuery
tests/test_salary_lookup.py:150
Class
TestMatchScoreSubstring
tests/test_salary_lookup.py:140
Class
TestPathRules
tests/test_robots_check.py:32
Class
TestPercentEncodedRules
Rule patterns are percent-decoded to match the decoded request path. FAIL-OPEN REGRESSION: without this, a site that percent-encodes its own
tests/test_robots_check.py:196
Class
TestProfileSentinelIsDataLocated
tests/test_placeholder_integrity.py:88
Class
TestRecencyFallback
Step 1b.3 says to scope to the last 14 days via the portal's recency flag - but not every portal has one (jobdanmark offers no date filter or
tests/test_scrape_provenance.py:81
Class
TestResetCoversEveryDocumentsSubfolder
tests/test_reset_command.py:57
Class
TestResetCoversEveryPersonalizedSkillFile
tests/test_reset_command.py:115
Class
TestSearchCompanyBasicMatch
tests/test_salary_lookup.py:496
Class
TestSearchCompanyCityFilter
tests/test_salary_lookup.py:521
Class
TestSearchCompanyScoreThreshold
tests/test_salary_lookup.py:555
Class
TestSetupChecksOriginBeforeWriting
tests/test_onboarding_privacy.py:61
Class
TestSoftTwoHundred
A 200 whose body is not a robots.txt used to grant permission. Found by adversarial review, not inspection. A misconfigured host answering /r
tests/test_robots_check.py:113
Class
TestSpecialCharacterGuidance
F31: both template guides must document the LaTeX escapes.
tests/test_latex_guidance.py:80
Class
TriageRepoFixture
Builds a real git history: a shared base, then an `upstream/master` ref that runs ahead, so the triage script can be exercised fully offline.
tests/test_upstream_triage.py:21
Class
UnreleasedProblemsTests
tests/test_changelog_structure.py:84
Class
UpToDateTests
tests/test_upstream_triage.py:64
Class
UpskillSkillSpec
tests/test_upskill_skill.py:38
Class
UpstreamCheckerRepoFixture
tests/test_check_upstream_updates.py:32
Class
UpstreamRefMissingFileTests
Simulates upstream renaming/deleting one framework file while the fork still has its own copy: git show then fails, and the checker used to sw
tests/test_check_upstream_updates.py:135
Class
UpstreamRemotePresentTests
tests/test_check_upstream_updates.py:119
Class
UtilityTests
tests/test_salary_lookup.py:426
Class
ValidateDataShapeTests
Category-shape and duplicate-name checks (reuses assert_invalid_data).
tests/test_salary_lookup.py:280
Class
ValidateDataTests
tests/test_salary_lookup.py:210
Class
ValidateFlagTests
End-to-end checks for the --validate pre-flight flow.
tests/test_salary_lookup.py:319
Class
VerifyPdfTests
tests/test_verify_pdf.py:25
Class
VocabularyBlockExists
The canonical definition must live in /outcome and nowhere else.
tests/test_tracker_status_vocab.py:58
next →
1–100 of 102, ranked by callers