Skip to content

Commit

Permalink
Merge pull request #76 from ruedap/fix-issue-74-plus-bug
Browse files Browse the repository at this point in the history
Fix fa-plus bug
  • Loading branch information
ruedap committed Sep 8, 2015
2 parents ac6cde4 + facba93 commit 905e8f0
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 22 deletions.
10 changes: 5 additions & 5 deletions Makefile
Expand Up @@ -10,15 +10,15 @@ ci: deps build cli coveralls

cli:
@echo "--> Running CLI commands"
@$(FAW_CLI_CMD) find apple
@$(FAW_CLI_CMD) find plus
@echo
@$(FAW_CLI_CMD) put -name apple
@$(FAW_CLI_CMD) put -name f067
@echo
@$(FAW_CLI_CMD) put -code apple
@$(FAW_CLI_CMD) put -code f067
@echo
@$(FAW_CLI_CMD) put -ref apple
@$(FAW_CLI_CMD) put -ref f067
@echo
@$(FAW_CLI_CMD) put -url apple
@$(FAW_CLI_CMD) put -url f067
@echo

coveralls:
Expand Down
16 changes: 9 additions & 7 deletions command.go
Expand Up @@ -35,7 +35,7 @@ func (cmd *command) find(terms []string) int {
UID: icon.Unicode,
Title: icon.ID,
Subtitle: "Paste class name: fa-" + icon.ID,
Arg: icon.ID,
Arg: icon.Unicode,
Icon: "./icons/fa-" + icon.ID + ".png",
Extra: map[string]string{
"Unicode": icon.Unicode,
Expand Down Expand Up @@ -69,16 +69,18 @@ func (cmd *command) put(flags map[string]string) int {

switch {
case name != "":
_, err = fmt.Fprint(ost, "fa-"+name)
icon := ics.findByUnicode(name)[0]
_, err = fmt.Fprint(ost, "fa-"+icon.ID)
case code != "":
icons := ics.find([]string{code})
_, err = fmt.Fprint(ost, icons[0].Unicode)
icon := ics.findByUnicode(code)[0]
_, err = fmt.Fprint(ost, icon.Unicode)
case ref != "":
icons := ics.find([]string{ref})
str := html.UnescapeString("&#x" + icons[0].Unicode + ";")
icon := ics.findByUnicode(ref)[0]
str := html.UnescapeString("&#x" + icon.Unicode + ";")
_, err = fmt.Fprint(ost, str)
case url != "":
_, err = fmt.Fprint(ost, "http://fontawesome.io/icon/"+url+"/")
icon := ics.findByUnicode(url)[0]
_, err = fmt.Fprint(ost, "http://fontawesome.io/icon/"+icon.ID+"/")
default:
err = errors.New("invalid flag argument")
}
Expand Down
23 changes: 13 additions & 10 deletions command_test.go
Expand Up @@ -7,10 +7,13 @@ import (
"testing"
)

// Maintain tests for the `plus` icon
// https://github.com/ruedap/alfred2-font-awesome-workflow/issues/74

func TestCommand_find(t *testing.T) {
outStream, errStream := new(bytes.Buffer), new(bytes.Buffer)
cmd := &command{outStream: outStream, errStream: errStream}
terms := []string{"app"}
terms := []string{"plu"} // `plus`

status := cmd.find(terms)
if status != ExitCodeOK {
Expand All @@ -19,7 +22,7 @@ func TestCommand_find(t *testing.T) {

actual := outStream.String()
expected := `<?xml version="1.0" encoding="UTF-8"?>
<items><item valid="true" arg="apple" uid="f179"><title>apple</title><subtitle>Paste class name: fa-apple</subtitle><icon>./icons/fa-apple.png</icon><unicode>f179</unicode></item><item valid="true" arg="whatsapp" uid="f232"><title>whatsapp</title><subtitle>Paste class name: fa-whatsapp</subtitle><icon>./icons/fa-whatsapp.png</icon><unicode>f232</unicode></item></items>`
<items><item valid="true" arg="f271" uid="f271"><title>calendar-plus-o</title><subtitle>Paste class name: fa-calendar-plus-o</subtitle><icon>./icons/fa-calendar-plus-o.png</icon><unicode>f271</unicode></item><item valid="true" arg="f217" uid="f217"><title>cart-plus</title><subtitle>Paste class name: fa-cart-plus</subtitle><icon>./icons/fa-cart-plus.png</icon><unicode>f217</unicode></item><item valid="true" arg="f0d5" uid="f0d5"><title>google-plus</title><subtitle>Paste class name: fa-google-plus</subtitle><icon>./icons/fa-google-plus.png</icon><unicode>f0d5</unicode></item><item valid="true" arg="f0d4" uid="f0d4"><title>google-plus-square</title><subtitle>Paste class name: fa-google-plus-square</subtitle><icon>./icons/fa-google-plus-square.png</icon><unicode>f0d4</unicode></item><item valid="true" arg="f1e6" uid="f1e6"><title>plug</title><subtitle>Paste class name: fa-plug</subtitle><icon>./icons/fa-plug.png</icon><unicode>f1e6</unicode></item><item valid="true" arg="f067" uid="f067"><title>plus</title><subtitle>Paste class name: fa-plus</subtitle><icon>./icons/fa-plus.png</icon><unicode>f067</unicode></item><item valid="true" arg="f055" uid="f055"><title>plus-circle</title><subtitle>Paste class name: fa-plus-circle</subtitle><icon>./icons/fa-plus-circle.png</icon><unicode>f055</unicode></item><item valid="true" arg="f0fe" uid="f0fe"><title>plus-square</title><subtitle>Paste class name: fa-plus-square</subtitle><icon>./icons/fa-plus-square.png</icon><unicode>f0fe</unicode></item><item valid="true" arg="f196" uid="f196"><title>plus-square-o</title><subtitle>Paste class name: fa-plus-square-o</subtitle><icon>./icons/fa-plus-square-o.png</icon><unicode>f196</unicode></item><item valid="true" arg="f00e" uid="f00e"><title>search-plus</title><subtitle>Paste class name: fa-search-plus</subtitle><icon>./icons/fa-search-plus.png</icon><unicode>f00e</unicode></item><item valid="true" arg="f234" uid="f234"><title>user-plus</title><subtitle>Paste class name: fa-user-plus</subtitle><icon>./icons/fa-user-plus.png</icon><unicode>f234</unicode></item></items>`
if !strings.Contains(actual, expected) {
t.Errorf("expected %v to eq %v", actual, expected)
}
Expand All @@ -28,15 +31,15 @@ func TestCommand_find(t *testing.T) {
func TestCommand_put_NameFlag(t *testing.T) {
outStream, errStream := new(bytes.Buffer), new(bytes.Buffer)
cmd := &command{outStream: outStream, errStream: errStream}
flags := map[string]string{"name": "apple"}
flags := map[string]string{"name": "f067"}

status := cmd.put(flags)
if status != ExitCodeOK {
t.Errorf("ExitStatus=%d, want %d", status, ExitCodeOK)
}

actual := outStream.String()
expected := "fa-apple"
expected := "fa-plus"
if !strings.Contains(actual, expected) {
t.Errorf("expected %v to eq %v", actual, expected)
}
Expand All @@ -45,15 +48,15 @@ func TestCommand_put_NameFlag(t *testing.T) {
func TestCommand_put_CodeFlag(t *testing.T) {
outStream, errStream := new(bytes.Buffer), new(bytes.Buffer)
cmd := &command{outStream: outStream, errStream: errStream}
flags := map[string]string{"code": "apple"}
flags := map[string]string{"code": "f067"}

status := cmd.put(flags)
if status != ExitCodeOK {
t.Errorf("ExitStatus=%d, want %d", status, ExitCodeOK)
}

actual := outStream.String()
expected := "f179"
expected := "f067"
if !strings.Contains(actual, expected) {
t.Errorf("expected %v to eq %v", actual, expected)
}
Expand All @@ -62,15 +65,15 @@ func TestCommand_put_CodeFlag(t *testing.T) {
func TestCommand_put_RefFlag(t *testing.T) {
outStream, errStream := new(bytes.Buffer), new(bytes.Buffer)
cmd := &command{outStream: outStream, errStream: errStream}
flags := map[string]string{"ref": "apple"}
flags := map[string]string{"ref": "f067"}

status := cmd.put(flags)
if status != ExitCodeOK {
t.Errorf("ExitStatus=%d, want %d", status, ExitCodeOK)
}

actual := outStream.String()
expected := ""
expected := ""
if !strings.Contains(actual, expected) {
t.Errorf("expected %v to eq %v", actual, expected)
}
Expand All @@ -79,15 +82,15 @@ func TestCommand_put_RefFlag(t *testing.T) {
func TestCommand_put_URLFlag(t *testing.T) {
outStream, errStream := new(bytes.Buffer), new(bytes.Buffer)
cmd := &command{outStream: outStream, errStream: errStream}
flags := map[string]string{"url": "apple"}
flags := map[string]string{"url": "f067"}

status := cmd.put(flags)
if status != ExitCodeOK {
t.Errorf("ExitStatus=%d, want %d", status, ExitCodeOK)
}

actual := outStream.String()
expected := "http://fontawesome.io/icon/apple/"
expected := "http://fontawesome.io/icon/plus/"
if !strings.Contains(actual, expected) {
t.Errorf("expected %v to eq %v", actual, expected)
}
Expand Down
13 changes: 13 additions & 0 deletions icons.go
Expand Up @@ -54,6 +54,19 @@ func (ics icons) find(terms []string) icons {
return foundIcons
}

// TODO: Refactoring 1. return value 2. error handling
func (ics icons) findByUnicode(unicode string) icons {
var foundIcons icons

for _, ic := range ics {
if ic.Unicode == unicode {
foundIcons = append(foundIcons, ic)
}
}

return foundIcons
}

// Len for sort
func (ics icons) Len() int {
return len(ics)
Expand Down
14 changes: 14 additions & 0 deletions icons_test.go
Expand Up @@ -192,3 +192,17 @@ func TestIcons_find_Aliases(t *testing.T) {
t.Errorf("expected %v to eq %v", len(fi), 1)
}
}

func TestIcons_findByUnicode(t *testing.T) {
fi := newIcons().findByUnicode("f067")

actual := fi[0].ID
expected := "plus"
if actual != expected {
t.Errorf("expected %v to eq %v", actual, expected)
}

if len(fi) != 1 {
t.Errorf("expected %v to eq %v", len(fi), 1)
}
}

0 comments on commit 905e8f0

Please sign in to comment.