Passed
Push — main ( 01f0b4...eeea6b )
by Yume
03:58 queued 01:52
created

pkg/images/optimizer_test.go   A

Size/Duplication

Total Lines 162
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 19
eloc 101
dl 0
loc 162
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A images_test.pngToTest 0 2 1
B images_test.TestConvertToWebp 0 39 6
A images_test.jpgToTest 0 2 1
B images_test.TestStoreImage 0 43 5
B images_test.TestConvertToWebpWithQuality 0 52 6
1
package images_test
2
3
import (
4
	"testing"
5
6
	"github.com/davidbyttow/govips/v2/vips"
7
	"github.com/memnix/memnix-rest/pkg/images"
8
)
9
10
func jpgToTest() string {
11
	return "test/1.jpg"
12
}
13
14
func pngToTest() string {
15
	return "test/2.png"
16
}
17
18
func TestConvertToWebp(t *testing.T) {
19
	images.StartVips()
20
21
	type args struct {
22
		buffer string
23
	}
24
25
	tests := []struct {
26
		name    string
27
		args    args
28
		wantErr bool
29
	}{
30
		{
31
			name: "ConvertJpgToWebp",
32
			args: args{
33
				buffer: jpgToTest(),
34
			},
35
			wantErr: false,
36
		},
37
		{
38
			name: "ConvertPngToWebp",
39
			args: args{
40
				buffer: pngToTest(),
41
			},
42
			wantErr: false,
43
		},
44
	}
45
46
	for _, tt := range tests {
47
		t.Run(tt.name, func(t *testing.T) {
48
			_, got1, err := images.ConvertToWebp(tt.args.buffer)
49
			if (err != nil) != tt.wantErr {
50
				t.Errorf("ConvertToWebp() error = %v, wantErr %v", err, tt.wantErr)
51
				return
52
			}
53
			// Check the metadata forrmats
54
			if !tt.wantErr {
55
				if got1.Format.FileExt() != ".webp" {
56
					t.Errorf("ConvertToWebp() got1 = %v, want %v", got1.Format, ".webp")
57
				}
58
			}
59
		})
60
	}
61
}
62
63
func TestStoreImage(t *testing.T) {
64
	images.StartVips()
65
66
	type args struct {
67
		name   string
68
		buffer string
69
	}
70
	tests := []struct {
71
		name    string
72
		args    args
73
		wantErr bool
74
	}{
75
		{
76
			name: "StoreJpgImage",
77
			args: args{
78
				name:   "test/1_out.jpg",
79
				buffer: jpgToTest(),
80
			},
81
			wantErr: false,
82
		},
83
		{
84
			name: "StorePngImage",
85
			args: args{
86
				name:   "test/2_out.jpg",
87
				buffer: pngToTest(),
88
			},
89
			wantErr: false,
90
		},
91
	}
92
	for _, tt := range tests {
93
		t.Run(tt.name, func(t *testing.T) {
94
			newImage, err := vips.NewImageFromFile(tt.args.buffer)
95
			if err != nil {
96
				t.Errorf("StoreImage() error = %v, wantErr %v", err, tt.wantErr)
97
				return
98
			}
99
100
			defer newImage.Close()
101
102
			newJpg, _, _ := newImage.ExportJpeg(vips.NewJpegExportParams())
103
104
			if err := images.StoreImage(tt.args.name, newJpg); (err != nil) != tt.wantErr {
105
				t.Errorf("StoreImage() error = %v, wantErr %v", err, tt.wantErr)
106
			}
107
		})
108
	}
109
}
110
111
func TestConvertToWebpWithQuality(t *testing.T) {
112
	images.StartVips()
113
114
	type args struct {
115
		name    string
116
		quality int
117
	}
118
119
	tests := []struct {
120
		name    string
121
		args    args
122
		want    []byte
123
		want1   vips.ImageMetadata
124
		wantErr bool
125
	}{
126
		{
127
			name: "ConvertToWebpWithQuality",
128
			args: args{
129
				name:    "test/1.jpg",
130
				quality: 80,
131
			},
132
			wantErr: false,
133
		},
134
		{
135
			name: "ConvertToWebpWithQuality",
136
			args: args{
137
				name:    "test/2.png",
138
				quality: 80,
139
			},
140
			wantErr: false,
141
		},
142
		{
143
			name: "ConvertToWebpWithWrongQuality",
144
			args: args{
145
				name:    "test/1.jpg",
146
				quality: 0,
147
			},
148
			wantErr: true,
149
		},
150
	}
151
152
	for _, tt := range tests {
153
		t.Run(tt.name, func(t *testing.T) {
154
			_, got1, err := images.ConvertToWebpWithQuality(tt.args.name, tt.args.quality)
155
			if (err != nil) != tt.wantErr {
156
				t.Errorf("ConvertToWebp() error = %v, wantErr %v", err, tt.wantErr)
157
				return
158
			}
159
			// Check the metadata formats
160
			if !tt.wantErr {
161
				if got1.Format.FileExt() != ".webp" {
162
					t.Errorf("ConvertToWebp() got1 = %v, want %v", got1.Format.FileExt(), ".webp")
163
				}
164
			}
165
		})
166
	}
167
}
168