mukan-ignite/ignite/pkg/events/bus_test.go
Mukan Erkin Törük 26b204bd04
Some checks are pending
Docs Deploy / build_and_deploy (push) Waiting to run
Generate Docs / cli (push) Waiting to run
Generate Config Doc / cli (push) Waiting to run
Go formatting / go-formatting (push) Waiting to run
Check links / markdown-link-check (push) Waiting to run
Integration / pre-test (push) Waiting to run
Integration / test on (push) Blocked by required conditions
Integration / status (push) Blocked by required conditions
Lint / Lint Go code (push) Waiting to run
Test / test (ubuntu-latest) (push) Waiting to run
feat: fork Ignite CLI v29 as Mukan Ignite — remove cosmos-sdk restrictions
2026-05-11 03:31:37 +03:00

211 lines
4.1 KiB
Go

package events_test
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/ignite/cli/v29/ignite/pkg/cliui/colors"
"github.com/ignite/cli/v29/ignite/pkg/errors"
"github.com/ignite/cli/v29/ignite/pkg/events"
)
func TestBusSend(t *testing.T) {
cases := []struct {
name, message string
options []events.Option
progress events.ProgressIndication
}{
{
name: "without options",
message: "test",
progress: events.IndicationNone,
},
{
name: "with options",
message: "test",
options: []events.Option{events.ProgressStart()},
progress: events.IndicationStart,
},
}
for _, tt := range cases {
t.Run(tt.name, func(t *testing.T) {
// Arrange
bus := events.NewBus()
defer bus.Stop()
// Act
bus.Send(tt.message, tt.options...)
// Assert
select {
case e := <-bus.Events():
require.Equal(t, tt.message, e.Message)
require.Equal(t, tt.progress, e.ProgressIndication)
default:
t.Error("expected an event to be received")
}
})
}
}
func TestBusSendf(t *testing.T) {
// Arrange
bus := events.NewBus()
defer bus.Stop()
want := "foo 42"
// Act
bus.Sendf("%s %d", "foo", 42)
// Assert
select {
case e := <-bus.Events():
require.Equal(t, want, e.Message)
default:
t.Error("expected an event to be received")
}
}
func TestBusSendInfo(t *testing.T) {
cases := []struct {
name, message string
options []events.Option
progress events.ProgressIndication
}{
{
name: "without options",
message: "test",
progress: events.IndicationNone,
},
{
name: "with options",
message: "test",
options: []events.Option{events.ProgressStart()},
progress: events.IndicationStart,
},
}
for _, tt := range cases {
t.Run(tt.name, func(t *testing.T) {
// Arrange
bus := events.NewBus()
defer bus.Stop()
// Act
bus.SendInfo(tt.message, tt.options...)
// Assert
select {
case e := <-bus.Events():
require.Equal(t, colors.Info(tt.message), e.Message)
require.Equal(t, tt.progress, e.ProgressIndication)
default:
t.Error("expected an event to be received")
}
})
}
}
func TestBusSendError(t *testing.T) {
cases := []struct {
name, message string
options []events.Option
progress events.ProgressIndication
}{
{
name: "without options",
message: "test",
progress: events.IndicationNone,
},
{
name: "with options",
message: "test",
options: []events.Option{events.ProgressStart()},
progress: events.IndicationStart,
},
}
for _, tt := range cases {
t.Run(tt.name, func(t *testing.T) {
// Arrange
bus := events.NewBus()
defer bus.Stop()
err := errors.New(tt.message)
// Act
bus.SendError(err, tt.options...)
// Assert
select {
case e := <-bus.Events():
require.Equal(t, colors.Error(tt.message), e.Message)
require.Equal(t, tt.progress, e.ProgressIndication)
default:
t.Error("expected an event to be received")
}
})
}
}
type testEventView struct {
message string
}
func (v testEventView) String() string {
return v.message
}
func TestBusSendView(t *testing.T) {
cases := []struct {
name, message string
options []events.Option
progress events.ProgressIndication
}{
{
name: "without options",
message: "test",
progress: events.IndicationNone,
},
{
name: "with options",
message: "test",
options: []events.Option{events.ProgressStart()},
progress: events.IndicationStart,
},
}
for _, tt := range cases {
t.Run(tt.name, func(t *testing.T) {
// Arrange
bus := events.NewBus()
defer bus.Stop()
view := testEventView{tt.message}
// Act
bus.SendView(view, tt.options...)
// Assert
select {
case e := <-bus.Events():
require.Equal(t, tt.message, e.Message)
require.Equal(t, tt.progress, e.ProgressIndication)
default:
t.Error("expected an event to be received")
}
})
}
}
func TestBusStop(t *testing.T) {
// Arrange
bus := events.NewBus()
// Act
bus.Stop()
bus.Send("ignored message")
_, ok := <-bus.Events()
// Assert
require.False(t, ok, "expected no events after bus stopped")
}