You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
pic/seadb_test.go

91 lines
2.5 KiB
Go

package pic
import (
"os"
"path/filepath"
"testing"
"github.com/jmoiron/sqlx"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
var db *sqlx.DB
// Для тестирования используем тестовую БД
func openDB() *sqlx.DB {
db, err := sqlx.Open("mysql", "itman:X753951x@(xigmanas:3306)/sea-test")
if err != nil {
panic(err)
}
return db
}
// Первоначальная установка окружения
func TestMain(m *testing.M) {
// Каталог test должен присутствовать и в нем должны находиться:
// sea-test.sql - скрипт для создания тестовой БД и заполнения ее тестовыми данными (mock)
// test.gif - тестовый gif (mock)
//os.RemoveAll("test")
//os.Mkdir("test", 0666)
db = openDB()
os.Exit(m.Run())
}
func TestGetSmallGifs(t *testing.T) {
// db открыта на глобальном уровне
seadb, err := NewSeaDB(db)
// если ошибка - дальнейшая проверка бессмыслена
require.NoError(t, err)
urls, err := seadb.SmallGifs()
assert.Nil(t, err)
// из тестовой БД должны получить 3 записи
assert.Equal(t, len(urls), 3, "должны получить ровно 3 записи")
}
// Проверка загрузки из weed
func TestDownload(t *testing.T) {
1 year ago
// используем временный каталог для тестирования
tmpdir := t.TempDir()
// для удобства - теперь вместо assert(t...) пишем просто assert(..)
assert := assert.New(t)
1 year ago
// этот url должен присутствовать в weed
url := "http://192.168.0.105:9091/1,10040dd9712a6b.png"
// формируем полное имя файла с путем.
1 year ago
filename := filepath.Join(tmpdir, "1,10040dd9712a6b.png")
// собственно загрузка файла
err := download(url, filename)
assert.Nil(err)
assert.FileExists(filename)
}
// Работает, но не понятно как интерпретировать результаты
func BenchmarkDownload(b *testing.B) {
seadb, err := NewSeaDB(db)
if err != nil {
panic(err)
}
urls, err := seadb.SmallGifs()
if err != nil {
panic(err)
}
for _, url := range urls {
filename, err := getFilename(url)
if err != nil {
panic(err)
}
err = download(url, filepath.Join("test", filename))
if err != nil {
panic(err)
}
}
}