add qs tests

This commit is contained in:
maddalax 2024-10-23 10:50:22 -05:00
parent f3db495bd2
commit a72de0a62f
2 changed files with 54 additions and 3 deletions

View file

@ -14,7 +14,7 @@ func NewQs(pairs ...string) *Qs {
m: make(map[string]string),
}
if len(pairs)%2 != 0 {
return q
pairs = append(pairs, "")
}
for i := 0; i < len(pairs); i++ {
q.m[pairs[i]] = pairs[i+1]
@ -38,8 +38,10 @@ func (q *Qs) ToString() string {
index := 0
for k, v := range q.m {
builder.WriteString(k)
if v != "" {
builder.WriteString("=")
builder.WriteString(v)
}
if index < len(q.m)-1 {
builder.WriteString("&")
}

49
framework/h/qs_test.go Normal file
View file

@ -0,0 +1,49 @@
package h
import (
"github.com/stretchr/testify/assert"
"testing"
)
func assertHas(t *testing.T, qs *Qs, key string, value string) {
str := qs.ToString()
if value == "" {
assert.Contains(t, str, key)
assert.NotContains(t, str, key+"=")
} else {
assert.Contains(t, str, key+"="+value)
}
}
func TestQs(t *testing.T) {
t.Parallel()
qs := NewQs("a", "b", "c")
assertHas(t, qs, "a", "b")
assertHas(t, qs, "c", "")
qs2 := NewQs("a", "b", "c", "d")
assertHas(t, qs2, "a", "b")
assertHas(t, qs2, "c", "d")
qs2.Add("e", "f")
assertHas(t, qs2, "a", "b")
assertHas(t, qs2, "c", "d")
assertHas(t, qs2, "e", "f")
qs2.Remove("e")
assert.NotContains(t, qs2.ToString(), "e")
}
func TestSetQsOnUrl(t *testing.T) {
t.Parallel()
qs := NewQs("a", "b", "c", "d")
set := SetQueryParams("https://example.com/path", qs)
assert.Equal(t, "https://example.com/path?a=b&c=d", set)
}
func TestSetQsOnUrlWithDelete(t *testing.T) {
t.Parallel()
qs := NewQs("a", "b2", "c", "")
set := SetQueryParams("https://example.com/path?a=b&c=d", qs)
assert.Equal(t, "https://example.com/path?a=b2", set)
}