summaryrefslogtreecommitdiff
path: root/modules/starturl/starturl_test.go
diff options
context:
space:
mode:
authorrafiramadhana <rf.ramadhana@gmail.com>2023-11-15 22:18:06 +0700
committerPhilipp Tanlak <philipp.tanlak@gmail.com>2023-11-15 23:48:30 +0100
commitbeadfd1db3d2398b9b1e66d60779a7b2649af044 (patch)
treeb746ff1ad17234a650c4ffb0ac25158ecd89e6d8 /modules/starturl/starturl_test.go
parent190056ee8d6a4eca61d92a79cc25aad645e69d4a (diff)
Add multiple starting URLs
Add multiple starting URLs by adding Module.URLs.
Diffstat (limited to 'modules/starturl/starturl_test.go')
-rw-r--r--modules/starturl/starturl_test.go83
1 files changed, 83 insertions, 0 deletions
diff --git a/modules/starturl/starturl_test.go b/modules/starturl/starturl_test.go
index 78efa6a..54f899a 100644
--- a/modules/starturl/starturl_test.go
+++ b/modules/starturl/starturl_test.go
@@ -38,3 +38,86 @@ func TestStartURL(t *testing.T) {
require.Equal(t, "http://www.example.com/foo/bar", url)
require.Equal(t, 0, depth)
}
+
+func TestStartURL_MultipleStartingURLs(t *testing.T) {
+ testCases := []struct {
+ name string
+ startURLModFn func() *starturl.Module
+ urls []string
+ }{
+ {
+ name: ".URL and .URLs",
+ startURLModFn: func() *starturl.Module {
+ return &starturl.Module{
+ URL: "http://www.example.com/foo",
+ URLs: []string{
+ "http://www.example.com/bar",
+ "http://www.example.com/baz",
+ },
+ }
+ },
+ urls: []string{
+ "http://www.example.com/foo",
+ "http://www.example.com/bar",
+ "http://www.example.com/baz",
+ },
+ },
+ {
+ name: "only .URL",
+ startURLModFn: func() *starturl.Module {
+ return &starturl.Module{
+ URL: "http://www.example.com/foo",
+ }
+ },
+ urls: []string{
+ "http://www.example.com/foo",
+ },
+ },
+ {
+ name: "only .URLs",
+ startURLModFn: func() *starturl.Module {
+ return &starturl.Module{
+ URLs: []string{
+ "http://www.example.com/bar",
+ "http://www.example.com/baz",
+ },
+ }
+ },
+ urls: []string{
+ "http://www.example.com/bar",
+ "http://www.example.com/baz",
+ },
+ },
+ {
+ name: "empty",
+ startURLModFn: func() *starturl.Module {
+ return &starturl.Module{}
+ },
+ urls: []string{},
+ },
+ }
+
+ for _, tc := range testCases {
+ t.Run(tc.name, func(t *testing.T) {
+ urls := []string{}
+
+ mods := []flyscrape.Module{
+ tc.startURLModFn(),
+ hook.Module{
+ AdaptTransportFn: func(rt http.RoundTripper) http.RoundTripper {
+ return flyscrape.MockTransport(http.StatusOK, "")
+ },
+ BuildRequestFn: func(r *flyscrape.Request) {
+ urls = append(urls, r.URL)
+ },
+ },
+ }
+
+ scraper := flyscrape.NewScraper()
+ scraper.Modules = mods
+ scraper.Run()
+
+ require.ElementsMatch(t, tc.urls, urls)
+ })
+ }
+}