37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package bslack
 | 
						|
 | 
						|
import (
 | 
						|
	"io/ioutil"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/42wim/matterbridge/bridge"
 | 
						|
	"github.com/sirupsen/logrus"
 | 
						|
	"github.com/stretchr/testify/assert"
 | 
						|
)
 | 
						|
 | 
						|
func TestExtractTopicOrPurpose(t *testing.T) {
 | 
						|
	testcases := map[string]struct {
 | 
						|
		input          string
 | 
						|
		wantChangeType string
 | 
						|
		wantOutput     string
 | 
						|
	}{
 | 
						|
		"success - topic type":   {"@someone set channel topic: foo bar", "topic", "foo bar"},
 | 
						|
		"success - purpose type": {"@someone set channel purpose: foo bar", "purpose", "foo bar"},
 | 
						|
		"success - one line":     {"@someone set channel topic: foo bar", "topic", "foo bar"},
 | 
						|
		"success - multi-line":   {"@someone set channel topic: foo\nbar", "topic", "foo\nbar"},
 | 
						|
		"success - cleared":      {"@someone cleared channel topic", "topic", ""},
 | 
						|
		"error - unhandled":      {"some unmatched message", "unknown", ""},
 | 
						|
	}
 | 
						|
 | 
						|
	logger := logrus.New()
 | 
						|
	logger.SetOutput(ioutil.Discard)
 | 
						|
	cfg := &bridge.Config{Bridge: &bridge.Bridge{Log: logrus.NewEntry(logger)}}
 | 
						|
	b := newBridge(cfg)
 | 
						|
	for name, tc := range testcases {
 | 
						|
		gotChangeType, gotOutput := b.extractTopicOrPurpose(tc.input)
 | 
						|
 | 
						|
		assert.Equalf(t, tc.wantChangeType, gotChangeType, "This testcase failed: %s", name)
 | 
						|
		assert.Equalf(t, tc.wantOutput, gotOutput, "This testcase failed: %s", name)
 | 
						|
	}
 | 
						|
}
 |