Add more tests
This commit is contained in:
parent
c19cdf24b8
commit
8e24ac6a41
|
@ -5,13 +5,76 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func TestViewsRequest_buildDateTimeFilter(t *testing.T) {
|
||||||
|
t.Run("No DateTime filter", func(t *testing.T) {
|
||||||
|
request := &ViewsRequest{
|
||||||
|
from: "",
|
||||||
|
to: "",
|
||||||
|
}
|
||||||
|
namedArgs := &[]sql.NamedArg{}
|
||||||
|
if gotDateTimeFilter := request.buildDateTimeFilter(namedArgs);
|
||||||
|
gotDateTimeFilter != "" ||
|
||||||
|
len(*namedArgs) != 0 {
|
||||||
|
t.Errorf("ViewsRequest.buildDateTimeFilter(): Wrong return string or length of namedArgs, should be empty")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
t.Run("From filter", func(t *testing.T) {
|
||||||
|
request := &ViewsRequest{
|
||||||
|
from: "2019-01-01",
|
||||||
|
to: "",
|
||||||
|
}
|
||||||
|
namedArgs := &[]sql.NamedArg{}
|
||||||
|
if gotDateTimeFilter := request.buildDateTimeFilter(namedArgs);
|
||||||
|
gotDateTimeFilter != "datetime(time, 'localtime') >= :from" ||
|
||||||
|
len(*namedArgs) != 1 ||
|
||||||
|
(*namedArgs)[0].Name != "from" ||
|
||||||
|
(*namedArgs)[0].Value != "2019-01-01" {
|
||||||
|
t.Errorf("ViewsRequest.buildDateTimeFilter(): Wrong return string or namedArgs")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
t.Run("To filter", func(t *testing.T) {
|
||||||
|
request := &ViewsRequest{
|
||||||
|
from: "",
|
||||||
|
to: "2019-01-01",
|
||||||
|
}
|
||||||
|
namedArgs := &[]sql.NamedArg{}
|
||||||
|
if gotDateTimeFilter := request.buildDateTimeFilter(namedArgs);
|
||||||
|
gotDateTimeFilter != "datetime(time, 'localtime') <= :to" ||
|
||||||
|
len(*namedArgs) != 1 ||
|
||||||
|
(*namedArgs)[0].Name != "to" ||
|
||||||
|
(*namedArgs)[0].Value != "2019-01-01" {
|
||||||
|
t.Errorf("ViewsRequest.buildDateTimeFilter(): Wrong return string or namedArgs")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
t.Run("From & To filter", func(t *testing.T) {
|
||||||
|
request := &ViewsRequest{
|
||||||
|
from: "2018-01-01",
|
||||||
|
to: "2019-01-01",
|
||||||
|
}
|
||||||
|
namedArgs := &[]sql.NamedArg{}
|
||||||
|
if gotDateTimeFilter := request.buildDateTimeFilter(namedArgs);
|
||||||
|
gotDateTimeFilter != "datetime(time, 'localtime') between :from and :to" ||
|
||||||
|
len(*namedArgs) != 2 ||
|
||||||
|
(*namedArgs)[0].Name != "from" ||
|
||||||
|
(*namedArgs)[0].Value != "2018-01-01" ||
|
||||||
|
(*namedArgs)[1].Name != "to" ||
|
||||||
|
(*namedArgs)[1].Value != "2019-01-01" {
|
||||||
|
t.Errorf("ViewsRequest.buildDateTimeFilter(): Wrong return string or namedArgs")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func TestViewsRequest_buildUrlFilter(t *testing.T) {
|
func TestViewsRequest_buildUrlFilter(t *testing.T) {
|
||||||
t.Run("No url filter", func(t *testing.T) {
|
t.Run("No url filter", func(t *testing.T) {
|
||||||
request := &ViewsRequest{
|
request := &ViewsRequest{
|
||||||
url: "",
|
url: "",
|
||||||
}
|
}
|
||||||
namedArgs := &[]sql.NamedArg{}
|
namedArgs := &[]sql.NamedArg{}
|
||||||
if gotUrlFilter := request.buildUrlFilter(namedArgs); gotUrlFilter != "" || len(*namedArgs) != 0 {
|
if gotUrlFilter := request.buildUrlFilter(namedArgs);
|
||||||
|
gotUrlFilter != "" ||
|
||||||
|
len(*namedArgs) != 0 {
|
||||||
t.Errorf("ViewsRequest.buildUrlFilter(): Wrong return string or length of namedArgs, should be empty")
|
t.Errorf("ViewsRequest.buildUrlFilter(): Wrong return string or length of namedArgs, should be empty")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -20,7 +83,11 @@ func TestViewsRequest_buildUrlFilter(t *testing.T) {
|
||||||
url: "google",
|
url: "google",
|
||||||
}
|
}
|
||||||
namedArgs := &[]sql.NamedArg{}
|
namedArgs := &[]sql.NamedArg{}
|
||||||
if gotUrlFilter := request.buildUrlFilter(namedArgs); gotUrlFilter != "url like :url" || len(*namedArgs) != 1 || (*namedArgs)[0].Name != "url" || (*namedArgs)[0].Value != "%google%" {
|
if gotUrlFilter := request.buildUrlFilter(namedArgs);
|
||||||
|
gotUrlFilter != "url like :url" ||
|
||||||
|
len(*namedArgs) != 1 ||
|
||||||
|
(*namedArgs)[0].Name != "url" ||
|
||||||
|
(*namedArgs)[0].Value != "%google%" {
|
||||||
t.Errorf("ViewsRequest.buildUrlFilter(): Wrong return string or namedArgs")
|
t.Errorf("ViewsRequest.buildUrlFilter(): Wrong return string or namedArgs")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -32,7 +99,9 @@ func TestViewsRequest_buildRefFilter(t *testing.T) {
|
||||||
ref: "",
|
ref: "",
|
||||||
}
|
}
|
||||||
namedArgs := &[]sql.NamedArg{}
|
namedArgs := &[]sql.NamedArg{}
|
||||||
if gotRefFilter := request.buildRefFilter(namedArgs); gotRefFilter != "" || len(*namedArgs) != 0 {
|
if gotRefFilter := request.buildRefFilter(namedArgs);
|
||||||
|
gotRefFilter != "" ||
|
||||||
|
len(*namedArgs) != 0 {
|
||||||
t.Errorf("ViewsRequest.buildRefFilter(): Wrong return string or length of namedArgs, should be empty")
|
t.Errorf("ViewsRequest.buildRefFilter(): Wrong return string or length of namedArgs, should be empty")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -41,7 +110,11 @@ func TestViewsRequest_buildRefFilter(t *testing.T) {
|
||||||
ref: "google",
|
ref: "google",
|
||||||
}
|
}
|
||||||
namedArgs := &[]sql.NamedArg{}
|
namedArgs := &[]sql.NamedArg{}
|
||||||
if gotRefFilter := request.buildRefFilter(namedArgs); gotRefFilter != "ref like :ref" || len(*namedArgs) != 1 || (*namedArgs)[0].Name != "ref" || (*namedArgs)[0].Value != "%google%" {
|
if gotRefFilter := request.buildRefFilter(namedArgs);
|
||||||
|
gotRefFilter != "ref like :ref" ||
|
||||||
|
len(*namedArgs) != 1 ||
|
||||||
|
(*namedArgs)[0].Name != "ref" ||
|
||||||
|
(*namedArgs)[0].Value != "%google%" {
|
||||||
t.Errorf("ViewsRequest.buildRefFilter(): Wrong return string or namedArgs")
|
t.Errorf("ViewsRequest.buildRefFilter(): Wrong return string or namedArgs")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -53,7 +126,9 @@ func TestViewsRequest_buildUseragentFilter(t *testing.T) {
|
||||||
ua: "",
|
ua: "",
|
||||||
}
|
}
|
||||||
namedArgs := &[]sql.NamedArg{}
|
namedArgs := &[]sql.NamedArg{}
|
||||||
if gotUseragentFilter := request.buildUseragentFilter(namedArgs); gotUseragentFilter != "" || len(*namedArgs) != 0 {
|
if gotUseragentFilter := request.buildUseragentFilter(namedArgs);
|
||||||
|
gotUseragentFilter != "" ||
|
||||||
|
len(*namedArgs) != 0 {
|
||||||
t.Errorf("ViewsRequest.buildUseragentFilter(): Wrong return string or length of namedArgs, should be empty")
|
t.Errorf("ViewsRequest.buildUseragentFilter(): Wrong return string or length of namedArgs, should be empty")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -62,7 +137,11 @@ func TestViewsRequest_buildUseragentFilter(t *testing.T) {
|
||||||
ua: "Firefox",
|
ua: "Firefox",
|
||||||
}
|
}
|
||||||
namedArgs := &[]sql.NamedArg{}
|
namedArgs := &[]sql.NamedArg{}
|
||||||
if gotUseragentFilter := request.buildUseragentFilter(namedArgs); gotUseragentFilter != "useragent like :ua" || len(*namedArgs) != 1 || (*namedArgs)[0].Name != "ua" || (*namedArgs)[0].Value != "%Firefox%" {
|
if gotUseragentFilter := request.buildUseragentFilter(namedArgs);
|
||||||
|
gotUseragentFilter != "useragent like :ua" ||
|
||||||
|
len(*namedArgs) != 1 ||
|
||||||
|
(*namedArgs)[0].Name != "ua" ||
|
||||||
|
(*namedArgs)[0].Value != "%Firefox%" {
|
||||||
t.Errorf("ViewsRequest.buildUseragentFilter(): Wrong return string or namedArgs")
|
t.Errorf("ViewsRequest.buildUseragentFilter(): Wrong return string or namedArgs")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
4
main.go
4
main.go
|
@ -56,7 +56,7 @@ func setupRouter() {
|
||||||
staticRouter := app.router.PathPrefix("").Subrouter()
|
staticRouter := app.router.PathPrefix("").Subrouter()
|
||||||
staticRouter.Use(corsHandler)
|
staticRouter.Use(corsHandler)
|
||||||
staticRouter.HandleFunc("/kis3.js", serveTrackingScript)
|
staticRouter.HandleFunc("/kis3.js", serveTrackingScript)
|
||||||
staticRouter.PathPrefix("").Handler(http.HandlerFunc(sendHelloResponse))
|
staticRouter.PathPrefix("").Handler(http.HandlerFunc(HelloResponseHandler))
|
||||||
}
|
}
|
||||||
|
|
||||||
func startListening() {
|
func startListening() {
|
||||||
|
@ -77,7 +77,7 @@ func trackView(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func sendHelloResponse(w http.ResponseWriter, _ *http.Request) {
|
func HelloResponseHandler(w http.ResponseWriter, _ *http.Request) {
|
||||||
_, _ = fmt.Fprint(w, "Hello from KISSS")
|
_, _ = fmt.Fprint(w, "Hello from KISSS")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
"net/http/httptest"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestHelloResponseHandler(t *testing.T) {
|
||||||
|
t.Run("Hello response", func(t *testing.T) {
|
||||||
|
req, err := http.NewRequest("GET", "/", nil)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
rr := httptest.NewRecorder()
|
||||||
|
handler := http.HandlerFunc(HelloResponseHandler)
|
||||||
|
handler.ServeHTTP(rr, req)
|
||||||
|
if status := rr.Code; status != http.StatusOK {
|
||||||
|
t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusOK)
|
||||||
|
}
|
||||||
|
expected := "Hello from KISSS"
|
||||||
|
if rr.Body.String() != expected {
|
||||||
|
t.Errorf("handler returned unexpected body: got %v want %v", rr.Body.String(), expected)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
Reference in New Issue