github.com/naoina/kocha@v0.7.1-0.20171129072645-78c7a531f799/param_test.go (about)

     1  package kocha_test
     2  
     3  import (
     4  	"net/url"
     5  	"reflect"
     6  	"testing"
     7  
     8  	"github.com/naoina/kocha"
     9  )
    10  
    11  func TestFromParams_Bind(t *testing.T) {
    12  	func() {
    13  		type User struct{}
    14  		p := &kocha.Params{Values: url.Values{}}
    15  		user := User{}
    16  		err := p.From("user").Bind(user)
    17  		if err == nil {
    18  			t.Errorf("From(%#v).Bind(%#v) => %#v, want error", "user", user, err)
    19  		}
    20  	}()
    21  
    22  	func() {
    23  		p := &kocha.Params{Values: url.Values{}}
    24  		var s string
    25  		err := p.From("user").Bind(&s)
    26  		if err == nil {
    27  			t.Errorf("From.Bind(%#v) => %#v, want error", s, err)
    28  		}
    29  	}()
    30  
    31  	func() {
    32  		type User struct {
    33  			Name string
    34  			Age  int
    35  		}
    36  		p := &kocha.Params{Values: url.Values{}}
    37  		user := &User{}
    38  		err := p.From("user").Bind(user)
    39  		if err != nil {
    40  			t.Errorf("From.Bind(%#v) => %#v, want nil", user, err)
    41  		}
    42  
    43  		actual := user
    44  		expected := &User{}
    45  		if !reflect.DeepEqual(actual, expected) {
    46  			t.Errorf("%T => %#v, want %q", user, actual, expected)
    47  		}
    48  	}()
    49  
    50  	func() {
    51  		type User struct {
    52  			Name    string
    53  			Age     int
    54  			Address string
    55  		}
    56  		p := &kocha.Params{Values: url.Values{
    57  			"user.name":  {"naoina"},
    58  			"user.age":   {"17"},
    59  			"admin.name": {"administrator"},
    60  		}}
    61  		user := &User{}
    62  		err := p.From("user").Bind(user, "name", "age")
    63  		if err != nil {
    64  			t.Errorf("From.Bind(%#v) => %#v, want nil", user, err)
    65  		}
    66  
    67  		actual := user
    68  		expected := &User{
    69  			Name:    "naoina",
    70  			Age:     17,
    71  			Address: "",
    72  		}
    73  		if !reflect.DeepEqual(actual, expected) {
    74  			t.Errorf("%T => %#v, want %#v", user, actual, expected)
    75  		}
    76  	}()
    77  
    78  	func() {
    79  		type User struct {
    80  			Name string
    81  		}
    82  		type Admin struct {
    83  			User
    84  			Name string
    85  		}
    86  		p := &kocha.Params{Values: url.Values{
    87  			"user.name": {"naoina"},
    88  		}}
    89  		admin := &Admin{}
    90  		err := p.From("user").Bind(admin, "name")
    91  		if err != nil {
    92  			t.Errorf("From.Bind(%#v) => %#v, want nil", admin, err)
    93  		}
    94  
    95  		actual := admin
    96  		expected := &Admin{
    97  			Name: "naoina",
    98  		}
    99  		if !reflect.DeepEqual(actual, expected) {
   100  			t.Errorf("%T => %#v, want %#v", admin, actual, expected)
   101  		}
   102  	}()
   103  }