Skip to content

Commit ddb943d

Browse files
committed
tests: implement options test
1 parent e1811e1 commit ddb943d

File tree

2 files changed

+31
-13
lines changed

2 files changed

+31
-13
lines changed

options.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ func (og *SendOptions) copy() *SendOptions {
5757
if cp.ReplyMarkup != nil {
5858
cp.ReplyMarkup = cp.ReplyMarkup.copy()
5959
}
60-
6160
return &cp
6261
}
6362

@@ -110,16 +109,20 @@ type ReplyMarkup struct {
110109
func (r *ReplyMarkup) copy() *ReplyMarkup {
111110
cp := *r
112111

113-
cp.ReplyKeyboard = make([][]ReplyButton, len(r.ReplyKeyboard))
114-
for i, row := range r.ReplyKeyboard {
115-
cp.ReplyKeyboard[i] = make([]ReplyButton, len(row))
116-
copy(cp.ReplyKeyboard[i], row)
112+
if len(r.ReplyKeyboard) > 0 {
113+
cp.ReplyKeyboard = make([][]ReplyButton, len(r.ReplyKeyboard))
114+
for i, row := range r.ReplyKeyboard {
115+
cp.ReplyKeyboard[i] = make([]ReplyButton, len(row))
116+
copy(cp.ReplyKeyboard[i], row)
117+
}
117118
}
118119

119-
cp.InlineKeyboard = make([][]InlineButton, len(r.InlineKeyboard))
120-
for i, row := range r.InlineKeyboard {
121-
cp.InlineKeyboard[i] = make([]InlineButton, len(row))
122-
copy(cp.InlineKeyboard[i], row)
120+
if len(r.InlineKeyboard) > 0 {
121+
cp.InlineKeyboard = make([][]InlineButton, len(r.InlineKeyboard))
122+
for i, row := range r.InlineKeyboard {
123+
cp.InlineKeyboard[i] = make([]InlineButton, len(row))
124+
copy(cp.InlineKeyboard[i], row)
125+
}
123126
}
124127

125128
return &cp

options_test.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func TestBtn(t *testing.T) {
2323
assert.Equal(t, &InlineButton{Text: "T", Login: &Login{Text: "T"}}, r.Login("T", &Login{Text: "T"}).Inline())
2424
}
2525

26-
func TestReplyInline(t *testing.T) {
26+
func TestOptions(t *testing.T) {
2727
r := &ReplyMarkup{}
2828
r.Reply(
2929
r.Row(r.Text("Menu")),
@@ -36,13 +36,28 @@ func TestReplyInline(t *testing.T) {
3636
}, r.ReplyKeyboard)
3737

3838
i := &ReplyMarkup{}
39-
i.Inline(r.Row(
40-
r.Data("Previous", "prev"),
41-
r.Data("Next", "next"),
39+
i.Inline(i.Row(
40+
i.Data("Previous", "prev"),
41+
i.Data("Next", "next"),
4242
))
4343

4444
assert.Equal(t, [][]InlineButton{{
4545
{Unique: "prev", Text: "Previous"},
4646
{Unique: "next", Text: "Next"},
4747
}}, i.InlineKeyboard)
48+
49+
assert.Panics(t, func() {
50+
r.Reply(r.Row(r.Data("T", "u")))
51+
i.Inline(i.Row(i.Text("T")))
52+
})
53+
54+
assert.Equal(t, r.copy(), r)
55+
assert.Equal(t, i.copy(), i)
56+
57+
o := &SendOptions{ReplyMarkup: r}
58+
assert.Equal(t, o.copy(), o)
59+
60+
data, err := PollQuiz.MarshalJSON()
61+
assert.NoError(t, err)
62+
assert.Equal(t, []byte(`{"type":"quiz"}`), data)
4863
}

0 commit comments

Comments
 (0)