material_manage_system/internal/repository/partner_manufacturer_test.go

45 lines
1.6 KiB
Go

package repository
import (
"encoding/json"
"testing"
"github.com/DATA-DOG/go-sqlmock"
"github.com/wmms/wmms/pkg/database"
)
func TestManufacturerListIsOrganizationScopedAndReturnsRole(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\(\*\).*WHERE op.organization_id = \? AND op.is_manufacturer = TRUE`).WithArgs(int64(2)).WillReturnRows(sqlmock.NewRows([]string{"total"}).AddRow(1))
mock.ExpectQuery(`SELECT op.id.*WHERE op.organization_id = \? AND op.is_manufacturer = TRUE`).WithArgs(int64(2), 20, 0).WillReturnRows(sqlmock.NewRows([]string{
"id", "organization_id", "business_partner_id", "partner_code", "legal_name", "unified_credit_code", "contact_name", "contact_phone", "address",
"is_supplier", "is_customer", "supplier_status", "customer_status", "settlement_currency", "payment_terms", "supplier_categories", "customer_categories", "is_manufacturer",
}).AddRow(3, 2, 4, "MFG-001", "制造企业", "", "", "", "", false, false, "", "", "", "", "", "", true))
items, total, err := NewPartnerRepository().List(2, "manufacturer", 20, 0, "")
if err != nil {
t.Fatal(err)
}
if total != 1 || len(items) != 1 {
t.Fatalf("unexpected list: %v / %v", items, total)
}
body, err := json.Marshal(items[0])
if err != nil {
t.Fatal(err)
}
var result map[string]interface{}
if err := json.Unmarshal(body, &result); err != nil {
t.Fatal(err)
}
if result["is_manufacturer"] != true {
t.Fatalf("manufacturer flag lost: %s", body)
}
if err := mock.ExpectationsWereMet(); err != nil {
t.Fatal(err)
}
}