package main import ( "log" "path/filepath" "time" . "gopkg.in/check.v1" ) type BleveIndexerSuite struct { i Indexer } var _ = Suite(&BleveIndexerSuite{}) func (s *BleveIndexerSuite) SetUpSuite(c *C) { var err error start := time.Now() s.i, err = NewBleveIndexer(filepath.Join(c.MkDir(), "satbd-test.bar.satellite")) c.Assert(err, IsNil) for _, a := range albumsDataTest { c.Assert(s.i.Index(&a), IsNil) } log.Printf("Indexing took %s", time.Since(start)) } func (s *BleveIndexerSuite) TestCanRetrieveAlbum(c *C) { start := time.Now() for _, a := range albumsDataTest { fromIndex, err := s.i.Get(a.ID) if c.Check(err, IsNil) == true { c.Check(*fromIndex, DeepEquals, a) } } log.Printf("%s: %s", c.TestName(), time.Since(start)) } func (s *BleveIndexerSuite) TestCanDeleteAlbum(c *C) { c.Check(s.i.Delete(albumsDataTest[0].ID), IsNil) c.Check(s.i.Index(&(albumsDataTest[0])), IsNil) c.Check(s.i.Delete(0), ErrorMatches, "No album 0 in the index") } func (s *BleveIndexerSuite) TestCanSearch(c *C) { data := map[string]map[AlbumID]bool{ "frégate": map[AlbumID]bool{albumsDataTest[10].ID: true}, "Éditeur:Dupuis": map[AlbumID]bool{8179: true, 9935: true, 160366: true}, "FOOOOOOOBAAAAAR": map[AlbumID]bool{}, } start := time.Now() for q, expected := range data { res, err := s.i.Search(q) if c.Check(err, IsNil) == true { if c.Check(len(res), Equals, len(expected)) == true { for _, resAlbum := range res { _, ok := expected[resAlbum.ID] c.Check(ok, Equals, true, Commentf("Looking for %d in %s", resAlbum.ID, expected)) } } } } log.Printf("%s: %s", c.TestName(), time.Since(start)) }