1package analytics
2
3import (
4	"reflect"
5	"testing"
6	"time"
7)
8
9func TestTraitsSimple(t *testing.T) {
10	date := time.Now()
11	text := "ABC"
12	number := 42
13
14	tests := map[string](struct {
15		ref Traits
16		run func(Traits)
17	}){
18		"address":     {Traits{"address": text}, func(t Traits) { t.SetAddress(text) }},
19		"age":         {Traits{"age": number}, func(t Traits) { t.SetAge(number) }},
20		"avatar":      {Traits{"avatar": text}, func(t Traits) { t.SetAvatar(text) }},
21		"birthday":    {Traits{"birthday": date}, func(t Traits) { t.SetBirthday(date) }},
22		"createdAt":   {Traits{"createdAt": date}, func(t Traits) { t.SetCreatedAt(date) }},
23		"description": {Traits{"description": text}, func(t Traits) { t.SetDescription(text) }},
24		"email":       {Traits{"email": text}, func(t Traits) { t.SetEmail(text) }},
25		"firstName":   {Traits{"firstName": text}, func(t Traits) { t.SetFirstName(text) }},
26		"lastName":    {Traits{"lastName": text}, func(t Traits) { t.SetLastName(text) }},
27		"gender":      {Traits{"gender": text}, func(t Traits) { t.SetGender(text) }},
28		"name":        {Traits{"name": text}, func(t Traits) { t.SetName(text) }},
29		"phone":       {Traits{"phone": text}, func(t Traits) { t.SetPhone(text) }},
30		"title":       {Traits{"title": text}, func(t Traits) { t.SetTitle(text) }},
31		"username":    {Traits{"username": text}, func(t Traits) { t.SetUsername(text) }},
32		"website":     {Traits{"website": text}, func(t Traits) { t.SetWebsite(text) }},
33	}
34
35	for name, test := range tests {
36		traits := NewTraits()
37		test.run(traits)
38
39		if !reflect.DeepEqual(traits, test.ref) {
40			t.Errorf("%s: invalid traits produced: %#v\n", name, traits)
41		}
42	}
43}
44
45func TestTraitsMulti(t *testing.T) {
46	t0 := Traits{"firstName": "Luke", "lastName": "Skywalker"}
47	t1 := NewTraits().SetFirstName("Luke").SetLastName("Skywalker")
48
49	if !reflect.DeepEqual(t0, t1) {
50		t.Errorf("invalid traits produced by chained setters:\n- expected %#v\n- found: %#v", t0, t1)
51	}
52}
53