32 lines
1.5 KiB
Go
32 lines
1.5 KiB
Go
package service
|
||
|
||
import (
|
||
"testing"
|
||
"time"
|
||
|
||
"github.com/DATA-DOG/go-sqlmock"
|
||
"github.com/wmms/wmms/internal/model"
|
||
)
|
||
|
||
// 普通审批(不扣库存)沿用已有规则:只要求公司授权、状态待审和相关物料合法,公司没有
|
||
// 启用仓库也必须能审批,不能因为无法解析库存维度而返回 ErrInventoryScopeUnavailable。
|
||
// 这里只登记审批必需的查询;若代码先解析仓库 scope,sqlmock 会因未预期语句失败。
|
||
func TestApproveWithoutAutoOutboundDoesNotRequireInventoryScope(t *testing.T) {
|
||
mock := outboundMock(t)
|
||
now := time.Now()
|
||
mock.ExpectQuery("SELECT a.id, a.user_id, a.purpose").WithArgs(int64(1)).WillReturnRows(
|
||
sqlmock.NewRows([]string{"id", "user_id", "purpose", "status", "rejection_reason", "approved_by", "created_at", "updated_at", "username"}).
|
||
AddRow(1, 2, "领用", model.ApplicationStatusPending, "", 0, now, now, "alice"))
|
||
mock.ExpectQuery("SELECT ai.id, ai.application_id").WithArgs(int64(1)).WillReturnRows(
|
||
sqlmock.NewRows([]string{"id", "application_id", "material_id", "quantity", "material_code", "name"}).
|
||
AddRow(11, 1, 7, 2, "M-1", "Material"))
|
||
mock.ExpectExec("UPDATE material_applications SET status").WithArgs(model.ApplicationStatusApproved, int64(9), int64(1)).WillReturnResult(sqlmock.NewResult(0, 1))
|
||
|
||
if err := NewApplicationService().Approve(1, 1, 9, false); err != nil {
|
||
t.Fatalf("普通审批不应要求仓库配置,got %v", err)
|
||
}
|
||
if err := mock.ExpectationsWereMet(); err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
}
|