1// Copyright (c) 2015 Ableton AG, Berlin. All rights reserved. 2// 3// Use of this source code is governed by a BSD-style 4// license that can be found in the LICENSE file. 5 6// +build integration 7 8package travis 9 10import ( 11 "context" 12 "net/http" 13 "reflect" 14 "testing" 15) 16 17const integrationPreferenceName = "build_emails" 18 19func TestPreferencesService_Integration_Find(t *testing.T) { 20 preference, res, err := integrationClient.Preferences.Find(context.TODO(), integrationPreferenceName) 21 22 if err != nil { 23 t.Fatalf("Preference.Find unexpected error occured: %s", err) 24 } 25 26 if res.StatusCode != http.StatusOK { 27 t.Fatalf("Preference.Find invalid http status: %s", res.Status) 28 } 29 30 want := &Preference{ 31 Name: integrationPreferenceName, 32 Value: true, 33 Metadata: &Metadata{Type: "preference", Href: "/v3/preference/build_emails", Representation: "standard"}, 34 } 35 36 if !reflect.DeepEqual(preference, want) { 37 t.Errorf("Preference.Find returned %+v, want %+v", preference, want) 38 } 39} 40 41func TestPreferencesService_Integration_List(t *testing.T) { 42 preferences, res, err := integrationClient.Preferences.List(context.TODO()) 43 44 if err != nil { 45 t.Fatalf("Preferences.List unexpected error occured: %s", err) 46 } 47 48 if res.StatusCode != http.StatusOK { 49 t.Fatalf("Preferences.List invalid http status: %s", res.Status) 50 } 51 52 want := []*Preference{ 53 { 54 Name: "build_emails", 55 Value: true, 56 Metadata: &Metadata{Type: "preference", Href: "/v3/preference/build_emails", Representation: "standard"}, 57 }, 58 { 59 Name: "private_insights_visibility", 60 Value: "private", 61 Metadata: &Metadata{Type: "preference", Href: "/v3/preference/private_insights_visibility", Representation: "standard"}, 62 }, 63 } 64 65 if !reflect.DeepEqual(preferences, want) { 66 t.Errorf("Preferences.Find returned %+v, want %+v", preferences, want) 67 } 68} 69 70func TestPreferenceServices_Integration_Update(t *testing.T) { 71 // Change build_emails = false 72 preference, res, err := integrationClient.Preferences.Update(context.TODO(), &Preference{Name: integrationPreferenceName, Value: false}) 73 74 if err != nil { 75 t.Fatalf("Preference.Update unexpected error occured: %s", err) 76 } 77 78 if res.StatusCode != http.StatusOK { 79 t.Fatalf("Preference.Update invalid http status: %s", res.Status) 80 } 81 82 want := &Preference{ 83 Name: integrationPreferenceName, 84 Value: false, 85 Metadata: &Metadata{Type: "preference", Href: "/v3/preference/build_emails", Representation: "standard"}, 86 } 87 88 if !reflect.DeepEqual(preference, want) { 89 t.Errorf("Preference.Update returned %+v, want %+v", preference, want) 90 } 91 92 // Change build_emails = true 93 preference, res, err = integrationClient.Preferences.Update(context.TODO(), &Preference{Name: integrationPreferenceName, Value: true}) 94 95 if err != nil { 96 t.Fatalf("Preference.Update unexpected error occured: %s", err) 97 } 98 99 if res.StatusCode != http.StatusOK { 100 t.Fatalf("Preference.Update invalid http status: %s", res.Status) 101 } 102 103 want = &Preference{ 104 Name: integrationPreferenceName, 105 Value: true, 106 Metadata: &Metadata{Type: "preference", Href: "/v3/preference/build_emails", Representation: "standard"}, 107 } 108 if !reflect.DeepEqual(preference, want) { 109 t.Errorf("Preference.Update returned %+v, want %+v", preference, want) 110 } 111} 112