package view import ( "context" "encoding/json" "fmt" "local/whodunit/config" "local/whodunit/storage" "local/whodunit/storage/entity" "net/http" "os" "testing" "time" "github.com/google/uuid" ) func TestHtml(t *testing.T) { if len(os.Getenv("INTEGRATION")) == 0 { t.Logf("skipping because $INTEGRATION unset") return } os.Args = os.Args[:1] g := storage.NewGraph() ones := fillDB(t, g) go func() { if err := Html(g); err != nil { t.Fatal(err) } }() time.Sleep(time.Millisecond * 250) resp, err := http.Get(fmt.Sprintf("http://localhost:%d/who?id=%s&v", config.New().Port, ones[len(ones)-1].Name)) if err != nil { t.Fatal(err) } defer resp.Body.Close() var v interface{} if err := json.NewDecoder(resp.Body).Decode(&v); err != nil { t.Fatal(err) } b, err := json.MarshalIndent(v, "", " ") if err != nil { t.Fatal(err) } t.Logf("\n%s\n", b) } func fillDB(t *testing.T, g storage.Graph) []entity.One { ones := make([]entity.One, 5) for i := range ones { ones[i] = randomOne() if i > 0 { ones[i].Connections = []entity.One{entity.One{ Name: ones[i-1].Name, Relationship: ":D", }} } } for i := range ones { if err := g.Insert(context.TODO(), ones[i]); err != nil { t.Fatal(err) } } return ones } func randomOne() entity.One { return entity.One{ Name: "name-" + uuid.New().String()[:5], Type: "type-" + uuid.New().String()[:5], Title: "titl-" + uuid.New().String()[:5], Image: "imge-" + uuid.New().String()[:5], Text: "text-" + uuid.New().String()[:5], Modified: time.Now().UnixNano(), Connections: []entity.One{}, } }