/* * MumbleDJ * By Matthieu Grieger * commands/add_test.go * Copyright (c) 2016 Matthieu Grieger (MIT License) */ package commands import ( "testing" "github.com/layeh/gumble/gumbleffmpeg" "github.com/matthieugrieger/mumbledj/bot" "github.com/spf13/viper" "github.com/stretchr/testify/suite" ) type AddCommandTestSuite struct { Command AddCommand suite.Suite } func (suite *AddCommandTestSuite) SetupSuite() { DJ = bot.NewMumbleDJ() bot.DJ = DJ // Trick the tests into thinking audio is already playing to avoid // attempting to play tracks that don't exist. DJ.AudioStream = new(gumbleffmpeg.Stream) viper.Set("commands.add.aliases", []string{"add", "a"}) viper.Set("commands.add.description", "add") viper.Set("commands.add.is_admin", false) } func (suite *AddCommandTestSuite) SetupTest() { DJ.Queue = bot.NewQueue() } func (suite *AddCommandTestSuite) TestAliases() { suite.Equal([]string{"add", "a"}, suite.Command.Aliases()) } func (suite *AddCommandTestSuite) TestDescription() { suite.Equal("add", suite.Command.Description()) } func (suite *AddCommandTestSuite) TestIsAdminCommand() { suite.False(suite.Command.IsAdminCommand()) } func (suite *AddCommandTestSuite) TestExecuteWithNoArgs() { message, isPrivateMessage, err := suite.Command.Execute(nil) suite.Equal("", message, "No message should be returned since an error occurred.") suite.True(isPrivateMessage, "This should be a private message.") suite.NotNil(err, "An error should be returned for attempting to add a track without providing a URL.") } // TODO: Implement this test. func (suite *AddCommandTestSuite) TestExecuteWhenNoTracksFound() { } // TODO: Implement this test. func (suite *AddCommandTestSuite) TestExecuteWhenTrackFound() { } // TODO: Implement this test. func (suite *AddCommandTestSuite) TestExecuteWhenMultipleTracksFound() { } // TODO: Implement this test. func (suite *AddCommandTestSuite) TestExecuteWithMultipleURLs() { } func TestAddCommandTestSuite(t *testing.T) { suite.Run(t, new(AddCommandTestSuite)) }