aboutsummaryrefslogtreecommitdiff
path: root/referrer_test.go
diff options
context:
space:
mode:
authorFelix Hanley <felix@userspace.com.au>2020-05-12 07:00:36 +0000
committerFelix Hanley <felix@userspace.com.au>2020-05-12 07:00:36 +0000
commit848d1aa993e5bd25dd26eed67e6f7144f58ac198 (patch)
tree949afef2171793d06f9c96322f96bdc13f092d78 /referrer_test.go
parentf39a00443e2785862ec2042e00b7bbf42044227d (diff)
downloadsws-master.tar.gz
sws-master.tar.bz2
Fix referrer handlingHEADmaster
Diffstat (limited to 'referrer_test.go')
-rw-r--r--referrer_test.go73
1 files changed, 73 insertions, 0 deletions
diff --git a/referrer_test.go b/referrer_test.go
new file mode 100644
index 0000000..b2a9cb5
--- /dev/null
+++ b/referrer_test.go
@@ -0,0 +1,73 @@
+package sws
+
+import (
+ "testing"
+ "time"
+)
+
+func TestNewReferrerSet(t *testing.T) {
+ now := time.Now()
+ site := Site{Name: "example.com"}
+
+ tests := []struct {
+ hits []*Hit
+ expected ReferrerSet
+ }{
+ {
+ hits: []*Hit{
+ {CreatedAt: now, Referrer: strPtr("http://example1.com")},
+ {CreatedAt: now, Referrer: strPtr("http://example1.com")},
+ {CreatedAt: now, Referrer: strPtr("http://example2.com")},
+ },
+ expected: ReferrerSet{
+ &Referrer{Name: "example1.com", URL: "http://example1.com"},
+ &Referrer{Name: "example2.com", URL: "http://example2.com"},
+ },
+ },
+ {
+ hits: []*Hit{
+ {CreatedAt: now, Referrer: strPtr("http://example1.com")},
+ {CreatedAt: now, Referrer: strPtr("http://example1.com")},
+ {CreatedAt: now, Referrer: nil},
+ },
+ expected: ReferrerSet{
+ &Referrer{Name: "example1.com", URL: "http://example1.com"},
+ &Referrer{Name: "direct", URL: ""},
+ },
+ },
+ {
+ hits: []*Hit{
+ {CreatedAt: now, Referrer: strPtr("http://example1.com")},
+ {CreatedAt: now, Referrer: strPtr("http://example1.com")},
+ {CreatedAt: now, Referrer: strPtr("http://example.com")},
+ {CreatedAt: now, Referrer: strPtr("http://example2.com")},
+ },
+ expected: ReferrerSet{
+ &Referrer{Name: "example1.com", URL: "http://example1.com"},
+ &Referrer{Name: "example2.com", URL: "http://example2.com"},
+ },
+ },
+ }
+
+ for i, tt := range tests {
+ hs, err := NewHitSet(FromHits(tt.hits))
+ if err != nil {
+ t.Fatalf("%d => failed %s", i, err)
+ }
+ rs := NewReferrerSet(hs, site)
+
+ if len(*rs) != len(tt.expected) {
+ t.Errorf("%d => expected %d, got %d", i, len(tt.expected), len(*rs))
+ }
+ for j := range *rs {
+ if (*rs)[j].Name != tt.expected[j].Name {
+ t.Errorf("%d => expected %s, got %s", i, tt.expected[j].Name, (*rs)[j].Name)
+ }
+ if (*rs)[j].URL != tt.expected[j].URL {
+ t.Errorf("%d => expected %s, got %s", i, tt.expected[j].URL, (*rs)[j].URL)
+ }
+ }
+ }
+}
+
+func strPtr(s string) *string { return &s }