diff options
| author | Felix Hanley <felix@userspace.com.au> | 2020-05-12 07:00:36 +0000 |
|---|---|---|
| committer | Felix Hanley <felix@userspace.com.au> | 2020-05-12 07:00:36 +0000 |
| commit | 848d1aa993e5bd25dd26eed67e6f7144f58ac198 (patch) | |
| tree | 949afef2171793d06f9c96322f96bdc13f092d78 /referrer_test.go | |
| parent | f39a00443e2785862ec2042e00b7bbf42044227d (diff) | |
| download | sws-master.tar.gz sws-master.tar.bz2 | |
Diffstat (limited to 'referrer_test.go')
| -rw-r--r-- | referrer_test.go | 73 |
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 } |
