material_manage_system/internal/service/partner_manufacturer_test.go

42 lines
1.2 KiB
Go

package service
import (
"encoding/json"
"testing"
"github.com/DATA-DOG/go-sqlmock"
"github.com/wmms/wmms/internal/model"
"github.com/wmms/wmms/pkg/database"
)
func TestManufacturerCanBeTheOnlyPartnerRole(t *testing.T) {
var item model.BusinessPartner
if err := json.Unmarshal([]byte(`{"is_manufacturer":true,"legal_name":"制造企业","partner_code":"MFG-001"}`), &item); err != nil {
t.Fatal(err)
}
if err := normalizePartner(&item); err != nil {
t.Fatalf("manufacturer role rejected: %v", err)
}
}
func TestManufacturerServiceListAcceptsRole(t *testing.T) {
db, mock, err := sqlmock.New()
if err != nil {
t.Fatal(err)
}
database.DB = db
t.Cleanup(func() { database.DB = nil; db.Close() })
mock.ExpectQuery(`SELECT COUNT\(\*\).*op.is_manufacturer = TRUE`).WithArgs(int64(2)).WillReturnRows(sqlmock.NewRows([]string{"total"}).AddRow(0))
mock.ExpectQuery(`SELECT op.id.*op.is_manufacturer = TRUE`).WithArgs(int64(2), 20, 0).WillReturnRows(sqlmock.NewRows([]string{"id"}))
items, total, err := NewPartnerService().List(2, "manufacturer", 20, 0, "")
if err != nil {
t.Fatal(err)
}
if total != 0 || len(items) != 0 {
t.Fatalf("unexpected list: %v / %v", items, total)
}
if err := mock.ExpectationsWereMet(); err != nil {
t.Fatal(err)
}
}