🏷️ Added MarshalJSON for Scopes domain

This commit is contained in:
Maxim Lebedev 2022-01-08 15:50:49 +05:00
parent a8ba34b905
commit 832a0be91a
Signed by: toby3d
GPG Key ID: 1F14E25B7C119FC5
2 changed files with 15 additions and 2 deletions

View File

@ -3,6 +3,7 @@ package domain
import (
"errors"
"fmt"
"sort"
"strconv"
"strings"
)
@ -133,6 +134,18 @@ func (s *Scopes) UnmarshalJSON(v []byte) error {
return nil
}
func (s Scopes) MarshalJSON() ([]byte, error) {
scopes := make([]string, len(s))
for i := range s {
scopes[i] = s[i].String()
}
sort.Strings(scopes)
return []byte(strconv.Quote(strings.Join(scopes, " "))), nil
}
// String returns scope slug as string.
func (s Scope) String() string {
return s.slug

View File

@ -1,16 +1,16 @@
package domain_test
import (
"encoding/json"
"testing"
"github.com/goccy/go-json"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"source.toby3d.me/website/indieauth/internal/domain"
)
func TestScopesUnmarshalJSON(t *testing.T) {
func TestScopes_UnmarshalJSON(t *testing.T) {
t.Parallel()
result := &struct {