42 lines
1.2 KiB
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)
|
|
}
|
|
}
|