material_manage_system/internal/repository/partner_test.go
2026-09-16 16:29:04 +08:00

52 lines
1.6 KiB
Go

package repository
import (
"regexp"
"testing"
"github.com/DATA-DOG/go-sqlmock"
"github.com/wmms/wmms/internal/model"
"github.com/wmms/wmms/pkg/database"
)
func TestPartnerCreateSeparatesLegalEntityAndOrganizationRelationship(t *testing.T) {
db, mock, err := sqlmock.New()
if err != nil {
t.Fatalf("open sql mock: %v", err)
}
t.Cleanup(func() { database.DB = nil; db.Close() })
database.DB = db
partner := &model.BusinessPartner{
OrganizationID: 1,
PartnerCode: "SUP-001",
LegalName: "示例供应商",
IsSupplier: true,
SupplierStatus: "active",
}
mock.ExpectBegin()
mock.ExpectExec(regexp.QuoteMeta(`INSERT INTO business_partners
(legal_name, unified_credit_code, contact_name, contact_phone, address)
VALUES (?, NULLIF(?, ''), NULLIF(?, ''), NULLIF(?, ''), NULLIF(?, ''))`)).
WithArgs("示例供应商", "", "", "", "").
WillReturnResult(sqlmock.NewResult(9, 1))
mock.ExpectExec(regexp.QuoteMeta(`INSERT INTO organization_partners
(organization_id, business_partner_id, partner_code, is_supplier, is_customer,
supplier_status, customer_status, settlement_currency, payment_terms)
VALUES (?, ?, ?, ?, ?, NULLIF(?, ''), NULLIF(?, ''), NULLIF(?, ''), NULLIF(?, ''))`)).
WithArgs(int64(1), int64(9), "SUP-001", true, false, "active", "", "", "").
WillReturnResult(sqlmock.NewResult(15, 1))
mock.ExpectCommit()
if err := NewPartnerRepository().Create(partner); err != nil {
t.Fatalf("create partner: %v", err)
}
if partner.ID != 15 || partner.BusinessPartnerID != 9 {
t.Fatalf("unexpected identifiers: %+v", partner)
}
if err := mock.ExpectationsWereMet(); err != nil {
t.Fatal(err)
}
}