chore: 同步本地 v9 整改与运营能力
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestValidMaintenanceKind(t *testing.T) {
|
||||
for _, kind := range []string{"calibration", "fault", "maintenance", "firmware"} {
|
||||
if !ValidMaintenanceKind(kind) {
|
||||
t.Errorf("%s should be valid", kind)
|
||||
}
|
||||
}
|
||||
if ValidMaintenanceKind("inspection") {
|
||||
t.Error("inspection is not a maintenance kind")
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateDeviceMaintenanceRecord(t *testing.T) {
|
||||
record := DeviceMaintenanceRecord{Kind: "calibration", Title: "温度传感器校准"}
|
||||
if err := ValidateDeviceMaintenanceRecord(record); err != nil {
|
||||
t.Fatalf("valid record should pass: %v", err)
|
||||
}
|
||||
record.Title = ""
|
||||
if err := ValidateDeviceMaintenanceRecord(record); err == nil {
|
||||
t.Fatal("missing title should fail")
|
||||
}
|
||||
record.Title = "校准"
|
||||
record.Kind = "unknown"
|
||||
if err := ValidateDeviceMaintenanceRecord(record); err == nil {
|
||||
t.Fatal("invalid kind should fail")
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateProductionLossRecord(t *testing.T) {
|
||||
roomID := "room-1"
|
||||
yield := 3.2
|
||||
record := ProductionLossRecord{RoomID: &roomID, RecordDate: time.Now(), YieldKg: &yield}
|
||||
if err := ValidateProductionLossRecord(record); err != nil {
|
||||
t.Fatalf("valid record should pass: %v", err)
|
||||
}
|
||||
record.YieldKg = nil
|
||||
if err := ValidateProductionLossRecord(record); err == nil {
|
||||
t.Fatal("record without business value should fail")
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidCaseStudyTransition(t *testing.T) {
|
||||
ok := [][2]string{
|
||||
{"draft", "pending_review"},
|
||||
{"pending_review", "published"},
|
||||
{"pending_review", "rejected"},
|
||||
{"published", "rejected"},
|
||||
}
|
||||
for _, tr := range ok {
|
||||
if !ValidCaseStudyTransition(tr[0], tr[1]) {
|
||||
t.Errorf("expected %s -> %s", tr[0], tr[1])
|
||||
}
|
||||
}
|
||||
if ValidCaseStudyTransition("draft", "published") {
|
||||
t.Error("draft cannot jump to published")
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateLaboratoryResult(t *testing.T) {
|
||||
result := LaboratoryResult{
|
||||
LabName: "省蚕科所", ReportNo: "LAB-001",
|
||||
TestType: "molecular_typing", ResultType: "positive",
|
||||
}
|
||||
if err := ValidateLaboratoryResult(result); err != nil {
|
||||
t.Fatalf("valid result should pass: %v", err)
|
||||
}
|
||||
result.ResultType = "unknown"
|
||||
if err := ValidateLaboratoryResult(result); err == nil {
|
||||
t.Fatal("invalid result type should fail")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user