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) } }