package samechannel

import (
	"io/ioutil"
	"testing"

	"github.com/42wim/matterbridge/bridge/config"
	"github.com/sirupsen/logrus"
	"github.com/stretchr/testify/assert"
)

const testConfig = `
[mattermost.test]
[slack.test]

[[samechannelgateway]]
   enable = true
   name = "blah"
      accounts = [ "mattermost.test","slack.test" ]
      channels = [ "testing","testing2","testing10"]
`

var (
	expectedConfig = config.Gateway{
		Name:   "blah",
		Enable: true,
		In:     []config.Bridge(nil),
		Out:    []config.Bridge(nil),
		InOut: []config.Bridge{
			{
				Account:     "mattermost.test",
				Channel:     "testing",
				Options:     config.ChannelOptions{Key: ""},
				SameChannel: true,
			},
			{
				Account:     "mattermost.test",
				Channel:     "testing2",
				Options:     config.ChannelOptions{Key: ""},
				SameChannel: true,
			},
			{
				Account:     "mattermost.test",
				Channel:     "testing10",
				Options:     config.ChannelOptions{Key: ""},
				SameChannel: true,
			},
			{
				Account:     "slack.test",
				Channel:     "testing",
				Options:     config.ChannelOptions{Key: ""},
				SameChannel: true,
			},
			{
				Account:     "slack.test",
				Channel:     "testing2",
				Options:     config.ChannelOptions{Key: ""},
				SameChannel: true,
			},
			{
				Account:     "slack.test",
				Channel:     "testing10",
				Options:     config.ChannelOptions{Key: ""},
				SameChannel: true,
			},
		},
	}
)

func TestGetConfig(t *testing.T) {
	logger := logrus.New()
	logger.SetOutput(ioutil.Discard)
	cfg := config.NewConfigFromString(logger, []byte(testConfig))
	sgw := New(cfg)
	configs := sgw.GetConfig()
	assert.Equal(t, []config.Gateway{expectedConfig}, configs)
}