ducky/devices
ducky/devices/storer_test.go
Fix happy path test for getting devices. We forgot to create the Devices in the Storer tests, so our GetDevices happy path test was invalid. Add the call, and we're ok.
1 package devices
3 import (
4 "testing"
5 "time"
7 "code.secondbit.org/uuid.hg"
8 "golang.org/x/net/context"
9 )
11 var storers []Storer
13 func compareDevices(device1, device2 Device) (ok bool, field string, expected, result interface{}) {
14 if !device1.ID.Equal(device2.ID) {
15 return false, "ID", device1.ID, device2.ID
16 }
17 if device1.Name != device2.Name {
18 return false, "Name", device1.Name, device2.Name
19 }
20 if !device1.Owner.Equal(device2.Owner) {
21 return false, "Owner", device1.Owner, device2.Owner
22 }
23 if device1.Type != device2.Type {
24 return false, "Type", device1.Type, device2.Type
25 }
26 if !device1.Created.Equal(device2.Created) {
27 return false, "Created", device1.Created, device2.Created
28 }
29 if !device1.LastSeen.Equal(device2.LastSeen) {
30 return false, "LastSeen", device1.LastSeen, device2.LastSeen
31 }
32 if device1.PushToken != device2.PushToken {
33 return false, "PushToken", device1.PushToken, device2.PushToken
34 }
35 return true, "", nil, nil
36 }
38 func TestGetDevicesHappyPath(t *testing.T) {
39 for _, storer := range storers {
40 storer, err := storer.Factory(context.TODO())
41 if err != nil {
42 t.Fatalf("Fatal error creating %T: %+v\n", storer, err)
43 }
45 devices := []Device{
46 {ID: uuid.NewID(), Name: "Test 1", Owner: uuid.NewID(), Type: TypeAndroidPhone, Created: time.Now(), LastSeen: time.Now(), PushToken: "test token"},
47 {ID: uuid.NewID(), Name: "Test 2", Owner: uuid.NewID(), Type: TypeAndroidTablet, Created: time.Now(), LastSeen: time.Now(), PushToken: "test token"},
48 {ID: uuid.NewID(), Name: "Test 3", Owner: uuid.NewID(), Type: TypeChromeExtension, Created: time.Now(), LastSeen: time.Now(), PushToken: "test token"},
49 }
51 err = storer.CreateDevices(devices, context.TODO())
52 if err != nil {
53 t.Errorf("Error creating devices in %T: %+v\n", err)
54 }
56 ids := make([]uuid.ID, 0, len(devices))
57 for _, device := range devices {
58 ids = append(ids, device.ID)
59 }
61 results, err := storer.GetDevices(ids, context.TODO())
62 if err != nil {
63 t.Errorf("Unexpected error retrieving devices from %T: %+v\n", storer, err)
64 }
65 for _, device := range devices {
66 d, returned := results[device.ID.String()]
67 if !returned {
68 t.Errorf("Expected device %s to be in results from %T, but wasn't present\n", device.Name, storer)
69 }
70 ok, field, expected, result := compareDevices(device, d)
71 if !ok {
72 t.Errorf("Expected %s of %s to be %v, got %v from %T\n", field, device.Name, expected, result, storer)
73 }
74 }
75 err = storer.Destroy(context.TODO())
76 if err != nil {
77 t.Errorf("Error cleaning up after %T: %+v\n", storer, err)
78 }
79 }
80 }