1package objx_test
2
3import (
4	"net/url"
5	"testing"
6
7	"github.com/stretchr/objx"
8	"github.com/stretchr/testify/assert"
9	"github.com/stretchr/testify/require"
10)
11
12func TestConversionJSON(t *testing.T) {
13	jsonString := `{"name":"Mat"}`
14	o := objx.MustFromJSON(jsonString)
15
16	result, err := o.JSON()
17
18	require.NoError(t, err)
19	assert.Equal(t, jsonString, result)
20	assert.Equal(t, jsonString, o.MustJSON())
21}
22
23func TestConversionJSONWithError(t *testing.T) {
24	o := objx.MSI()
25	o["test"] = func() {}
26
27	assert.Panics(t, func() {
28		o.MustJSON()
29	})
30
31	_, err := o.JSON()
32
33	assert.Error(t, err)
34}
35
36func TestConversionBase64(t *testing.T) {
37	o := objx.Map{"name": "Mat"}
38
39	result, err := o.Base64()
40
41	require.NoError(t, err)
42	assert.Equal(t, "eyJuYW1lIjoiTWF0In0=", result)
43	assert.Equal(t, "eyJuYW1lIjoiTWF0In0=", o.MustBase64())
44}
45
46func TestConversionBase64WithError(t *testing.T) {
47	o := objx.MSI()
48	o["test"] = func() {}
49
50	assert.Panics(t, func() {
51		o.MustBase64()
52	})
53
54	_, err := o.Base64()
55
56	assert.Error(t, err)
57}
58
59func TestConversionSignedBase64(t *testing.T) {
60	o := objx.Map{"name": "Mat"}
61
62	result, err := o.SignedBase64("key")
63
64	require.NoError(t, err)
65	assert.Equal(t, "eyJuYW1lIjoiTWF0In0=_67ee82916f90b2c0d68c903266e8998c9ef0c3d6", result)
66	assert.Equal(t, "eyJuYW1lIjoiTWF0In0=_67ee82916f90b2c0d68c903266e8998c9ef0c3d6", o.MustSignedBase64("key"))
67}
68
69func TestConversionSignedBase64WithError(t *testing.T) {
70	o := objx.MSI()
71	o["test"] = func() {}
72
73	assert.Panics(t, func() {
74		o.MustSignedBase64("key")
75	})
76
77	_, err := o.SignedBase64("key")
78
79	assert.Error(t, err)
80}
81
82func TestConversionURLValues(t *testing.T) {
83	m := objx.Map{"abc": 123, "name": "Mat"}
84	u := m.URLValues()
85
86	assert.Equal(t, url.Values{"abc": []string{"123"}, "name": []string{"Mat"}}, u)
87}
88
89func TestConversionURLQuery(t *testing.T) {
90	m := objx.Map{"abc": 123, "name": "Mat"}
91	u, err := m.URLQuery()
92
93	assert.Nil(t, err)
94	require.NotNil(t, u)
95	assert.Equal(t, "abc=123&name=Mat", u)
96}
97