func TestUnsetSocialChannelFromWorkspace(t *testing.T) { db := modeltesthelper.NewMongoDB(t) defer db.Close() rand.Seed(time.Now().UnixNano()) w, err := createWorkspace() if err != nil { t.Fatalf(err.Error()) } // first fetch it w2, err := modelhelper.GetWorkspaceByChannelId(w.ChannelId) if err != nil { t.Errorf(err.Error()) } if w2 == nil { t.Errorf("couldnt fetch workspace by channel id got nil, expected: %+v", w) } if w2.ObjectId.Hex() != w.ObjectId.Hex() { t.Errorf("workspaces are not same: expected: %+v, got: ", w) } err = modelhelper.UnsetSocialChannelFromWorkspace(w.ObjectId) if err != nil { t.Errorf("we should be able to unset social channel id") } _, err = modelhelper.GetWorkspaceByChannelId(w.ChannelId) if err == nil { t.Errorf("we should not be able to find the WS") } }
// EndPrivateMessage stops the collaboration session and deletes the all // messages from db func (c *Controller) EndPrivateMessage(ping *models.Ping) error { // if channel id is nil, there is nothing to do if ping.ChannelId == 0 { return nil } // fetch the channel channel := socialapimodels.NewChannel() if err := channel.ById(ping.ChannelId); err != nil { // if channel is not there, do not do anyting if err == bongo.RecordNotFound { return nil } return err } canOpen, err := channel.CanOpen(ping.AccountId) if err != nil { return err } if !canOpen { return nil // if the requester can not open the channel do not process } // delete the channel err = channel.Delete() if err != nil { return err } ws, err := modelhelper.GetWorkspaceByChannelId( strconv.FormatInt(ping.ChannelId, 10), ) if err != nil { return filterErr(err) } return modelhelper.UnsetSocialChannelFromWorkspace(ws.ObjectId) }