Added more unit tests

This commit is contained in:
Pijus Kamandulis 2020-01-22 01:06:35 +02:00
parent 6e0e39ada2
commit 1782a2f12b
5 changed files with 123 additions and 20 deletions

36
models/config_test.go Normal file
View File

@ -0,0 +1,36 @@
package models
import (
testUtil "../unitTestUtil"
"testing"
)
func TestGetUsername(t *testing.T) {
testCaseDelegate := func(t *testing.T, url string, username string) {
tu := testUtil.TestUtil{T: t}
Config.URL = url
actual := GetUsername()
tu.AssertString(actual, username, "Username")
}
testVideoURL := func(t *testing.T) {
testCaseDelegate(t, "https://www.tiktok.com/@some_username/video/0000000000000000000", "some_username")
}
testProfileURL := func(t *testing.T) {
testCaseDelegate(t, "https://www.tiktok.com/@some_username", "some_username")
}
testPlainUsername := func(t *testing.T) {
testCaseDelegate(t, "some_username", "some_username")
}
testAtUsername := func(t *testing.T) {
testCaseDelegate(t, "@some_username", "some_username")
}
t.Run("Video URL", testVideoURL)
t.Run("Username URL", testProfileURL)
t.Run("Plain username", testPlainUsername)
t.Run("Username with @ suffix", testAtUsername)
}

View File

@ -1,36 +1,67 @@
package models package models
import "testing" import (
testUtil "../unitTestUtil"
utils "../utils"
"os"
"testing"
)
// TestParseUploads - Test parsing
func TestParseUploads(t *testing.T) { func TestParseUploads(t *testing.T) {
jsonStr := "[{\"shareLink\":\"some_share_link\", \"url\": \"some_url\"}]" tu := testUtil.TestUtil{T: t}
jsonStr := "[{\"url\":\"some_url\",\"shareLink\":\"some_share_link\",\"caption\":\"some_caption\",\"sound\":{\"title\":\"some_title\",\"link\":\"some_link\"}}]"
actual := ParseUploads(jsonStr) actual := ParseUploads(jsonStr)
expectedLen := 1 tu.AssertInt(len(actual), 1, "Array len")
if len(actual) != expectedLen {
t.Errorf("Array len incorrect: Expected %d, but got %d", expectedLen, len(actual))
}
expectedShareLink := "some_share_link" tu.AssertString(actual[0].URL, "some_url", "URL")
if actual[0].ShareLink != expectedShareLink { tu.AssertString(actual[0].Caption, "some_caption", "Caption")
t.Errorf("ShareLink is incorrect: Expected %s, but got %s", expectedShareLink, actual[0].ShareLink) tu.AssertString(actual[0].ShareLink, "some_share_link", "ShareLink")
}
expectedURL := "some_url" tu.AssertString(actual[0].Sound.Link, "some_link", "Sound.Link")
if actual[0].URL != expectedURL { tu.AssertString(actual[0].Sound.Title, "some_title", "Sound.Title")
t.Errorf("URL is incorrect: Expected %s, but got %s", expectedURL, actual[0].URL) }
}
func TestParseUpload(t *testing.T) {
tu := testUtil.TestUtil{T: t}
jsonStr := "{\"url\":\"some_url\",\"shareLink\":\"some_share_link\",\"caption\":\"some_caption\",\"sound\":{\"title\":\"some_title\",\"link\":\"some_link\"}}"
actual := ParseUpload(jsonStr)
tu.AssertString(actual.URL, "some_url", "URL")
tu.AssertString(actual.Caption, "some_caption", "Caption")
tu.AssertString(actual.ShareLink, "some_share_link", "ShareLink")
tu.AssertString(actual.Sound.Link, "some_link", "Sound.Link")
tu.AssertString(actual.Sound.Title, "some_title", "Sound.Title")
} }
func TestGetUploadID(t *testing.T) { func TestGetUploadID(t *testing.T) {
tu := testUtil.TestUtil{T: t}
var upload Upload var upload Upload
upload.ShareLink = "http://pikami.org/some_thing/some_upload_id" upload.ShareLink = "http://pikami.org/some_thing/some_upload_id"
expected := "some_upload_id"
actual := upload.GetUploadID() actual := upload.GetUploadID()
if actual != expected { tu.AssertString(actual, "some_upload_id", "Upload ID")
t.Errorf("UploadId is incorrect: Expected %s, but got %s", expected, actual) }
}
func TestWriteToFile(t *testing.T) {
tu := testUtil.TestUtil{T: t}
expected := "{\"url\":\"some_url\",\"shareLink\":\"some_share_link\",\"caption\":\"some_caption\",\"sound\":{\"title\":\"some_title\",\"link\":\"some_link\"}}"
filePath := "test_file.txt"
upload := Upload{
URL: "some_url",
Caption: "some_caption",
ShareLink: "some_share_link",
Sound: Sound{
Link: "some_link",
Title: "some_title",
},
}
upload.WriteToFile(filePath)
actual := utils.ReadFileToString(filePath)
tu.AssertString(actual, expected, "File content")
os.Remove(filePath)
} }

15
unitTestUtil/assert.go Normal file
View File

@ -0,0 +1,15 @@
package unittestutil
// AssertString - Check if two strings match
func (tu *TestUtil) AssertString(actual string, expected string, name string) {
if actual != expected {
tu.T.Errorf("%s is incorrect: Expected '%s', but got '%s'", name, expected, actual)
}
}
// AssertInt - Check if two intagers match
func (tu *TestUtil) AssertInt(actual int, expected int, name string) {
if actual != expected {
tu.T.Errorf("%s is incorrect: Expected '%d', but got '%d'", name, expected, actual)
}
}

View File

@ -0,0 +1,10 @@
package unittestutil
import (
"testing"
)
// TestUtil - Utility for testing
type TestUtil struct {
T *testing.T
}

View File

@ -1,6 +1,7 @@
package utils package utils
import ( import (
"io/ioutil"
"os" "os"
) )
@ -19,3 +20,13 @@ func InitOutputDirectory(path string) {
os.MkdirAll(path, os.ModePerm) os.MkdirAll(path, os.ModePerm)
} }
} }
// ReadFileToString - Reads file and returns content
func ReadFileToString(path string) string {
content, err := ioutil.ReadFile(path)
if err != nil {
panic(err)
}
return string(content)
}