Skip to content

Commit

Permalink
Adds basic tests for dispatcher classes
Browse files Browse the repository at this point in the history
  • Loading branch information
ksysoev committed Apr 7, 2024
1 parent 22cbf8c commit a4f9994
Show file tree
Hide file tree
Showing 5 changed files with 488 additions and 0 deletions.
64 changes: 64 additions & 0 deletions dispatch/dispatcher_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package dispatch

import (
"context"
"fmt"
"testing"

"github.com/ksysoev/wasabi"
"github.com/ksysoev/wasabi/mocks"
)

func TestNewPipeDispatcher(t *testing.T) {
backend := mocks.NewMockBackend(t)
dispatcher := NewPipeDispatcher(backend)

if dispatcher.backend != backend {
t.Errorf("Expected backend to be %v, but got %v", backend, dispatcher.backend)
}

if len(dispatcher.middlewares) != 0 {
t.Errorf("Expected no middlewares, but got %d", len(dispatcher.middlewares))
}
}

func TestPipeDispatcher_Dispatch(t *testing.T) {
backend := mocks.NewMockBackend(t)
dispatcher := NewPipeDispatcher(backend)

conn := mocks.NewMockConnection(t)
data := []byte("test data")
testError := fmt.Errorf("test error")

conn.On("Context").Return(context.Background())
backend.EXPECT().Handle(conn, NewRawRequest(conn.Context(), data)).Return(testError)

dispatcher.Dispatch(conn, data)
}

func TestPipeDispatcher_Use(t *testing.T) {
backend := mocks.NewMockBackend(t)
dispatcher := NewPipeDispatcher(backend)

middleware := RequestMiddlewere(func(next wasabi.RequestHandler) wasabi.RequestHandler { return next })
dispatcher.Use(middleware)

if len(dispatcher.middlewares) != 1 {
t.Errorf("Expected 1 middleware, but got %d", len(dispatcher.middlewares))
}
}

func TestPipeDispatcher_useMiddleware(t *testing.T) {
backend := mocks.NewMockBackend(t)
dispatcher := NewPipeDispatcher(backend)

middleware := RequestMiddlewere(func(next wasabi.RequestHandler) wasabi.RequestHandler { return next })
dispatcher.Use(middleware)

handler := mocks.NewMockRequestHandler(t)
result := dispatcher.useMiddleware(handler)

if result == nil {
t.Error("Expected non-nil result")
}
}
48 changes: 48 additions & 0 deletions dispatch/request_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package dispatch

import (
"bytes"
"context"
"testing"
)

func TestRawRequest_Data(t *testing.T) {
data := []byte("test data")
req := NewRawRequest(context.Background(), data)

if !bytes.Equal(req.Data(), data) {
t.Errorf("Expected data to be '%s', but got '%s'", data, req.Data())
}
}

func TestRawRequest_RoutingKey(t *testing.T) {
req := NewRawRequest(context.Background(), []byte{})

if req.RoutingKey() != "" {
t.Errorf("Expected routing key to be empty, but got %v", req.RoutingKey())
}
}

func TestRawRequest_Context(t *testing.T) {
ctx := context.Background()
req := NewRawRequest(ctx, []byte{})

if req.Context() != ctx {
t.Errorf("Expected context to be %v, but got %v", ctx, req.Context())
}
}

func TestRawRequest_WithContext(t *testing.T) {
ctx := context.Background()
req := NewRawRequest(context.Background(), []byte{})

newReq := req.WithContext(ctx)

if newReq.Context() != ctx {
t.Errorf("Expected context to be %v, but got %v", ctx, newReq.Context())
}

if newReq != req {
t.Error("Expected WithContext to return the same request instance")
}
}
84 changes: 84 additions & 0 deletions mocks/mock_Backend.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit a4f9994

Please sign in to comment.