123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package contextx
- import (
- "context"
- "testing"
- "github.com/stretchr/testify/assert"
- )
- func TestUnmarshalContext(t *testing.T) {
- type Person struct {
- Name string `ctx:"name"`
- Age int `ctx:"age"`
- }
- ctx := context.Background()
- ctx = context.WithValue(ctx, "name", "kevin")
- ctx = context.WithValue(ctx, "age", 20)
- var person Person
- err := For(ctx, &person)
- assert.Nil(t, err)
- assert.Equal(t, "kevin", person.Name)
- assert.Equal(t, 20, person.Age)
- }
- func TestUnmarshalContextWithOptional(t *testing.T) {
- type Person struct {
- Name string `ctx:"name"`
- Age int `ctx:"age,optional"`
- }
- ctx := context.Background()
- ctx = context.WithValue(ctx, "name", "kevin")
- var person Person
- err := For(ctx, &person)
- assert.Nil(t, err)
- assert.Equal(t, "kevin", person.Name)
- assert.Equal(t, 0, person.Age)
- }
- func TestUnmarshalContextWithMissing(t *testing.T) {
- type Person struct {
- Name string `ctx:"name"`
- Age int `ctx:"age"`
- }
- type name string
- const PersonNameKey name = "name"
- ctx := context.Background()
- ctx = context.WithValue(ctx, PersonNameKey, "kevin")
- var person Person
- err := For(ctx, &person)
- assert.NotNil(t, err)
- }
|