github.com/status-im/status-go@v1.1.0/images/main_test.go (about)

     1  package images
     2  
     3  import (
     4  	"image"
     5  	"image/png"
     6  	"os"
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestGenerateBannerImage_NoScaleUp(t *testing.T) {
    13  	// Test image 256x256
    14  	testImage := path + "status.png"
    15  	identityImage, err := GenerateBannerImage(testImage, 50, 50, 150, 100)
    16  
    17  	require.NoError(t, err)
    18  	require.Exactly(t, identityImage.Name, BannerIdentityName)
    19  	require.Positive(t, len(identityImage.Payload))
    20  	// Ensure we don't scale it up. That will be done inefficiently in backend instead of frontend
    21  	require.Exactly(t, identityImage.Width, 100)
    22  	require.Exactly(t, identityImage.Height, 50)
    23  	require.Exactly(t, identityImage.FileSize, len(identityImage.Payload))
    24  	require.Exactly(t, identityImage.ResizeTarget, int(BannerDim))
    25  }
    26  
    27  func TestGenerateBannerImage_ShrinkOnly(t *testing.T) {
    28  	// Generate test image bigger than BannerDim
    29  	testImage := image.NewRGBA(image.Rect(0, 0, int(BannerDim)+10, int(BannerDim)+20))
    30  
    31  	tmpTestFilePath := t.TempDir() + "/test.png"
    32  	file, err := os.Create(tmpTestFilePath)
    33  	require.NoError(t, err)
    34  	defer file.Close()
    35  
    36  	err = png.Encode(file, testImage)
    37  	require.NoError(t, err)
    38  
    39  	identityImage, error := GenerateBannerImage(tmpTestFilePath, 0, 0, int(BannerDim)+5, int(BannerDim)+10)
    40  
    41  	require.NoError(t, error)
    42  	require.Positive(t, len(identityImage.Payload))
    43  	// Ensure we scale it down by the small side
    44  	require.Exactly(t, identityImage.Width, int(BannerDim))
    45  	require.Exactly(t, identityImage.Height, 805)
    46  }