Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go |
| Date | Not specified in source |
| Repository | Janady13/missionmatch |
| Revision | 1e9249840a4302ec82e123b9c9cb6f75badea3e4 |
| Branch | master |
| Path or archive member | internal/modules/ontology/adapters/psc_test.go |
| Original SHA-256 | c59b2e3109ac95327542376771d2b5ffe9738a9d0c019b7d9ed0893b50127569 |
| Git blob SHA | 3d024712ed4496367913a39f4c5c2b803462454d |
| Reading-copy SHA-256 | c59b2e3109ac95327542376771d2b5ffe9738a9d0c019b7d9ed0893b50127569 |
Every recorded occurrence
These 35 records contain identical original source bytes. Their paths and revisions remain part of the archive.
| Original record | Branch or archive | Revision / identifier | Original location |
|---|---|---|---|
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | master | 1e9249840a4302ec82e123b9c9cb6f75badea3e4 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | m5-price-to-win | 41000ad30fff4129fdaf5ec84e15ba14c27d4890 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | ws3-clearance | 4b8e7ce594c068621867f9c9deed0ec64ae6c553 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | collision-deconfliction | 4ee5a09972608ed89f8377c6665542d5f450f0a6 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | ws7-federal-signal | 6a9f6ce9cfb13345ffb47770d4960e7c2d9c17c2 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | ws6-retrieval | 6c56e29231ec05735927fa265c97d517499dfeaf | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | graphrag-foundation | b0ddeb9f633fd138d09309d1a17b7d13bc3a67f7 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | ws1-ontology-sync | b596f449a32a1016fbd403c36505cc00a1ac9ee6 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | time-to-fill-survival | b66e1e505863d4f17741a4b9ede73509e45bd6c6 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | mag-substrate | b82c7100a492dec67dfd1eda6b3f53def859be35 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | capture-readiness | bae6af7cb2997e819174a9e9cfff5e16067a1975 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | ws8-teaching-loop | c823f0fb6bb2aba0f39001eb6de96f4000d9321f | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | phase2-eval-fairness | d361af254701975fe239927656ababb56374655e | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | phase2-connectors | e038d4c687aec16f8bd9bc4d907eea14d91f8704 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | ws2-alias-relationship | e4dada4601c6eb101830f9d223a9655dfa120616 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | presentation-readiness | eb574acaa29d71ce4d0f852572e87c275c79fdb7 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | ws9-bench-ingestion | f585a9ef32fa554663ce1fba9a414a54b6e49cf0 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | vendor-intelligence | fe9796a19c261951d3f2565206c0c1b5ac294465 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | collision-deconfliction | 4ee5a09972608ed89f8377c6665542d5f450f0a6 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | ws6-retrieval | 6c56e29231ec05735927fa265c97d517499dfeaf | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | m5-price-to-win | 41000ad30fff4129fdaf5ec84e15ba14c27d4890 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | ws1-ontology-sync | b596f449a32a1016fbd403c36505cc00a1ac9ee6 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | master | 1e9249840a4302ec82e123b9c9cb6f75badea3e4 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | ws8-teaching-loop | c823f0fb6bb2aba0f39001eb6de96f4000d9321f | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | mag-substrate | b82c7100a492dec67dfd1eda6b3f53def859be35 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | ws3-clearance | 4b8e7ce594c068621867f9c9deed0ec64ae6c553 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | phase2-eval-fairness | d361af254701975fe239927656ababb56374655e | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | time-to-fill-survival | b66e1e505863d4f17741a4b9ede73509e45bd6c6 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | graphrag-foundation | b0ddeb9f633fd138d09309d1a17b7d13bc3a67f7 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | ws9-bench-ingestion | f585a9ef32fa554663ce1fba9a414a54b6e49cf0 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | ws2-alias-relationship | e4dada4601c6eb101830f9d223a9655dfa120616 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | presentation-readiness | eb574acaa29d71ce4d0f852572e87c275c79fdb7 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | ws7-federal-signal | 6a9f6ce9cfb13345ffb47770d4960e7c2d9c17c2 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | phase2-connectors | e038d4c687aec16f8bd9bc4d907eea14d91f8704 | Open original |
| Janady13/missionmatch / internal/modules/ontology/adapters/psc_test.go | capture-readiness | bae6af7cb2997e819174a9e9cfff5e16067a1975 | Open original |
Recovered source transcript
Download complete source text ↓86 lines · 3.0 KB
package adapters
import (
"bytes"
"context"
"os"
"path/filepath"
"testing"
"github.com/xuri/excelize/v2"
"github.com/missionworkforce/missionmatch/internal/modules/ontology"
)
// buildPSCXLSX mirrors the real PSC manual sheet, which carries several decoy columns that loosely match
// CODE or NAME (a FULL NAME column and a Parent PSC Code column) plus an END DATE that marks expired codes.
// A loose substring column match would pick the wrong columns; this fixture guards against that.
func buildPSCXLSX(t *testing.T) []byte {
t.Helper()
f := excelize.NewFile()
sh := f.GetSheetName(0)
headers := []string{"PSC CODE", "PRODUCT AND SERVICE CODE NAME", "START DATE", "END DATE", "PRODUCT AND SERVICE CODE FULL NAME", "Parent PSC Code"}
for i, h := range headers {
cell, _ := excelize.CoordinatesToCellName(i+1, 1)
_ = f.SetCellValue(sh, cell, h)
}
// rows: code, name, start, end, full name, parent
data := [][]string{
{"R425", "Engineering and Technical Services", "2003-01-01", "", "Full R425", "R4"},
{"AC12", "National Defense R and D Services", "2003-01-01", "", "Full AC12", "AC"},
{"9999", "Expired Code", "2000-01-01", "2010-01-01", "Full 9999", "99"}, // expired, skipped
{"1000", "", "2003-01-01", "", "Full 1000", "10"}, // empty name, skipped
}
for r, row := range data {
for c, v := range row {
cell, _ := excelize.CoordinatesToCellName(c+1, r+2)
_ = f.SetCellValue(sh, cell, v)
}
}
var buf bytes.Buffer
if err := f.Write(&buf); err != nil {
t.Fatalf("write xlsx: %v", err)
}
return buf.Bytes()
}
func TestParsePSC(t *testing.T) {
recs, err := parsePSC(buildPSCXLSX(t))
if err != nil {
t.Fatalf("parse: %v", err)
}
if len(recs) != 2 {
t.Fatalf("want 2 active records (expired and empty name skipped), got %d", len(recs))
}
if recs[0].Code != "R425" || recs[0].SourceRecordID != "R425" || recs[0].Kind != ontology.KindPSC {
t.Fatalf("bad first record, expected the PSC CODE column not a decoy: %+v", recs[0])
}
// The term must come from PRODUCT AND SERVICE CODE NAME, never the FULL NAME decoy column.
if recs[0].Term != "Engineering and Technical Services" {
t.Fatalf("term should be the CODE NAME column, got %q", recs[0].Term)
}
if recs[1].Code != "AC12" || recs[1].Term != "National Defense R and D Services" {
t.Fatalf("bad second record: %+v", recs[1])
}
}
// TestPSCSourceLocalFile proves the adapter loads from a local file path, the air gapped GovCloud posture,
// not only from an http URL.
func TestPSCSourceLocalFile(t *testing.T) {
path := filepath.Join(t.TempDir(), "psc.xlsx")
if err := os.WriteFile(path, buildPSCXLSX(t), 0o600); err != nil {
t.Fatalf("write fixture: %v", err)
}
src := NewPSCSource(path, nil)
var got []ontology.VocabRecord
if err := src.Fetch(context.Background(), func(r ontology.VocabRecord) error {
got = append(got, r)
return nil
}); err != nil {
t.Fatalf("fetch from local file: %v", err)
}
if len(got) != 2 || got[0].Code != "R425" {
t.Fatalf("local file load: got %d records, first %+v", len(got), got)
}
}