From 5c16435e2218344a6e232ebb48cf022a32ba85d5 Mon Sep 17 00:00:00 2001 From: Philipp Tanlak Date: Sun, 27 Aug 2023 19:10:49 +0200 Subject: add tests and allow urls --- js_test.go | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) (limited to 'js_test.go') diff --git a/js_test.go b/js_test.go index 7cde15d..d8ab305 100644 --- a/js_test.go +++ b/js_test.go @@ -16,8 +16,8 @@ var html = `
-

Plugins

-

The plugin API allows you to inject code into various parts of the build process.

+

headline

+

paragraph

` @@ -34,22 +34,44 @@ export default function({ html, url }) { return { headline: $("h1").text(), - body: $("p").text() + body: $("p").text(), + url: url, } } ` -func TestV8(t *testing.T) { +func TestJSScrape(t *testing.T) { opts, run, err := flyscrape.Compile(script) require.NoError(t, err) require.NotNil(t, opts) require.NotNil(t, run) - extract, err := run(flyscrape.ScrapeParams{ + result, err := run(flyscrape.ScrapeParams{ HTML: html, + URL: "http://localhost/", }) require.NoError(t, err) - require.Equal(t, "Plugins", extract.(map[string]any)["headline"]) - require.Equal(t, "The plugin API allows you to inject code into various parts of the build process.", extract.(map[string]any)["body"]) + + m, ok := result.(map[string]any) + require.True(t, ok) + require.Equal(t, "headline", m["headline"]) + require.Equal(t, "paragraph", m["body"]) + require.Equal(t, "http://localhost/", m["url"]) +} + +func TestJSCompileError(t *testing.T) { + opts, run, err := flyscrape.Compile("import foo;") + require.Error(t, err) + require.Empty(t, opts) + require.Nil(t, run) + + var terr flyscrape.TransformError + require.ErrorAs(t, err, &terr) + + require.Equal(t, terr, flyscrape.TransformError{ + Line: 1, + Column: 10, + Text: `Expected "from" but found ";"`, + }) } -- cgit v1.2.3