|
|
|
|
@ -1,9 +1,13 @@ |
|
|
|
|
package rendering |
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
"context" |
|
|
|
|
"errors" |
|
|
|
|
"path/filepath" |
|
|
|
|
"testing" |
|
|
|
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/setting" |
|
|
|
|
"github.com/stretchr/testify/assert" |
|
|
|
|
"github.com/stretchr/testify/require" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
@ -58,3 +62,80 @@ func TestGetUrl(t *testing.T) { |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestRenderErrorImage(t *testing.T) { |
|
|
|
|
path, err := filepath.Abs("../../../") |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
rs := RenderingService{ |
|
|
|
|
Cfg: &setting.Cfg{ |
|
|
|
|
HomePath: path, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
t.Run("No theme set returns error image with dark theme", func(t *testing.T) { |
|
|
|
|
result, err := rs.RenderErrorImage("", nil) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
assert.Equal(t, result.FilePath, path+"/public/img/rendering_error_dark.png") |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("Timeout error returns timeout error image", func(t *testing.T) { |
|
|
|
|
result, err := rs.RenderErrorImage(ThemeLight, ErrTimeout) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
assert.Equal(t, result.FilePath, path+"/public/img/rendering_timeout_light.png") |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("Generic error returns error image", func(t *testing.T) { |
|
|
|
|
result, err := rs.RenderErrorImage(ThemeLight, errors.New("an error")) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
assert.Equal(t, result.FilePath, path+"/public/img/rendering_error_light.png") |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("Unknown image path returns error", func(t *testing.T) { |
|
|
|
|
result, err := rs.RenderErrorImage("abc", errors.New("random error")) |
|
|
|
|
assert.Error(t, err) |
|
|
|
|
assert.Nil(t, result) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestRenderLimitImage(t *testing.T) { |
|
|
|
|
path, err := filepath.Abs("../../../") |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
|
|
|
|
|
rs := RenderingService{ |
|
|
|
|
Cfg: &setting.Cfg{ |
|
|
|
|
HomePath: path, |
|
|
|
|
}, |
|
|
|
|
inProgressCount: 2, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
tests := []struct { |
|
|
|
|
name string |
|
|
|
|
theme Theme |
|
|
|
|
expected string |
|
|
|
|
}{ |
|
|
|
|
{ |
|
|
|
|
name: "Light theme returns light image", |
|
|
|
|
theme: ThemeLight, |
|
|
|
|
expected: path + "/public/img/rendering_limit_light.png", |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
name: "Dark theme returns dark image", |
|
|
|
|
theme: ThemeDark, |
|
|
|
|
expected: path + "/public/img/rendering_limit_dark.png", |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
name: "No theme returns dark image", |
|
|
|
|
theme: "", |
|
|
|
|
expected: path + "/public/img/rendering_limit_dark.png", |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, tc := range tests { |
|
|
|
|
t.Run(tc.name, func(t *testing.T) { |
|
|
|
|
opts := Opts{Theme: tc.theme, ConcurrentLimit: 1} |
|
|
|
|
result, err := rs.Render(context.Background(), opts) |
|
|
|
|
assert.NoError(t, err) |
|
|
|
|
assert.Equal(t, tc.expected, result.FilePath) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|