MCPcopy Create free account

hub / github.com/MadsLorentzen/ai-job-search / types & classes

Types & classes102 in github.com/MadsLorentzen/ai-job-search

↓ 23 callersClassFakeWorksheet
tests/test_convert_salary_excel.py:15
↓ 3 callersClassVerificationError
Raised when a generated PDF does not satisfy its checks.
tools/verify_pdf.py:16
ClassAlreadyAppliedTests
tests/test_upstream_triage.py:115
ClassApply
tests/test_rank_state.py:202
ClassApplyArchivesThePosting
Step 6b must also write the posting text it is holding to the archive.
tests/test_apply_records_application.py:253
ClassApplyRecordsApplication
/apply Step 6b writes the row that six other commands read.
tests/test_apply_records_application.py:53
ClassArchiveNameIsOnePathComponent
`<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
ClassCandidates
tests/test_rank_state.py:63
ClassCheckerRepoFixture
tests/test_check_framework_version.py:29
ClassCleanTreeTests
tests/test_security_guards.py:60
ClassCompoundCategoryPairingTests
tests/test_convert_salary_excel.py:394
ClassDeadlineSurvivesEveryWrite
#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
ClassDetectColumnTypeTests
tests/test_convert_salary_excel.py:33
ClassDirectCloneFallbackTests
tests/test_check_upstream_updates.py:88
ClassDraftedMeansDraftedToEveryReader
`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
ClassForkWithoutUpstreamRemoteTests
tests/test_check_upstream_updates.py:72
ClassFormatEntryTests
tests/test_salary_lookup.py:27
ClassFrameworkVersionGateTests
tests/test_check_framework_version.py:69
ClassGitignoreGuardTests
tests/test_security_guards.py:227
ClassGitignoreNegationTests
tests/test_security_guards.py:337
ClassGitignorePatternBehaviorTests
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
ClassGuardRepoFixture
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
ClassHookGuardTests
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
ClassHtmlReportCommandFileTests
Structural checks on the command file itself.
tests/test_html_report_command.py:26
ClassHtmlReportGitignoreTests
reports/ must be gitignored — it holds personal generated output.
tests/test_html_report_command.py:94
ClassHtmlReportLintIntegrationTests
lint_skills.py must pass after the command is added.
tests/test_html_report_command.py:147
ClassHtmlReportTrackerFieldTests
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
ClassLinterRepoFixture
tests/test_lint_skills.py:22
ClassManifestGuardTests
tests/test_security_guards.py:360
ClassMatchScoreTests
tests/test_salary_lookup.py:452
ClassMissingUpstreamRefTests
tests/test_upstream_triage.py:155
ClassNotionSyncCommandSpec
tests/test_notion_sync_command.py:25
ClassNullShapeEndToEndTests
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
ClassOutcomeFollowupBranchSpec
tests/test_outcome_followup.py:26
ClassParseNumericCellLocaleTests
tests/test_convert_salary_excel.py:375
ClassParsePageCountTests
tests/test_verify_pdf.py:16
ClassPermissionGuardTests
tests/test_security_guards.py:67
ClassPostedDateStalenessSpec
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
ClassRankBatchLimitSpec
The expensive fetch-and-score batch is bounded independently of output.
tests/test_rank_command.py:489
ClassRankCommandSpec
tests/test_rank_command.py:45
ClassRankStateCase
tests/test_rank_state.py:40
ClassRankStateToolSpec
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
ClassReaderCases
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
ClassReadersBucketMap
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
ClassReadmeImageReferences
tests/test_readme_assets.py:17
ClassRealChangelogTests
tests/test_changelog_structure.py:128
ClassRealRepoTests
tests/test_security_guards.py:419
ClassRelevanceFilterTests
tests/test_upstream_triage.py:72
ClassRunToolTests
tests/test_verify_pdf.py:98
ClassScrapeProvenanceSpec
tests/test_scrape_provenance.py:31
ClassScrapeSearchOutputContractTests
Every portal CLI's search output must carry the Step 2 contract fields.
tests/test_scrape_contract.py:53
ClassSearchCompanyRefactoredTests
tests/test_salary_lookup.py:472
ClassSearchCompanyTests
tests/test_salary_lookup.py:196
ClassSeenJobsPostingDateTests
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
ClassSettingsShapeTests
tests/test_lint_skills.py:66
ClassSetupStep3ContactBlocks
tests/test_setup_command.py:42
ClassSkillAndCommandCheckTests
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
ClassSweep
tests/test_rank_state.py:141
ClassTemplatesStillCarryThePlaceholders
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
ClassTestAgentSelection
tests/test_robots_check.py:82
ClassTestApplyWiring
tests/test_company_research_cache.py:100
ClassTestArgumentHardening
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
ClassTestAtsExtractionEncoding
F34: every documented extraction command must pin the encoding.
tests/test_latex_guidance.py:115
ClassTestBulletBracketTrap
F9: no document or template doc may teach `\\item [text]`.
tests/test_latex_guidance.py:50
ClassTestCacheDefinition
tests/test_company_research_cache.py:53
ClassTestCli
tests/test_robots_check.py:101
ClassTestCvSentinelsAreDataLocated
tests/test_placeholder_integrity.py:51
ClassTestForkWarningsAtTheDecisionPoint
tests/test_onboarding_privacy.py:32
ClassTestGmailQueryOperators
tests/test_gmail_sync_command.py:20
ClassTestInterviewWiring
tests/test_company_research_cache.py:133
ClassTestMatchScoreAnglicize
tests/test_salary_lookup.py:160
ClassTestMatchScoreExactMatch
tests/test_salary_lookup.py:123
ClassTestMatchScoreNoOverlap
tests/test_salary_lookup.py:173
ClassTestMatchScoreShortQuery
tests/test_salary_lookup.py:150
ClassTestMatchScoreSubstring
tests/test_salary_lookup.py:140
ClassTestPathRules
tests/test_robots_check.py:32
ClassTestPercentEncodedRules
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
ClassTestProfileSentinelIsDataLocated
tests/test_placeholder_integrity.py:88
ClassTestRecencyFallback
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
ClassTestResetCoversEveryDocumentsSubfolder
tests/test_reset_command.py:57
ClassTestResetCoversEveryPersonalizedSkillFile
tests/test_reset_command.py:115
ClassTestSearchCompanyBasicMatch
tests/test_salary_lookup.py:496
ClassTestSearchCompanyCityFilter
tests/test_salary_lookup.py:521
ClassTestSearchCompanyScoreThreshold
tests/test_salary_lookup.py:555
ClassTestSetupChecksOriginBeforeWriting
tests/test_onboarding_privacy.py:61
ClassTestSoftTwoHundred
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
ClassTestSpecialCharacterGuidance
F31: both template guides must document the LaTeX escapes.
tests/test_latex_guidance.py:80
ClassTriageRepoFixture
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
ClassUnreleasedProblemsTests
tests/test_changelog_structure.py:84
ClassUpToDateTests
tests/test_upstream_triage.py:64
ClassUpskillSkillSpec
tests/test_upskill_skill.py:38
ClassUpstreamCheckerRepoFixture
tests/test_check_upstream_updates.py:32
ClassUpstreamRefMissingFileTests
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
ClassUpstreamRemotePresentTests
tests/test_check_upstream_updates.py:119
ClassUtilityTests
tests/test_salary_lookup.py:426
ClassValidateDataShapeTests
Category-shape and duplicate-name checks (reuses assert_invalid_data).
tests/test_salary_lookup.py:280
ClassValidateDataTests
tests/test_salary_lookup.py:210
ClassValidateFlagTests
End-to-end checks for the --validate pre-flight flow.
tests/test_salary_lookup.py:319
ClassVerifyPdfTests
tests/test_verify_pdf.py:25
ClassVocabularyBlockExists
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