Skip to content

Commit ba74b94

Browse files
committed
Fix tests
1 parent 6bb21e4 commit ba74b94

File tree

2 files changed

+77
-60
lines changed

2 files changed

+77
-60
lines changed

components/camera/camera.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ type Camera interface {
148148
func DecodeImageFromCamera(ctx context.Context, mimeType string, extra map[string]interface{}, cam Camera) (image.Image, error) {
149149
resBytes, resMetadata, err := cam.Image(ctx, mimeType, extra)
150150
if err != nil {
151-
return nil, fmt.Errorf("could not get image bytes from camera: %w", err)
151+
return nil, err
152152
}
153153
if len(resBytes) == 0 {
154154
return nil, errors.New("received empty bytes from camera")
@@ -169,6 +169,10 @@ func GetImageFromGetImages(ctx context.Context, mimeType string, cam Camera) ([]
169169
return nil, ImageMetadata{}, fmt.Errorf("could not get images from camera: %w", err)
170170
}
171171

172+
if len(images) == 0 {
173+
return nil, ImageMetadata{}, errors.New("no images returned from camera")
174+
}
175+
172176
imgBytes, err := rimage.EncodeImage(ctx, images[0].Image, mimeType)
173177
if err != nil {
174178
return nil, ImageMetadata{}, fmt.Errorf("could not encode image: %w", err)

components/camera/camera_test.go

Lines changed: 72 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -314,10 +314,8 @@ func verifyDecodedImage(t *testing.T, imgBytes []byte, mimeType string, original
314314
}
315315

316316
func TestGetImagesFromGetImage(t *testing.T) {
317-
// Create a test image
318317
testImg := image.NewRGBA(image.Rect(0, 0, 100, 100))
319318

320-
// Create a test camera that implements Image
321319
testCam := &testCamera{
322320
Named: camera.Named("test_cam").AsNamed(),
323321
imageFunc: func(ctx context.Context, mimeType string, extra map[string]interface{}) ([]byte, camera.ImageMetadata, error) {
@@ -329,39 +327,42 @@ func TestGetImagesFromGetImage(t *testing.T) {
329327
},
330328
}
331329

332-
// Test with PNG mime type
333-
images, metadata, err := camera.GetImagesFromGetImage(context.Background(), rutils.MimeTypePNG, testCam)
334-
test.That(t, err, test.ShouldBeNil)
335-
test.That(t, len(images), test.ShouldEqual, 1)
336-
test.That(t, images[0].SourceName, test.ShouldEqual, testCam.Name().String())
337-
verifyImageEquality(t, images[0].Image, testImg)
338-
test.That(t, metadata.CapturedAt.IsZero(), test.ShouldBeFalse)
339-
340-
// Test with JPEG mime type
341-
images, metadata, err = camera.GetImagesFromGetImage(context.Background(), rutils.MimeTypeJPEG, testCam)
342-
test.That(t, err, test.ShouldBeNil)
343-
test.That(t, len(images), test.ShouldEqual, 1)
344-
test.That(t, images[0].SourceName, test.ShouldEqual, testCam.Name().String())
345-
verifyImageEquality(t, images[0].Image, testImg)
346-
test.That(t, metadata.CapturedAt.IsZero(), test.ShouldBeFalse)
347-
348-
// Test with error case
349-
errorCam := &testCamera{
350-
Named: camera.Named("error_cam").AsNamed(),
351-
imageFunc: func(ctx context.Context, mimeType string, extra map[string]interface{}) ([]byte, camera.ImageMetadata, error) {
352-
return nil, camera.ImageMetadata{}, errors.New("test error")
353-
},
354-
}
355-
_, _, err = camera.GetImagesFromGetImage(context.Background(), rutils.MimeTypePNG, errorCam)
356-
test.That(t, err, test.ShouldBeError, errors.New("could not decode image: test error"))
330+
t.Run("PNG mime type", func(t *testing.T) {
331+
images, metadata, err := camera.GetImagesFromGetImage(context.Background(), rutils.MimeTypePNG, testCam)
332+
test.That(t, err, test.ShouldBeNil)
333+
test.That(t, len(images), test.ShouldEqual, 1)
334+
test.That(t, images[0].SourceName, test.ShouldEqual, testCam.Name().String())
335+
verifyImageEquality(t, images[0].Image, testImg)
336+
test.That(t, metadata.CapturedAt.IsZero(), test.ShouldBeFalse)
337+
})
338+
339+
t.Run("JPEG mime type", func(t *testing.T) {
340+
images, metadata, err := camera.GetImagesFromGetImage(context.Background(), rutils.MimeTypeJPEG, testCam)
341+
test.That(t, err, test.ShouldBeNil)
342+
test.That(t, len(images), test.ShouldEqual, 1)
343+
test.That(t, images[0].SourceName, test.ShouldEqual, testCam.Name().String())
344+
imgBytes, err := rimage.EncodeImage(context.Background(), images[0].Image, rutils.MimeTypeJPEG)
345+
test.That(t, err, test.ShouldBeNil)
346+
verifyDecodedImage(t, imgBytes, rutils.MimeTypeJPEG, testImg)
347+
test.That(t, metadata.CapturedAt.IsZero(), test.ShouldBeFalse)
348+
})
349+
350+
t.Run("error case", func(t *testing.T) {
351+
errorCam := &testCamera{
352+
Named: camera.Named("error_cam").AsNamed(),
353+
imageFunc: func(ctx context.Context, mimeType string, extra map[string]interface{}) ([]byte, camera.ImageMetadata, error) {
354+
return nil, camera.ImageMetadata{}, errors.New("test error")
355+
},
356+
}
357+
_, _, err := camera.GetImagesFromGetImage(context.Background(), rutils.MimeTypePNG, errorCam)
358+
test.That(t, err, test.ShouldBeError, errors.New("could not decode image: test error"))
359+
})
357360
}
358361

359362
func TestGetImageFromGetImages(t *testing.T) {
360-
// Create test images
361363
testImg1 := image.NewRGBA(image.Rect(0, 0, 100, 100))
362364
testImg2 := image.NewRGBA(image.Rect(0, 0, 200, 200))
363365

364-
// Create a test camera that implements Images
365366
testCam := &testCamera{
366367
Named: camera.Named("test_cam").AsNamed(),
367368
imagesFunc: func(ctx context.Context) ([]camera.NamedImage, resource.ResponseMetadata, error) {
@@ -372,35 +373,47 @@ func TestGetImageFromGetImages(t *testing.T) {
372373
},
373374
}
374375

375-
// Test with PNG mime type
376-
imgBytes, metadata, err := camera.GetImageFromGetImages(context.Background(), rutils.MimeTypePNG, testCam)
377-
test.That(t, err, test.ShouldBeNil)
378-
test.That(t, metadata.MimeType, test.ShouldEqual, rutils.MimeTypePNG)
379-
verifyDecodedImage(t, imgBytes, rutils.MimeTypePNG, testImg1)
380-
381-
// Test with JPEG mime type
382-
imgBytes, metadata, err = camera.GetImageFromGetImages(context.Background(), rutils.MimeTypeJPEG, testCam)
383-
test.That(t, err, test.ShouldBeNil)
384-
test.That(t, metadata.MimeType, test.ShouldEqual, rutils.MimeTypeJPEG)
385-
verifyDecodedImage(t, imgBytes, rutils.MimeTypeJPEG, testImg1)
386-
387-
// Test with error case
388-
errorCam := &testCamera{
389-
Named: camera.Named("error_cam").AsNamed(),
390-
imagesFunc: func(ctx context.Context) ([]camera.NamedImage, resource.ResponseMetadata, error) {
391-
return nil, resource.ResponseMetadata{}, errors.New("test error")
392-
},
393-
}
394-
_, _, err = camera.GetImageFromGetImages(context.Background(), rutils.MimeTypePNG, errorCam)
395-
test.That(t, err, test.ShouldBeError, errors.New("could not get images from camera: test error"))
376+
t.Run("PNG mime type", func(t *testing.T) {
377+
imgBytes, metadata, err := camera.GetImageFromGetImages(context.Background(), rutils.MimeTypePNG, testCam)
378+
test.That(t, err, test.ShouldBeNil)
379+
test.That(t, metadata.MimeType, test.ShouldEqual, rutils.MimeTypePNG)
380+
verifyDecodedImage(t, imgBytes, rutils.MimeTypePNG, testImg1)
381+
})
396382

397-
// Test with empty images case
398-
emptyCam := &testCamera{
399-
Named: camera.Named("empty_cam").AsNamed(),
400-
imagesFunc: func(ctx context.Context) ([]camera.NamedImage, resource.ResponseMetadata, error) {
401-
return []camera.NamedImage{}, resource.ResponseMetadata{CapturedAt: time.Now()}, nil
402-
},
403-
}
404-
_, _, err = camera.GetImageFromGetImages(context.Background(), rutils.MimeTypePNG, emptyCam)
405-
test.That(t, err, test.ShouldBeError, errors.New("could not get images from camera: no images returned"))
383+
t.Run("JPEG mime type", func(t *testing.T) {
384+
imgBytes, metadata, err := camera.GetImageFromGetImages(context.Background(), rutils.MimeTypeJPEG, testCam)
385+
test.That(t, err, test.ShouldBeNil)
386+
test.That(t, metadata.MimeType, test.ShouldEqual, rutils.MimeTypeJPEG)
387+
verifyDecodedImage(t, imgBytes, rutils.MimeTypeJPEG, testImg1)
388+
})
389+
390+
t.Run("error case", func(t *testing.T) {
391+
errorCam := &testCamera{
392+
Named: camera.Named("error_cam").AsNamed(),
393+
imagesFunc: func(ctx context.Context) ([]camera.NamedImage, resource.ResponseMetadata, error) {
394+
return nil, resource.ResponseMetadata{}, errors.New("test error")
395+
},
396+
}
397+
_, _, err := camera.GetImageFromGetImages(context.Background(), rutils.MimeTypePNG, errorCam)
398+
test.That(t, err, test.ShouldBeError, errors.New("could not get images from camera: test error"))
399+
})
400+
401+
t.Run("empty images case", func(t *testing.T) {
402+
emptyCam := &testCamera{
403+
Named: camera.Named("empty_cam").AsNamed(),
404+
imagesFunc: func(ctx context.Context) ([]camera.NamedImage, resource.ResponseMetadata, error) {
405+
return []camera.NamedImage{}, resource.ResponseMetadata{CapturedAt: time.Now()}, nil
406+
},
407+
}
408+
_, _, err := camera.GetImageFromGetImages(context.Background(), rutils.MimeTypePNG, emptyCam)
409+
test.That(t, err, test.ShouldBeError, errors.New("no images returned from camera"))
410+
})
411+
412+
t.Run("not implemented case", func(t *testing.T) {
413+
notImplCam := &testCamera{
414+
Named: camera.Named("not_impl_cam").AsNamed(),
415+
}
416+
_, _, err := camera.GetImageFromGetImages(context.Background(), rutils.MimeTypePNG, notImplCam)
417+
test.That(t, err, test.ShouldBeError, errors.New("could not get images from camera: not implemented"))
418+
})
406419
}

0 commit comments

Comments
 (0)