1
0
Fork 0
piken/sql/sql_test.go

113 lines
2.6 KiB
Go
Raw Normal View History

2015-12-10 22:27:03 +01:00
package sql
import (
"io/ioutil"
"os"
"path"
"testing"
2015-12-11 02:28:18 +01:00
"time"
2015-12-10 22:27:03 +01:00
_ "github.com/mattn/go-sqlite3"
"github.com/stretchr/testify/assert"
)
2015-12-11 02:10:10 +01:00
var store Store
func (s *Store) init() (dirName string, err error) {
dirName, err = ioutil.TempDir("", "piken")
if err != nil {
return "", err
}
databaseName := path.Join(dirName, "piken.sqlite3")
if err := s.Open(databaseName); err != nil {
return "", err
}
2015-12-10 22:27:03 +01:00
2015-12-11 02:10:10 +01:00
return dirName, nil
}
// Insert some data for testing.
func (s *Store) fixture() {
s.db.Exec(`INSERT INTO unicode_data (codepoint, name, category)
2015-12-10 22:27:03 +01:00
VALUES ('1F60E', 'SMILING FACE WITH SUNGLASSES', 'So')`)
2015-12-11 02:10:10 +01:00
s.db.Exec(`INSERT INTO unicode_data (codepoint, name, category)
2015-12-10 22:27:03 +01:00
VALUES ('1F602', 'FACE WITH TEARS OF JOY', 'So')`)
2015-12-11 02:10:10 +01:00
s.db.Exec(`INSERT INTO unicode_data (codepoint, name, category)
2015-12-10 22:27:03 +01:00
VALUES ('1F4D7', 'GREEN BOOK', 'So')`)
}
func TestSearch(t *testing.T) {
2015-12-11 02:10:10 +01:00
dirName, err := store.init()
2015-12-10 22:27:03 +01:00
if err != nil {
assert.Error(t, err)
}
2015-12-11 02:10:10 +01:00
defer os.RemoveAll(dirName)
defer store.Close()
2015-12-10 22:27:03 +01:00
2015-12-11 02:10:10 +01:00
store.fixture()
2015-12-10 22:27:03 +01:00
2015-12-11 02:10:10 +01:00
data, err := store.SearchUnicode("cat")
2015-12-10 22:27:03 +01:00
if err != nil {
assert.Error(t, err)
}
assert.Equal(t, data, []UnicodeData(nil))
2015-12-11 02:10:10 +01:00
data, err = store.SearchUnicode("book")
2015-12-10 22:27:03 +01:00
if err != nil {
assert.Error(t, err)
}
assert.Equal(t, len(data), 1)
assert.Equal(t, data[0].CodePoint, "1F4D7")
assert.Equal(t, data[0].Name, "GREEN BOOK")
assert.Equal(t, data[0].Category, "So")
// Search is case insensitive
2015-12-11 02:10:10 +01:00
data, err = store.SearchUnicode("fAcE")
2015-12-10 22:27:03 +01:00
if err != nil {
assert.Error(t, err)
}
assert.Equal(t, len(data), 2)
assert.Equal(t, data[0].CodePoint, "1F60E")
assert.Equal(t, data[0].Name, "SMILING FACE WITH SUNGLASSES")
assert.Equal(t, data[0].Category, "So")
assert.Equal(t, data[1].CodePoint, "1F602")
assert.Equal(t, data[1].Name, "FACE WITH TEARS OF JOY")
assert.Equal(t, data[1].Category, "So")
2015-12-11 02:10:10 +01:00
data, err = store.SearchUnicode("face NOT sunglasses")
2015-12-10 22:27:03 +01:00
if err != nil {
assert.Error(t, err)
}
assert.Equal(t, len(data), 1)
assert.Equal(t, data[0].CodePoint, "1F602")
assert.Equal(t, data[0].Name, "FACE WITH TEARS OF JOY")
assert.Equal(t, data[0].Category, "So")
}
2015-12-11 02:28:18 +01:00
func TestLastUpdate(t *testing.T) {
dirName, err := store.init()
if err != nil {
assert.Error(t, err)
}
defer os.RemoveAll(dirName)
defer store.Close()
updateTime, err := store.GetLastUpdate("test.txt")
if err != nil {
assert.Error(t, err)
}
assert.Equal(t, updateTime, time.Unix(0, 0))
testTime, _ := time.Parse("2006-Jan-02", "1993-Jan-25")
if err := store.CreateLastUpdate("test.txt", testTime); err != nil {
assert.Error(t, err)
}
updateTime, err = store.GetLastUpdate("test.txt")
assert.Equal(t, updateTime, testTime)
}