Files
MAcode/tcs-iptv/internal/service/regulatory_test.go
T

84 lines
2.3 KiB
Go

package service
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/tcs-iptv/tcs/internal/chain"
"github.com/tcs-iptv/tcs/internal/cccode"
)
func newServiceSX(t *testing.T) *Service {
t.Helper()
gen := cccode.NewGenerator(cccode.NewMemoryStore())
require.NoError(t, gen.RegisterSegment(cccode.Segment{
IndustryNode: "8531", OrgNode: "6101", // 陕西
Category: cccode.CategoryMicroDrama, Start: 1, End: 100, SeqWidth: 7,
}))
return New(chain.NewMemoryChain(), gen)
}
func issueSX(t *testing.T, s *Service) string {
t.Helper()
sub := sampleSub()
r, _ := s.SubmitForReview(sub)
require.NoError(t, s.ReviewCSPS(r.ReviewID, true, "rv"))
iss, err := s.ApproveAndIssue(chain.RoleRegulator, r.ReviewID, "陕西IPTV运营公司")
require.NoError(t, err)
return iss.CCCode
}
func TestBindFiling(t *testing.T) {
s := newServiceSX(t)
ma := issueSX(t, s)
rec, err := s.BindFiling(ma, "(陕)网微剧审字(2026)第001号", "备案2026001")
require.NoError(t, err)
assert.Equal(t, "(陕)网微剧审字(2026)第001号", rec.LicenseNo)
got, ok := s.QueryFiling(ma)
assert.True(t, ok)
assert.Equal(t, "备案2026001", got.FilingNo)
}
func TestNationalStats(t *testing.T) {
s := newServiceSX(t)
ma1 := issueSX(t, s)
sub2 := sampleSub()
sub2.FileHash = "fh2"
sub2.MerkleRoot = "mr2"
r2, _ := s.SubmitForReview(sub2)
require.NoError(t, s.ReviewCSPS(r2.ReviewID, true, "rv"))
_, _ = s.ApproveAndIssue(chain.RoleRegulator, r2.ReviewID, "陕西IPTV")
_, _ = s.Takedown(chain.RoleRegulator, ma1, "违规")
st, err := s.NationalStats()
require.NoError(t, err)
assert.Equal(t, 2, st.TotalContents)
assert.Equal(t, 1, st.ByStatus["revoked"])
// 陕西省统计
sx := st.ByProvince["陕西"]
assert.Equal(t, "6101", sx.OrgNode)
assert.Equal(t, 2, sx.Total)
assert.Equal(t, 1, sx.Revoked)
// 类目统计
assert.Equal(t, 2, st.ByCategory["WD"])
}
func TestListSegments(t *testing.T) {
s := newServiceSX(t)
segs := s.ListSegments()
require.NotEmpty(t, segs)
assert.Equal(t, "6101", segs[0].OrgNode)
assert.Equal(t, uint64(100), segs[0].Capacity)
}
func TestDailyRegulatoryReport(t *testing.T) {
s := newServiceSX(t)
_ = issueSX(t, s)
rep, err := s.DailyRegulatoryReport("2026-06-14")
require.NoError(t, err)
assert.Equal(t, 1, rep.TotalNew)
assert.Equal(t, 1, rep.LevelDist["WD"])
}