87 lines
2.8 KiB
Go
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: §ionID})
|
|
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)
|
|
}
|
|
}
|