Pre-scrape: Unit Tests — MEJIX SRL

Started: 2026-10-29 14:01:44
Suites (6)
6 passed
0 failed
0 pending
Tests (83)
83 passed
0 failed
0 pending
/home/runner/work/mejix-srl-nodejs-scraper/mejix-srl-nodejs-scraper/tests/unit/solr.test.js
0.797s
solr.js > querySOLR
should return response object with docs
passed
0.007s
solr.js > querySOLR
should return empty docs when no jobs found
passed
0.001s
solr.js > querySOLR
should zero-pad short CIFs before querying
passed
solr.js > querySOLR
should throw on HTTP error
passed
0.054s
solr.js > getCompanyByCif
should return the first matching company
passed
0.001s
solr.js > getCompanyByCif
should return null when company not found
passed
solr.js > getCompanyByCif
should throw on HTTP error
passed
0.001s
solr.js > upsertCompany
should accept a company doc and zero-pad its id
passed
0.004s
solr.js > upsertCompany
should throw on HTTP error
passed
0.001s
solr.js > upsertJobs
should accept array of jobs
passed
0.001s
solr.js > upsertJobs
should skip the upload when there are no jobs
passed
0.003s
solr.js > upsertJobs
should throw on HTTP error
passed
solr.js > deleteJobByUrl
should delete a job by URL
passed
0.001s
solr.js > deleteJobByUrl
should not throw on 404 (nothing to delete)
passed
solr.js > deleteJobByUrl
should throw on HTTP error
passed
0.001s
solr.js > deleteJobsByCIF
should delete all jobs for a CIF
passed
0.001s
solr.js > deleteJobsByCIF
should not throw on 404 (nothing to delete)
passed
0.001s
solr.js > deleteJobsByCIF
should throw on HTTP error
passed
0.001s
solr.js > Data Integrity
should not have duplicate URLs for same CIF
passed
solr.js > Data Integrity
should have valid CIF format for all jobs
passed
0.001s
solr.js > Data Integrity
should have valid status values
passed
0.001s
/home/runner/work/mejix-srl-nodejs-scraper/mejix-srl-nodejs-scraper/tests/unit/company.test.js
0.183s
company.js > getCompanyData (no cache)
should fetch MEJIX via direct CIF lookup and return company data
passed
0.016s
company.js > getCompanyData (no cache)
should throw when ANAF returns no data
passed
0.022s
company.js > getCompanyData (no cache)
should throw when ANAF returns no company name
passed
0.004s
company.js > getCompanyData (with cache)
should use cached company data when available
passed
0.01s
company.js > validateAndGetCompany
should return company data with status active
passed
0.013s
/home/runner/work/mejix-srl-nodejs-scraper/mejix-srl-nodejs-scraper/tests/unit/index.test.js
1.017s
index.js Component Tests > transformJobsForSOLR
should filter locations to only Romanian cities
passed
0.007s
index.js Component Tests > transformJobsForSOLR
should keep company uppercase
passed
index.js Component Tests > transformJobsForSOLR
should normalize workmode values
passed
0.001s
index.js Component Tests > transformJobsForSOLR
should handle empty jobs array
passed
0.001s
index.js Component Tests > mapToJobModel
should map raw job to job model format
passed
0.009s
index.js Component Tests > mapToJobModel
should remove undefined fields
passed
index.js Component Tests > mapToJobModel
should handle missing title
passed
index.js Component Tests > parseHtmlJobs (MEJIX HTML scraping)
parses titles and absolute URLs
passed
0.012s
index.js Component Tests > parseHtmlJobs (MEJIX HTML scraping)
derives workmode from location text
passed
0.002s
index.js Component Tests > parseHtmlJobs (MEJIX HTML scraping)
detects Cluj-Napoca and defaults to it when missing
passed
0.004s
index.js Component Tests > parseHtmlJobs (MEJIX HTML scraping)
skips the "back to all" self-link
passed
0.002s
index.js Component Tests > parseHtmlJobs (MEJIX HTML scraping)
returns empty when no jobs are listed
passed
0.001s
/home/runner/work/mejix-srl-nodejs-scraper/mejix-srl-nodejs-scraper/tests/unit/markdown-generator.test.js
0.12s
generateJobsMarkdown > company section
includes company name as h1
passed
0.002s
generateJobsMarkdown > company section
includes CIF
passed
generateJobsMarkdown > company section
includes brand
passed
generateJobsMarkdown > company section
includes status
passed
generateJobsMarkdown > company section
includes website as markdown link
passed
0.001s
generateJobsMarkdown > company section
includes career page as markdown link
passed
generateJobsMarkdown > company section
includes lastScraped date
passed
0.001s
generateJobsMarkdown > company section
omits optional fields when not present
passed
generateJobsMarkdown > jobs section
shows job count in heading
passed
generateJobsMarkdown > jobs section
shows 0 when no jobs
passed
generateJobsMarkdown > jobs section
includes job title as h3
passed
generateJobsMarkdown > jobs section
includes job URL as markdown link
passed
generateJobsMarkdown > jobs section
includes workmode
passed
generateJobsMarkdown > jobs section
includes location
passed
0.001s
generateJobsMarkdown > jobs section
includes tags
passed
generateJobsMarkdown > jobs section
includes status
passed
generateJobsMarkdown > jobs section
renders multiple jobs
passed
0.001s
generateJobsMarkdown > jobs section
handles job with no optional fields
passed
generateJobsMarkdown > output format
returns a non-empty string
passed
generateJobsMarkdown > output format
includes a generated timestamp
passed
/home/runner/work/mejix-srl-nodejs-scraper/mejix-srl-nodejs-scraper/tests/unit/job-validator.test.js
0.105s
src/job-validator.js > validateByHead
returns active when HEAD response is ok
passed
0.002s
src/job-validator.js > validateByHead
returns expired on non-2xx response
passed
0.001s
src/job-validator.js > validateByHead
returns error when fetch throws
passed
0.001s
src/job-validator.js > validateByHead
issues a HEAD request
passed
0.001s
src/job-validator.js > validateByContent
returns active when body has no expired keywords
passed
0.001s
src/job-validator.js > validateByContent
returns expired when body has an expired keyword
passed
src/job-validator.js > validateByContent
accepts custom keywords
passed
src/job-validator.js > validateByContent
returns error when fetch throws
passed
src/job-validator.js > DEFAULT_EXPIRED_KEYWORDS
is a non-empty array of lowercase strings
passed
/home/runner/work/mejix-srl-nodejs-scraper/mejix-srl-nodejs-scraper/tests/unit/demoanaf.test.js
6.719s
scraper/anaf.js > searchCompany
should return array of companies for valid brand
passed
0.006s
scraper/anaf.js > searchCompany
should return empty array for non-existent brand
passed
0.001s
scraper/anaf.js > searchCompany
should include statusLabel in results
passed
0.002s
scraper/anaf.js > searchCompany
should fallback to CUIFirma when ANAF search fails
passed
0.042s
scraper/anaf.js > searchCompany
should encode brand name in URL
passed
0.001s
scraper/anaf.js > getCompanyFromANAF
should return company data for valid CIF
passed
0.005s
scraper/anaf.js > getCompanyFromANAF
should fallback to CUIScan when ANAF fails
passed
0.004s
scraper/anaf.js > getCompanyFromANAF
should retry CUIScan when it answers HTML instead of JSON
passed
1.505s
scraper/anaf.js > getCompanyFromANAF
should give up with a clear error when CUIScan keeps answering HTML
passed
4.521s
scraper/anaf.js > getCompanyFromANAF
should fall back to the official ANAF API when CUIScan is unusable
passed
0.003s
scraper/anaf.js > getCompanyFromANAF
should throw when both ANAF and CUIScan fail
passed
0.003s
scraper/anaf.js > getCompanyFromANAF
should handle API-level error response
passed
0.002s
scraper/anaf.js > getCompanyFromANAF
should return null when data is null
passed
0.001s
scraper/anaf.js > getCompanyFromANAFWithFallback
should return fresh data when API works
passed
0.002s
scraper/anaf.js > getCompanyFromANAFWithFallback
should use cached data when API fails
passed
0.006s
scraper/anaf.js > getCompanyFromANAFWithFallback
should throw when API fails and no cache available
passed
0.003s