1
0
Fork 0

Refactor database init and fixtures

This commit is contained in:
Daniele Tricoli 2015-12-11 02:10:10 +01:00
parent 4b85b37c5d
commit 724b3800f9
1 changed files with 31 additions and 24 deletions

View File

@ -1,7 +1,6 @@
package sql
import (
"database/sql"
"io/ioutil"
"os"
"path"
@ -11,44 +10,52 @@ import (
"github.com/stretchr/testify/assert"
)
// Insert some data for testing.
func fixture(databaseName string) {
db, _ := sql.Open("sqlite3", databaseName)
defer db.Close()
var store Store
db.Exec(`INSERT INTO unicode_data (codepoint, name, category)
VALUES ('1F60E', 'SMILING FACE WITH SUNGLASSES', 'So')`)
db.Exec(`INSERT INTO unicode_data (codepoint, name, category)
VALUES ('1F602', 'FACE WITH TEARS OF JOY', 'So')`)
db.Exec(`INSERT INTO unicode_data (codepoint, name, category)
VALUES ('1F4D7', 'GREEN BOOK', 'So')`)
}
func (s *Store) init() (dirName string, err error) {
func TestSearch(t *testing.T) {
var s Store
dirName, err := ioutil.TempDir("", "piken")
dirName, err = ioutil.TempDir("", "piken")
if err != nil {
t.Fatal(err)
return "", err
}
defer os.RemoveAll(dirName)
databaseName := path.Join(dirName, "piken.sqlite3")
if err := s.Open(databaseName); err != nil {
return "", err
}
return dirName, nil
}
// Insert some data for testing.
func (s *Store) fixture() {
s.db.Exec(`INSERT INTO unicode_data (codepoint, name, category)
VALUES ('1F60E', 'SMILING FACE WITH SUNGLASSES', 'So')`)
s.db.Exec(`INSERT INTO unicode_data (codepoint, name, category)
VALUES ('1F602', 'FACE WITH TEARS OF JOY', 'So')`)
s.db.Exec(`INSERT INTO unicode_data (codepoint, name, category)
VALUES ('1F4D7', 'GREEN BOOK', 'So')`)
}
func TestSearch(t *testing.T) {
dirName, err := store.init()
if err != nil {
assert.Error(t, err)
}
defer s.Close()
defer os.RemoveAll(dirName)
defer store.Close()
fixture(databaseName)
store.fixture()
data, err := s.SearchUnicode("cat")
data, err := store.SearchUnicode("cat")
if err != nil {
assert.Error(t, err)
}
assert.Equal(t, data, []UnicodeData(nil))
data, err = s.SearchUnicode("book")
data, err = store.SearchUnicode("book")
if err != nil {
assert.Error(t, err)
}
@ -58,7 +65,7 @@ func TestSearch(t *testing.T) {
assert.Equal(t, data[0].Category, "So")
// Search is case insensitive
data, err = s.SearchUnicode("fAcE")
data, err = store.SearchUnicode("fAcE")
if err != nil {
assert.Error(t, err)
}
@ -70,7 +77,7 @@ func TestSearch(t *testing.T) {
assert.Equal(t, data[1].Name, "FACE WITH TEARS OF JOY")
assert.Equal(t, data[1].Category, "So")
data, err = s.SearchUnicode("face NOT sunglasses")
data, err = store.SearchUnicode("face NOT sunglasses")
if err != nil {
assert.Error(t, err)
}