|
- // Copyright 2016 The Go Authors. All rights reserved.
- //
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file or at
- // https://developers.google.com/open-source/licenses/bsd.
-
- package database
-
- import (
- "math"
- "strconv"
- "testing"
-
- "google.golang.org/appengine/aetest"
- "google.golang.org/appengine/search"
-
- "github.com/golang/gddo/doc"
- )
-
- var pdoc = &doc.Package{
- ImportPath: "github.com/golang/test",
- Name: "test",
- Synopsis: "This is a test package.",
- Fork: true,
- Stars: 10,
- }
-
- func TestPutIndexWithEmptyId(t *testing.T) {
- c, done, err := aetest.NewContext()
- if err != nil {
- t.Fatal(err)
- }
- defer done()
-
- if err := PutIndex(c, nil, "", 0, 0); err == nil {
- t.Errorf("PutIndex succeeded unexpectedly")
- }
- }
-
- func TestPutIndexCreateNilDoc(t *testing.T) {
- c, done, err := aetest.NewContext()
- if err != nil {
- t.Fatal(err)
- }
- defer done()
-
- if err := PutIndex(c, nil, "12345", -1, 2); err == nil {
- t.Errorf("PutIndex succeeded unexpectedly")
- }
- }
-
- func TestPutIndexNewPackageAndUpdate(t *testing.T) {
- c, done, err := aetest.NewContext()
- if err != nil {
- t.Fatal(err)
- }
- defer done()
-
- // Put a new package into search index.
- if err := PutIndex(c, pdoc, "12345", 0.99, 1); err != nil {
- t.Fatal(err)
- }
-
- // Verify the package was put in is as expected.
- idx, err := search.Open("packages")
- if err != nil {
- t.Fatal(err)
- }
- var got Package
- if err = idx.Get(c, "12345", &got); err != nil && err != search.ErrNoSuchDocument {
- t.Fatal(err)
- }
- wanted := Package{
- Name: pdoc.Name,
- Path: pdoc.ImportPath,
- Synopsis: pdoc.Synopsis,
- ImportCount: 1,
- Fork: true,
- Stars: 10,
- Score: 0.99,
- }
- if got != wanted {
- t.Errorf("PutIndex got %v, want %v", got, wanted)
- }
-
- // Update the import count of the package.
- if err := PutIndex(c, nil, "12345", -1, 2); err != nil {
- t.Fatal(err)
- }
- if err := idx.Get(c, "12345", &got); err != nil && err != search.ErrNoSuchDocument {
- t.Fatal(err)
- }
- wanted.ImportCount = 2
- if got != wanted {
- t.Errorf("PutIndex got %v, want %v", got, wanted)
- }
- }
-
- func TestSearchResultSorted(t *testing.T) {
- c, done, err := aetest.NewContext()
- if err != nil {
- t.Fatal(err)
- }
- defer done()
-
- // Put multiple packages into the search index and the search result
- // should be sorted properly.
- id := "1"
- for i := 2; i < 6; i++ {
- id += strconv.Itoa(i)
- pdoc.Synopsis = id
- if err := PutIndex(c, pdoc, id, math.Pow(0.9, float64(i)), 10*i); err != nil {
- t.Fatal(err)
- }
- }
- got, err := Search(c, "test")
- if err != nil {
- t.Fatal(err)
- }
- wanted := []string{"123", "12", "1234", "12345"}
- for i, p := range got {
- if p.Synopsis != wanted[i] {
- t.Errorf("Search got %v, want %v", p.Synopsis, wanted[i])
- }
- }
- }
|