ducky/devices

Paddy 2015-11-27 Parent:74dbc04879a7 Child:03c49b4d3d9f

11:683050b4546b Browse Files

Return ErrDeviceNotFound when updating devices. If we can't find the Device we're supposed to update, return an ErrDeviceNotFound error. Write a unit test that tests for this behaviour.

memstore.go storer_test.go

     1.1 --- a/memstore.go	Fri Nov 27 10:37:27 2015 -0800
     1.2 +++ b/memstore.go	Fri Nov 27 11:32:15 2015 -0800
     1.3 @@ -40,7 +40,7 @@
     1.4  
     1.5  	device, ok := m.devices[change.DeviceID.String()]
     1.6  	if !ok {
     1.7 -		return nil // TODO: return an error
     1.8 +		return ErrDeviceNotFound
     1.9  	}
    1.10  
    1.11  	device = ApplyChange(device, change)
     2.1 --- a/storer_test.go	Fri Nov 27 10:37:27 2015 -0800
     2.2 +++ b/storer_test.go	Fri Nov 27 11:32:15 2015 -0800
     2.3 @@ -327,3 +327,35 @@
     2.4  		}
     2.5  	}
     2.6  }
     2.7 +
     2.8 +func TestUpdateDeviceNotFound(t *testing.T) {
     2.9 +	for _, factory := range storerFactories {
    2.10 +		ctx := context.Background()
    2.11 +		storer, err := factory.NewStorer(ctx)
    2.12 +		if err != nil {
    2.13 +			t.Fatalf("Fatal error creating Storer from %T: %+v\n", factory, err)
    2.14 +		}
    2.15 +
    2.16 +		deviceID := uuid.NewID()
    2.17 +		name := "my new name"
    2.18 +		change := DeviceChange{DeviceID: deviceID, Name: &name}
    2.19 +
    2.20 +		err = storer.UpdateDevice(change, ctx)
    2.21 +		if err != ErrDeviceNotFound {
    2.22 +			t.Errorf("Expected error to be ErrDeviceNotFound, %T returned %+v\n", storer, err)
    2.23 +		}
    2.24 +
    2.25 +		results, err := storer.GetDevices([]uuid.ID{deviceID}, ctx)
    2.26 +		if err != nil {
    2.27 +			t.Errorf("Error retrieving devices from %T: %+v\n", storer, err)
    2.28 +		}
    2.29 +		if len(results) != 0 {
    2.30 +			t.Errorf("Expected no devices in %T, got %+v\n", storer, results)
    2.31 +		}
    2.32 +
    2.33 +		err = factory.TeardownStorer(storer, ctx)
    2.34 +		if err != nil {
    2.35 +			t.Errorf("Error cleaning up after %T: %+v\n", storer, err)
    2.36 +		}
    2.37 +	}
    2.38 +}