Files
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

87 lines
2.8 KiB
Go

package modulevideoser
import (
"testing"
"91porn-server/common/stderr"
"91porn-server/models/v/modulesectionmod"
"91porn-server/models/v/modulevidmod"
"go.mongodb.org/mongo-driver/bson/primitive"
)
func TestUpdateVideoSyncsModuleIDWhenMovingByRelationID(t *testing.T) {
relationID := primitive.NewObjectID()
videoID := primitive.NewObjectID()
sectionID := primitive.NewObjectID()
moduleID := primitive.NewObjectID()
originalGetVideo := getModuleVideoByID
originalGetSection := getModuleSectionByID
originalUpdateRelation := updateModuleVideo
originalSyncModuleID := syncVideoModuleID
defer func() {
getModuleVideoByID = originalGetVideo
getModuleSectionByID = originalGetSection
updateModuleVideo = originalUpdateRelation
syncVideoModuleID = originalSyncModuleID
}()
getModuleVideoByID = func(id primitive.ObjectID) (modulevidmod.SectionVideo, error) {
if id != relationID {
t.Fatalf("relation id = %s, want %s", id.Hex(), relationID.Hex())
}
return modulevidmod.SectionVideo{ID: relationID, VideoID: videoID}, nil
}
getModuleSectionByID = func(id primitive.ObjectID) (modulesectionmod.Section, error) {
if id != sectionID {
t.Fatalf("section id = %s, want %s", id.Hex(), sectionID.Hex())
}
return modulesectionmod.Section{ID: sectionID, SubModuleID: moduleID}, nil
}
relationUpdated := false
updateModuleVideo = func(in *modulevidmod.EditSelector) error {
relationUpdated = true
return nil
}
moduleIDSynced := false
syncVideoModuleID = func(gotVideoID, gotModuleID primitive.ObjectID) error {
moduleIDSynced = true
if gotVideoID != videoID || gotModuleID != moduleID {
t.Fatalf("sync ids = (%s, %s), want (%s, %s)", gotVideoID.Hex(), gotModuleID.Hex(), videoID.Hex(), moduleID.Hex())
}
return nil
}
code := UpdateVideo(&modulevidmod.EditSelector{ID: &relationID, SectionID: &sectionID})
if code != stderr.Success {
t.Fatalf("UpdateVideo() code = %d, want %d", code, stderr.Success)
}
if !relationUpdated || !moduleIDSynced {
t.Fatalf("relationUpdated = %v, moduleIDSynced = %v", relationUpdated, moduleIDSynced)
}
}
func TestUpdateVideoSortOnlyDoesNotSyncModuleID(t *testing.T) {
relationID := primitive.NewObjectID()
sortCode := 10
originalUpdateRelation := updateModuleVideo
originalSyncModuleID := syncVideoModuleID
defer func() {
updateModuleVideo = originalUpdateRelation
syncVideoModuleID = originalSyncModuleID
}()
updateModuleVideo = func(in *modulevidmod.EditSelector) error { return nil }
syncVideoModuleID = func(videoID, moduleID primitive.ObjectID) error {
t.Fatal("sort-only update must not sync module id")
return nil
}
code := UpdateVideo(&modulevidmod.EditSelector{ID: &relationID, SortCode: &sortCode})
if code != stderr.Success {
t.Fatalf("UpdateVideo() code = %d, want %d", code, stderr.Success)
}
}