github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/chat/commands/flip_test.go (about)

     1  package commands
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/keybase/client/go/chat/globals"
     9  	"github.com/keybase/client/go/chat/types"
    10  	"github.com/keybase/client/go/externalstest"
    11  	"github.com/keybase/client/go/kbtest"
    12  	"github.com/keybase/client/go/protocol/chat1"
    13  	"github.com/keybase/client/go/protocol/gregor1"
    14  	"github.com/stretchr/testify/require"
    15  )
    16  
    17  func TestFlipPreview(t *testing.T) {
    18  	tc := externalstest.SetupTest(t, "flip", 0)
    19  	defer tc.Cleanup()
    20  
    21  	ui := kbtest.NewChatUI()
    22  	g := globals.NewContext(tc.G, &globals.ChatContext{})
    23  	g.CoinFlipManager = types.DummyCoinFlipManager{}
    24  	g.UIRouter = kbtest.NewMockUIRouter(ui)
    25  	flip := NewFlip(g)
    26  	ctx := context.TODO()
    27  	uid := gregor1.UID{1, 2, 3, 4}
    28  	convID := chat1.ConversationID{1, 2, 3, 4}
    29  	timeout := 20 * time.Second
    30  
    31  	flip.Preview(ctx, uid, convID, "", "/flip")
    32  	select {
    33  	case s := <-ui.CommandMarkdown:
    34  		require.NotNil(t, s)
    35  	case <-time.After(timeout):
    36  		require.Fail(t, "no text")
    37  	}
    38  
    39  	flip.Preview(ctx, uid, convID, "", "/flip 6")
    40  	select {
    41  	case s := <-ui.CommandMarkdown:
    42  		require.NotNil(t, s)
    43  	case <-time.After(timeout):
    44  		require.Fail(t, "no text")
    45  	}
    46  
    47  	flip.Preview(ctx, uid, convID, "", "/flip ")
    48  	select {
    49  	case s := <-ui.CommandMarkdown:
    50  		require.NotNil(t, s)
    51  	case <-time.After(timeout):
    52  		require.Fail(t, "no text")
    53  	}
    54  
    55  	flip.Preview(ctx, uid, convID, "", "/fli")
    56  	select {
    57  	case s := <-ui.CommandMarkdown:
    58  		require.Nil(t, s)
    59  	case <-time.After(timeout):
    60  		require.Fail(t, "no text")
    61  	}
    62  
    63  	flip.Preview(ctx, uid, convID, "", "/fli")
    64  	select {
    65  	case <-ui.CommandMarkdown:
    66  		require.Fail(t, "no text expected")
    67  	default:
    68  	}
    69  }