Add TestSyncTabsForTopics().

This commit is contained in:
Gucheng Wang 2021-12-04 11:25:50 +08:00
parent f9cd166e48
commit 508df9e217
2 changed files with 61 additions and 0 deletions

42
object/tab_test.go Normal file
View File

@ -0,0 +1,42 @@
// Copyright 2021 The casbin Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package object
import (
"fmt"
"testing"
)
func TestSyncTabsForTopics(t *testing.T) {
InitConfig()
InitAdapter()
nodes := GetNodes()
nodeTabMap := map[string]string{}
for _, node := range nodes {
nodeTabMap[node.Id] = node.TabId
}
topics := GetAllTopics()
for i, topic := range topics {
tabId := nodeTabMap[topic.NodeId]
topic.TabId = tabId
affected := updateTopicSimple(topic.Id, topic)
if affected == false {
panic(fmt.Errorf("TestSyncTabsForTopics() error, affected == false"))
}
fmt.Printf("[%d/%d]: Synced tab for topic: [%d, %s] as tab: %s\n", i+1, len(topics), topic.Id, topic.Author, topic.TabId)
}
}

View File

@ -108,6 +108,16 @@ func GetTopics(limit int, offset int) []*TopicWithAvatar {
return getAvataredTopics(topics)
}
func GetAllTopics() []*Topic {
var topics []*Topic
err := adapter.Engine.Find(&topics)
if err != nil {
panic(err)
}
return topics
}
func GetTopicsByTitleAndAuthor(title string, author string) []*Topic {
topics := []*Topic{}
err := adapter.Engine.Where("title = ?", title).And("author = ?", author).Find(&topics)
@ -395,6 +405,15 @@ func UpdateTopic(id int, topic *Topic) bool {
return true
}
func updateTopicSimple(id int, topic *Topic) bool {
affected, err := adapter.Engine.Id(id).AllCols().Update(topic)
if err != nil {
panic(err)
}
return affected != 0
}
func UpdateTopicWithLimitCols(id int, topic *Topic) bool {
if GetTopic(id) == nil {
return false