about summary refs log tree commit diff stats
path: root/commands/msgview
diff options
context:
space:
mode:
Diffstat (limited to 'commands/msgview')
-rw-r--r--commands/msgview/close.go14
-rw-r--r--commands/msgview/msgview.go4
-rw-r--r--commands/msgview/next-part.go19
-rw-r--r--commands/msgview/next.go17
-rw-r--r--commands/msgview/open.go14
-rw-r--r--commands/msgview/pipe.go14
-rw-r--r--commands/msgview/save.go16
-rw-r--r--commands/msgview/toggle-headers.go18
8 files changed, 92 insertions, 24 deletions
diff --git a/commands/msgview/close.go b/commands/msgview/close.go
index 4ce15c4..6a7eb0a 100644
--- a/commands/msgview/close.go
+++ b/commands/msgview/close.go
@@ -6,11 +6,21 @@ import (
 	"git.sr.ht/~sircmpwn/aerc/widgets"
 )
 
+type Close struct{}
+
 func init() {
-	register("close", CommandClose)
+	register(Close{})
+}
+
+func (_ Close) Aliases() []string {
+	return []string{"close"}
+}
+
+func (_ Close) Complete(aerc *widgets.Aerc, args []string) []string {
+	return nil
 }
 
-func CommandClose(aerc *widgets.Aerc, args []string) error {
+func (_ Close) Execute(aerc *widgets.Aerc, args []string) error {
 	if len(args) != 1 {
 		return errors.New("Usage: close")
 	}
diff --git a/commands/msgview/msgview.go b/commands/msgview/msgview.go
index f0e42ad..d60549e 100644
--- a/commands/msgview/msgview.go
+++ b/commands/msgview/msgview.go
@@ -8,9 +8,9 @@ var (
 	MessageViewCommands *commands.Commands
 )
 
-func register(name string, cmd commands.AercCommand) {
+func register(cmd commands.Command) {
 	if MessageViewCommands == nil {
 		MessageViewCommands = commands.NewCommands()
 	}
-	MessageViewCommands.Register(name, cmd)
+	MessageViewCommands.Register(cmd)
 }
diff --git a/commands/msgview/next-part.go b/commands/msgview/next-part.go
index fcf8f19..8f25e02 100644
--- a/commands/msgview/next-part.go
+++ b/commands/msgview/next-part.go
@@ -8,16 +8,21 @@ import (
 	"git.sr.ht/~sircmpwn/aerc/widgets"
 )
 
+type NextPrevPart struct{}
+
 func init() {
-	register("next-part", NextPrevPart)
-	register("prev-part", NextPrevPart)
+	register(NextPrevPart{})
 }
 
-func nextPrevPartUsage(cmd string) error {
-	return errors.New(fmt.Sprintf("Usage: %s [n]", cmd))
+func (_ NextPrevPart) Aliases() []string {
+	return []string{"next-part", "prev-part"}
+}
+
+func (_ NextPrevPart) Complete(aerc *widgets.Aerc, args []string) []string {
+	return nil
 }
 
-func NextPrevPart(aerc *widgets.Aerc, args []string) error {
+func (_ NextPrevPart) Execute(aerc *widgets.Aerc, args []string) error {
 	if len(args) > 2 {
 		return nextPrevPartUsage(args[0])
 	}
@@ -41,3 +46,7 @@ func NextPrevPart(aerc *widgets.Aerc, args []string) error {
 	}
 	return nil
 }
+
+func nextPrevPartUsage(cmd string) error {
+	return errors.New(fmt.Sprintf("Usage: %s [n]", cmd))
+}
diff --git a/commands/msgview/next.go b/commands/msgview/next.go
index 0c86839..82fb12f 100644
--- a/commands/msgview/next.go
+++ b/commands/msgview/next.go
@@ -6,14 +6,21 @@ import (
 	"git.sr.ht/~sircmpwn/aerc/widgets"
 )
 
+type NextPrevMsg struct{}
+
 func init() {
-	register("next", NextPrevMessage)
-	register("next-message", NextPrevMessage)
-	register("prev", NextPrevMessage)
-	register("prev-message", NextPrevMessage)
+	register(NextPrevMsg{})
+}
+
+func (_ NextPrevMsg) Aliases() []string {
+	return []string{"next", "next-message", "prev", "prev-message"}
+}
+
+func (_ NextPrevMsg) Complete(aerc *widgets.Aerc, args []string) []string {
+	return nil
 }
 
-func NextPrevMessage(aerc *widgets.Aerc, args []string) error {
+func (_ NextPrevMsg) Execute(aerc *widgets.Aerc, args []string) error {
 	mv, _ := aerc.SelectedTab().(*widgets.MessageViewer)
 	acct := mv.SelectedAccount()
 	store := mv.Store()
diff --git a/commands/msgview/open.go b/commands/msgview/open.go
index 1a33cec..d1b3238 100644
--- a/commands/msgview/open.go
+++ b/commands/msgview/open.go
@@ -14,11 +14,21 @@ import (
 	"git.sr.ht/~sircmpwn/aerc/widgets"
 )
 
+type Open struct{}
+
 func init() {
-	register("open", Open)
+	register(Open{})
+}
+
+func (_ Open) Aliases() []string {
+	return []string{"open"}
+}
+
+func (_ Open) Complete(aerc *widgets.Aerc, args []string) []string {
+	return nil
 }
 
-func Open(aerc *widgets.Aerc, args []string) error {
+func (_ Open) Execute(aerc *widgets.Aerc, args []string) error {
 	if len(args) != 1 {
 		return errors.New("Usage: open")
 	}
diff --git a/commands/msgview/pipe.go b/commands/msgview/pipe.go
index a84cdf5..56c125b 100644
--- a/commands/msgview/pipe.go
+++ b/commands/msgview/pipe.go
@@ -12,11 +12,21 @@ import (
 	"git.sr.ht/~sircmpwn/aerc/widgets"
 )
 
+type Pipe struct{}
+
 func init() {
-	register("pipe", Pipe)
+	register(Pipe{})
+}
+
+func (_ Pipe) Aliases() []string {
+	return []string{"pipe"}
+}
+
+func (_ Pipe) Complete(aerc *widgets.Aerc, args []string) []string {
+	return nil
 }
 
-func Pipe(aerc *widgets.Aerc, args []string) error {
+func (_ Pipe) Execute(aerc *widgets.Aerc, args []string) error {
 	if len(args) < 2 {
 		return errors.New("Usage: :pipe <cmd> [args...]")
 	}
diff --git a/commands/msgview/save.go b/commands/msgview/save.go
index 59d94b2..93fa83f 100644
--- a/commands/msgview/save.go
+++ b/commands/msgview/save.go
@@ -16,19 +16,31 @@ import (
 	"github.com/mitchellh/go-homedir"
 )
 
+type Save struct{}
+
 func init() {
-	register("save", Save)
+	register(Save{})
+}
+
+func (_ Save) Aliases() []string {
+	return []string{"save"}
+}
+
+func (_ Save) Complete(aerc *widgets.Aerc, args []string) []string {
+	return nil
 }
 
-func Save(aerc *widgets.Aerc, args []string) error {
+func (_ Save) Execute(aerc *widgets.Aerc, args []string) error {
 	opts, optind, err := getopt.Getopts(args, "p")
 	if err != nil {
 		return err
 	}
+
 	var (
 		mkdirs bool
 		path   string
 	)
+
 	for _, opt := range opts {
 		switch opt.Option {
 		case 'p':
diff --git a/commands/msgview/toggle-headers.go b/commands/msgview/toggle-headers.go
index fc29042..d9d7eba 100644
--- a/commands/msgview/toggle-headers.go
+++ b/commands/msgview/toggle-headers.go
@@ -7,15 +7,21 @@ import (
 	"git.sr.ht/~sircmpwn/aerc/widgets"
 )
 
+type ToggleHeaders struct{}
+
 func init() {
-	register("toggle-headers", ToggleHeaders)
+	register(ToggleHeaders{})
 }
 
-func toggleHeadersUsage(cmd string) error {
-	return errors.New(fmt.Sprintf("Usage: %s", cmd))
+func (_ ToggleHeaders) Aliases() []string {
+	return []string{"toggle-headers"}
+}:= httptest.NewRecorder()
		req := httptest.NewRequest("GET", "localhost"+testport+"/api/plain", nil)
		apiFormatHandler(w, req)
		resp := w.Result()
		if resp.StatusCode != http.StatusOK {
			t.Errorf(fmt.Sprintf("%v", resp.StatusCode))
		}
	})
}
func Test_apiEndpointHandler(t *testing.T) {
	initTestConf()
	t.Run("apiEndpointHandler", func(t *testing.T) {
		w := httptest.NewRecorder()
		req := httptest.NewRequest("GET", "localhost"+testport+"/api/plain/users", nil)
		apiEndpointHandler(w, req)
		resp := w.Result()
		if resp.StatusCode != http.StatusOK {
			t.Errorf(fmt.Sprintf("%v", resp.StatusCode))
		}
	})
}

/*
func Test_apiTagsBaseHandler(t *testing.T) {
	initTestConf()
	t.Run("apiTagsBaseHandler", func(t *testing.T) {
		w := httptest.NewRecorder()
		req := httptest.NewRequest("GET", "localhost"+testport+"/api/plain/tags", nil)
		apiTagsBaseHandler(w, req)
		resp := w.Result()
		if resp.StatusCode != http.StatusOK {
			t.Errorf(fmt.Sprintf("%v", resp.StatusCode))
		}
	})
}
func Test_apiTagsHandler(t *testing.T) {
	initTestConf()
	t.Run("apiTagsHandler", func(t *testing.T) {
		w := httptest.NewRecorder()
		req := httptest.NewRequest("GET", "localhost"+testport+"/api/plain/tags/tag", nil)
		apiTagsHandler(w, req)
		resp := w.Result()
		if resp.StatusCode != http.StatusOK {
			t.Errorf(fmt.Sprintf("%v", resp.StatusCode))
		}
	})
}
*/
func Test_cssHandler(t *testing.T) {
	initTestConf()

	name := "CSS Handler Test"
	css, err := ioutil.ReadFile("assets/style.css")
	if err != nil {
		t.Errorf("Couldn't read assets/style.css: %v\n", err)
	}

	w := httptest.NewRecorder()
	req := httptest.NewRequest("GET", "localhost"+testport+"/css", nil)

	t.Run(name, func(t *testing.T) {
		cssHandler(w, req)
		resp := w.Result()
		body, _ := ioutil.ReadAll(resp.Body)
		if resp.StatusCode != 200 {
			t.Errorf("cssHandler(): %v\n", resp.StatusCode)
		}
		if !bytes.Equal(body, css) {
			t.Errorf("cssHandler(): Byte mismatch\n")
		}
	})
}