package allocate import ( "context" "path/filepath" "reflect" "testing" "github.com/xuri/excelize/v2" ) func TestProcessorTemplateHeaders(t *testing.T) { t.Parallel() expected := []string{"ICCID", "MSISDN", "IMSI", "目标客户名称"} if !reflect.DeepEqual(NewProcessor().Config().TemplateHeaders, expected) { t.Fatalf("unexpected headers: %#v", NewProcessor().Config().TemplateHeaders) } } func TestParseExcelFileRowsCustomerFacingColumns(t *testing.T) { t.Parallel() filePath := filepath.Join(t.TempDir(), "allocate.xlsx") f := excelize.NewFile() headers := []any{"ICCID", "MSISDN", "IMSI", "目标客户名称"} if err := f.SetSheetRow("Sheet1", "A1", &headers); err != nil { t.Fatalf("set headers failed: %v", err) } row := []any{ "8986000000000000001", "13800008000", "460001234567890", "示例企业", } if err := f.SetSheetRow("Sheet1", "A2", &row); err != nil { t.Fatalf("set row failed: %v", err) } if err := f.SaveAs(filePath); err != nil { t.Fatalf("save excel failed: %v", err) } _ = f.Close() rows, err := ParseExcelFileRows(context.Background(), filePath) if err != nil { t.Fatalf("parse excel failed: %v", err) } if len(rows) != 1 { t.Fatalf("unexpected row count: %d", len(rows)) } rowModel, ok := rows[0].(*Row) if !ok || rowModel == nil { t.Fatalf("unexpected row type: %#v", rows[0]) } if rowModel.Iccid != "8986000000000000001" { t.Fatalf("unexpected iccid: %s", rowModel.Iccid) } if rowModel.Msisdn != "13800008000" { t.Fatalf("unexpected msisdn: %s", rowModel.Msisdn) } if rowModel.Imsi != "460001234567890" { t.Fatalf("unexpected imsi: %s", rowModel.Imsi) } if rowModel.TargetDeptName != "示例企业" { t.Fatalf("unexpected target dept name: %s", rowModel.TargetDeptName) } if rowModel.Remark != "" { t.Fatalf("unexpected remark: %s", rowModel.Remark) } } func TestProcessorConfigLimitsAllocationRows(t *testing.T) { config := NewProcessor().Config() if config.MaxRows != 10000 { t.Fatalf("MaxRows = %d, want 10000", config.MaxRows) } if config.MaxFileSize != 50<<20 { t.Fatalf("MaxFileSize = %d, want %d", config.MaxFileSize, 50<<20) } }