-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmdopen_test.go
125 lines (111 loc) · 2.17 KB
/
mdopen_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package mdopen
import (
"bytes"
"errors"
"html/template"
"io"
"reflect"
"strings"
"testing"
"github.com/romanyx/mdopen/internal/templates/github"
)
const (
md = `# test`
)
func TestOpeneterOpen(t *testing.T) {
f := strings.NewReader(md)
opnr := New(echoCMD())
if err := opnr.Open(f); err != nil {
t.Fatalf("unexpected error: %s", err)
}
}
func TestOpener_prepareFile(t *testing.T) {
opnr := New()
tests := []struct {
name string
r io.Reader
wantErr bool
contains string
}{
{
name: "valid",
r: strings.NewReader(md),
wantErr: false,
contains: "<h1>test</h1>",
},
{
name: "with error",
r: new(erroredReader),
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
w := new(bytes.Buffer)
err := opnr.prepareFile(w, tt.r)
if tt.wantErr && err == nil {
t.Errorf("expected error")
return
}
if !tt.wantErr && err != nil {
t.Errorf("unexpected error: %s", err)
return
}
if !strings.Contains(w.String(), tt.contains) {
t.Errorf("body does not contains expected string: %s", tt.contains)
if err := opnr.Open(tt.r); err != nil {
t.Error(err)
}
}
})
}
}
func TestNew(t *testing.T) {
type args struct {
options []Option
}
tests := []struct {
name string
args args
want *Opener
}{
{
name: "default",
args: args{
options: []Option{},
},
want: &Opener{
cmdArgs: cmdArgs(),
layout: template.Must(template.New("layout").Parse(github.Template)),
},
},
{
name: "github",
args: args{
options: []Option{
GithubTemplate(),
},
},
want: &Opener{
cmdArgs: cmdArgs(),
layout: template.Must(template.New("layout").Parse(github.Template)),
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := New(tt.args.options...); !reflect.DeepEqual(got, tt.want) {
t.Errorf("New() = %v, want %v", got, tt.want)
}
})
}
}
type erroredReader struct{}
func (r *erroredReader) Read(p []byte) (n int, err error) {
return 0, errors.New("unexpected EOF")
}
func echoCMD() Option {
return func(opnr *Opener) {
opnr.cmdArgs = []string{"echo"}
}
}