first commit
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package remotecontrol
|
||||
|
||||
import (
|
||||
"io/fs"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// TestSPAAssetsEmbedded verifies the browser SPA is compiled into the binary
|
||||
// and exposes the files the server serves.
|
||||
func TestSPAAssetsEmbedded(t *testing.T) {
|
||||
sub, err := fs.Sub(spaFiles, "web")
|
||||
if err != nil {
|
||||
t.Fatalf("fs.Sub: %v", err)
|
||||
}
|
||||
for _, name := range []string{"index.html", "app.js"} {
|
||||
b, err := fs.ReadFile(sub, name)
|
||||
if err != nil {
|
||||
t.Fatalf("embedded %s missing: %v", name, err)
|
||||
}
|
||||
if len(b) == 0 {
|
||||
t.Fatalf("embedded %s is empty", name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSPAIndexReferencesApp(t *testing.T) {
|
||||
b, err := fs.ReadFile(spaFiles, "web/index.html")
|
||||
if err != nil {
|
||||
t.Fatalf("read index: %v", err)
|
||||
}
|
||||
html := string(b)
|
||||
for _, want := range []string{`id="output"`, `id="composer"`, `id="confirm"`, "app.js", "viewport"} {
|
||||
if !strings.Contains(html, want) {
|
||||
t.Fatalf("index.html missing %q", want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSPAScriptHandlesFrames(t *testing.T) {
|
||||
b, err := fs.ReadFile(spaFiles, "web/app.js")
|
||||
if err != nil {
|
||||
t.Fatalf("read app.js: %v", err)
|
||||
}
|
||||
js := string(b)
|
||||
// The client must understand every server->client frame type and emit the
|
||||
// two client->server types.
|
||||
for _, want := range []string{`"output"`, `"confirm"`, `"status"`, `type: "input"`, `type: "decide"`, "/ws"} {
|
||||
if !strings.Contains(js, want) {
|
||||
t.Fatalf("app.js missing handling for %q", want)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user