package main import ( "log" "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("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][]AlbumID{ "Black Crow Hermione": []AlbumID{albumsDataTest[10].ID}, "Plantu": []AlbumID{albumsDataTest[2].ID}, "FOOOOOOOBAAAAAR": []AlbumID{}, } 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 idx, resAlbum := range res { c.Check(resAlbum.ID, Equals, expected[idx]) } } } } log.Printf("%s: %s", c.TestName(), time.Since(start)) }