Cleanup: remove tests and scripts folders.

Introduce Subscriber interface to make eventsubscriber package independent of package dispatcher.
This commit is contained in:
ErickSkrauch
2020-04-03 22:20:56 +03:00
parent bd13480175
commit 49a1aaada0
9 changed files with 91 additions and 163 deletions

View File

@@ -11,14 +11,13 @@ import (
"github.com/mono83/slf/wd"
"github.com/elyby/chrly/api/mojang"
"github.com/elyby/chrly/dispatcher"
)
type Logger struct {
slf.Logger
}
func (l *Logger) ConfigureWithDispatcher(d dispatcher.EventDispatcher) {
func (l *Logger) ConfigureWithDispatcher(d Subscriber) {
d.Subscribe("skinsystem:after_request", l.handleAfterSkinsystemRequest)
d.Subscribe("mojang_textures:usernames:after_call", l.createMojangTexturesErrorHandler("usernames"))

View File

@@ -8,14 +8,55 @@ import (
"syscall"
"testing"
"github.com/mono83/slf"
"github.com/mono83/slf/params"
"github.com/stretchr/testify/mock"
"github.com/elyby/chrly/api/mojang"
"github.com/elyby/chrly/dispatcher"
"github.com/elyby/chrly/tests"
)
type LoggerMock struct {
mock.Mock
}
func prepareLoggerArgs(message string, params []slf.Param) []interface{} {
args := []interface{}{message}
for _, v := range params {
args = append(args, v.(interface{}))
}
return args
}
func (l *LoggerMock) Trace(message string, params ...slf.Param) {
l.Called(prepareLoggerArgs(message, params)...)
}
func (l *LoggerMock) Debug(message string, params ...slf.Param) {
l.Called(prepareLoggerArgs(message, params)...)
}
func (l *LoggerMock) Info(message string, params ...slf.Param) {
l.Called(prepareLoggerArgs(message, params)...)
}
func (l *LoggerMock) Warning(message string, params ...slf.Param) {
l.Called(prepareLoggerArgs(message, params)...)
}
func (l *LoggerMock) Error(message string, params ...slf.Param) {
l.Called(prepareLoggerArgs(message, params)...)
}
func (l *LoggerMock) Alert(message string, params ...slf.Param) {
l.Called(prepareLoggerArgs(message, params)...)
}
func (l *LoggerMock) Emergency(message string, params ...slf.Param) {
l.Called(prepareLoggerArgs(message, params)...)
}
type LoggerTestCase struct {
Events [][]interface{}
ExpectedCalls [][]interface{}
@@ -189,16 +230,16 @@ func init() {
func TestLogger(t *testing.T) {
for name, c := range loggerTestCases {
t.Run(name, func(t *testing.T) {
wdMock := &tests.WdMock{}
loggerMock := &LoggerMock{}
if c.ExpectedCalls != nil {
for _, c := range c.ExpectedCalls {
topicName, _ := c[0].(string)
wdMock.On(topicName, c[1:]...)
loggerMock.On(topicName, c[1:]...)
}
}
reporter := &Logger{
Logger: wdMock,
Logger: loggerMock,
}
d := dispatcher.New()
@@ -211,7 +252,7 @@ func TestLogger(t *testing.T) {
if c.ExpectedCalls != nil {
for _, c := range c.ExpectedCalls {
topicName, _ := c[0].(string)
wdMock.AssertCalled(t, topicName, c[1:]...)
loggerMock.AssertCalled(t, topicName, c[1:]...)
}
}
})

View File

@@ -9,7 +9,6 @@ import (
"github.com/mono83/slf"
"github.com/elyby/chrly/api/mojang"
"github.com/elyby/chrly/dispatcher"
)
type StatsReporter struct {
@@ -19,7 +18,7 @@ type StatsReporter struct {
timersMap sync.Map
}
func (s *StatsReporter) ConfigureWithDispatcher(d dispatcher.EventDispatcher) {
func (s *StatsReporter) ConfigureWithDispatcher(d Subscriber) {
// Per request events
d.Subscribe("skinsystem:before_request", s.handleBeforeRequest)
d.Subscribe("skinsystem:after_request", s.handleAfterRequest)

View File

@@ -4,14 +4,45 @@ import (
"errors"
"net/http/httptest"
"testing"
"time"
"github.com/stretchr/testify/mock"
"github.com/mono83/slf"
"github.com/elyby/chrly/api/mojang"
"github.com/elyby/chrly/dispatcher"
"github.com/elyby/chrly/tests"
"github.com/stretchr/testify/mock"
)
func prepareStatsReporterArgs(name string, value interface{}, params []slf.Param) []interface{} {
args := []interface{}{name, value}
for _, v := range params {
args = append(args, v.(interface{}))
}
return args
}
type StatsReporterMock struct {
mock.Mock
}
func (r *StatsReporterMock) IncCounter(name string, value int64, params ...slf.Param) {
r.Called(prepareStatsReporterArgs(name, value, params)...)
}
func (r *StatsReporterMock) UpdateGauge(name string, value int64, params ...slf.Param) {
r.Called(prepareStatsReporterArgs(name, value, params)...)
}
func (r *StatsReporterMock) RecordTimer(name string, duration time.Duration, params ...slf.Param) {
r.Called(prepareStatsReporterArgs(name, duration, params)...)
}
func (r *StatsReporterMock) Timer(name string, params ...slf.Param) slf.Timer {
return slf.NewTimer(name, params, r)
}
type StatsReporterTestCase struct {
Events map[string][]interface{}
ExpectedCalls [][]interface{}
@@ -326,16 +357,16 @@ var statsReporterTestCases = []*StatsReporterTestCase{
func TestStatsReporter(t *testing.T) {
for _, c := range statsReporterTestCases {
t.Run("handle events", func(t *testing.T) {
wdMock := &tests.WdMock{}
statsReporterMock := &StatsReporterMock{}
if c.ExpectedCalls != nil {
for _, c := range c.ExpectedCalls {
topicName, _ := c[0].(string)
wdMock.On(topicName, c[1:]...).Once()
statsReporterMock.On(topicName, c[1:]...).Once()
}
}
reporter := &StatsReporter{
Reporter: wdMock,
Reporter: statsReporterMock,
Prefix: "mock_prefix",
}
@@ -345,7 +376,7 @@ func TestStatsReporter(t *testing.T) {
d.Emit(event, args...)
}
wdMock.AssertExpectations(t)
statsReporterMock.AssertExpectations(t)
})
}
}

View File

@@ -0,0 +1,5 @@
package eventsubscribers
type Subscriber interface {
Subscribe(topic string, fn interface{})
}