improve COUNT envelope codec and add a test.

This commit is contained in:
fiatjaf 2024-05-20 08:26:13 -03:00
parent 9a29edca41
commit abe84f9089
2 changed files with 17 additions and 1 deletions

View File

@ -4,6 +4,7 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
"strconv"
"github.com/mailru/easyjson" "github.com/mailru/easyjson"
jwriter "github.com/mailru/easyjson/jwriter" jwriter "github.com/mailru/easyjson/jwriter"
@ -190,7 +191,9 @@ func (v CountEnvelope) MarshalJSON() ([]byte, error) {
w.RawString(`["COUNT",`) w.RawString(`["COUNT",`)
w.RawString(`"` + v.SubscriptionID + `"`) w.RawString(`"` + v.SubscriptionID + `"`)
if v.Count != nil { if v.Count != nil {
w.RawString(fmt.Sprintf(`,{"count":%d}`, *v.Count)) w.RawString(`,{"count":`)
w.RawString(strconv.FormatInt(*v.Count, 10))
w.RawString(`}`)
} else { } else {
for _, filter := range v.Filters { for _, filter := range v.Filters {
w.RawString(`,`) w.RawString(`,`)

View File

@ -63,6 +63,19 @@ func TestEoseEnvelopeEncodingAndDecoding(t *testing.T) {
} }
} }
func TestCountEnvelopeEncodingAndDecoding(t *testing.T) {
src := `["COUNT","z",{"count":12}]`
var env CountEnvelope
json.Unmarshal([]byte(src), &env)
if *env.Count != 12 {
t.Error("failed to decode COUNT")
}
if res, _ := json.Marshal(env); string(res) != src {
t.Errorf("failed to encode COUNT: expected '%s', got '%s'", src, string(res))
}
}
func TestOKEnvelopeEncodingAndDecoding(t *testing.T) { func TestOKEnvelopeEncodingAndDecoding(t *testing.T) {
okEnvelopes := []string{ okEnvelopes := []string{
`["OK","3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefaaaaa",false,"error: could not connect to the database"]`, `["OK","3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefaaaaa",false,"error: could not connect to the database"]`,