|
|
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) {
|
|
|
// используем временный каталог для тестирования
|
|
|
tmpdir := t.TempDir()
|
|
|
|
|
|
// для удобства - теперь вместо assert(t...) пишем просто assert(..)
|
|
|
assert := assert.New(t)
|
|
|
|
|
|
// этот url должен присутствовать в weed
|
|
|
url := "http://192.168.0.105:9091/1,10040dd9712a6b.png"
|
|
|
|
|
|
// формируем полное имя файла с путем.
|
|
|
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)
|
|
|
}
|
|
|
}
|
|
|
}
|