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