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