aboutsummaryrefslogtreecommitdiff
path: root/hotline/news.go
diff options
context:
space:
mode:
authorJeff Halter <868228+jhalter@users.noreply.github.com>2024-07-17 15:41:20 -0700
committerJeff Halter <868228+jhalter@users.noreply.github.com>2024-07-17 15:42:37 -0700
commitfd740bc499ebc6d3a381479316f74cdc736d02de (patch)
treee77563ce0997e51debaec75c9f7a053759ca3a0a /hotline/news.go
parent80aed6b19ff0b0927670e459ce5cc7a16ef047ec (diff)
Extensive refactor, quality of life enhancements
* Added ability to reload config, agreement, news, and user accounts without restarting the server by sending SIGHUP to the running process * Added ability to use modern unix or windows line breaks in Agreement.txt and MessageBoard.txt instead of classic MacOS `\r` breaks. * Extensive refactor towards swappable backends for the active server state * Extensive refactored towards making the hotline package generic and re-usable for alternate server implemenations * Fix bug where users whose accounts have been deleted would not be disconnected
Diffstat (limited to 'hotline/news.go')
-rw-r--r--hotline/news.go51
1 files changed, 51 insertions, 0 deletions
diff --git a/hotline/news.go b/hotline/news.go
index 0d0400c..a490a89 100644
--- a/hotline/news.go
+++ b/hotline/news.go
@@ -3,6 +3,7 @@ package hotline
import (
"cmp"
"encoding/binary"
+ "github.com/stretchr/testify/mock"
"io"
"slices"
)
@@ -236,3 +237,53 @@ func newsPathScanner(data []byte, _ bool) (advance int, token []byte, err error)
advance = 3 + int(data[2])
return advance, data[3:advance], nil
}
+
+type MockThreadNewsMgr struct {
+ mock.Mock
+}
+
+func (m *MockThreadNewsMgr) ListArticles(newsPath []string) NewsArtListData {
+ args := m.Called(newsPath)
+
+ return args.Get(0).(NewsArtListData)
+}
+
+func (m *MockThreadNewsMgr) GetArticle(newsPath []string, articleID uint32) *NewsArtData {
+ args := m.Called(newsPath, articleID)
+
+ return args.Get(0).(*NewsArtData)
+}
+func (m *MockThreadNewsMgr) DeleteArticle(newsPath []string, articleID uint32, recursive bool) error {
+ args := m.Called(newsPath, articleID, recursive)
+
+ return args.Error(0)
+}
+
+func (m *MockThreadNewsMgr) PostArticle(newsPath []string, parentArticleID uint32, article NewsArtData) error {
+ args := m.Called(newsPath, parentArticleID, article)
+
+ return args.Error(0)
+}
+func (m *MockThreadNewsMgr) CreateGrouping(newsPath []string, name string, itemType [2]byte) error {
+ args := m.Called(newsPath, name, itemType)
+
+ return args.Error(0)
+}
+
+func (m *MockThreadNewsMgr) GetCategories(paths []string) []NewsCategoryListData15 {
+ args := m.Called(paths)
+
+ return args.Get(0).([]NewsCategoryListData15)
+}
+
+func (m *MockThreadNewsMgr) NewsItem(newsPath []string) NewsCategoryListData15 {
+ args := m.Called(newsPath)
+
+ return args.Get(0).(NewsCategoryListData15)
+}
+
+func (m *MockThreadNewsMgr) DeleteNewsItem(newsPath []string) error {
+ args := m.Called(newsPath)
+
+ return args.Error(0)
+}