added test with db, checking if it works in drone
This commit is contained in:
parent
762a04bb6f
commit
4a797c69ce
2 changed files with 75 additions and 4 deletions
|
@ -124,7 +124,7 @@ func getFilterResult(filter *Filter, db *gorm.DB) {
|
||||||
}
|
}
|
||||||
case "lowert":
|
case "lowert":
|
||||||
{
|
{
|
||||||
getFilterResultConditionLowerThan(filter, db)
|
getFilterResultConditionLowerThan(filter)
|
||||||
}
|
}
|
||||||
case "higherl":
|
case "higherl":
|
||||||
{
|
{
|
||||||
|
@ -136,7 +136,7 @@ func getFilterResult(filter *Filter, db *gorm.DB) {
|
||||||
}
|
}
|
||||||
case "highert":
|
case "highert":
|
||||||
{
|
{
|
||||||
getFilterResultConditionHigherThan(filter, db)
|
getFilterResultConditionHigherThan(filter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -456,6 +456,7 @@ func getFilterResultConditionDiff(filter *Filter, db *gorm.DB) {
|
||||||
db.Model(&FilterOutput{}).Order("time desc").Where("watch_id = ? AND name = ?", filter.WatchID, filter.Name).Limit(1).Find(&previousOutput)
|
db.Model(&FilterOutput{}).Order("time desc").Where("watch_id = ? AND name = ?", filter.WatchID, filter.Name).Limit(1).Find(&previousOutput)
|
||||||
for _, parent := range filter.Parents {
|
for _, parent := range filter.Parents {
|
||||||
for _, result := range parent.Results {
|
for _, result := range parent.Results {
|
||||||
|
|
||||||
if previousOutput.WatchID == 0 {
|
if previousOutput.WatchID == 0 {
|
||||||
filter.Results = append(filter.Results, result)
|
filter.Results = append(filter.Results, result)
|
||||||
} else if previousOutput.Value != result {
|
} else if previousOutput.Value != result {
|
||||||
|
@ -523,7 +524,7 @@ func getFilterResultConditionLowest(filter *Filter, db *gorm.DB) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getFilterResultConditionLowerThan(filter *Filter, db *gorm.DB) {
|
func getFilterResultConditionLowerThan(filter *Filter) {
|
||||||
if filter.Var2 == nil {
|
if filter.Var2 == nil {
|
||||||
log.Println("No threshold given for Lower Than Filter")
|
log.Println("No threshold given for Lower Than Filter")
|
||||||
return
|
return
|
||||||
|
@ -605,7 +606,7 @@ func getFilterResultConditionHighest(filter *Filter, db *gorm.DB) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getFilterResultConditionHigherThan(filter *Filter, db *gorm.DB) {
|
func getFilterResultConditionHigherThan(filter *Filter) {
|
||||||
if filter.Var2 == nil {
|
if filter.Var2 == nil {
|
||||||
log.Println("No threshold given for Higher Than Filter")
|
log.Println("No threshold given for Higher Than Filter")
|
||||||
return
|
return
|
||||||
|
|
|
@ -2,8 +2,13 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"gorm.io/driver/sqlite"
|
||||||
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
const HTML_STRING = `<html>
|
const HTML_STRING = `<html>
|
||||||
|
@ -450,3 +455,68 @@ func TestFilterRound(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getTestDB() *gorm.DB {
|
||||||
|
db, _ := gorm.Open(sqlite.Open("./test.db"))
|
||||||
|
db.AutoMigrate(&Watch{}, &Filter{}, &FilterConnection{}, &FilterOutput{})
|
||||||
|
return db
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestConditionDiff(t *testing.T) {
|
||||||
|
db := getTestDB()
|
||||||
|
var tests = []struct {
|
||||||
|
dbInput []FilterOutput
|
||||||
|
WatchID uint
|
||||||
|
Input []string
|
||||||
|
Want []string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
[]FilterOutput{
|
||||||
|
{
|
||||||
|
WatchID: 1,
|
||||||
|
Name: "Test",
|
||||||
|
Value: "Last",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
1,
|
||||||
|
[]string{"New"},
|
||||||
|
[]string{"New"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
[]FilterOutput{
|
||||||
|
{
|
||||||
|
WatchID: 2,
|
||||||
|
Name: "Test",
|
||||||
|
Value: "Same",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
2,
|
||||||
|
[]string{"Same"},
|
||||||
|
[]string{},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, test := range tests {
|
||||||
|
testname := fmt.Sprintf("%s", test.Input)
|
||||||
|
t.Run(testname, func(t *testing.T) {
|
||||||
|
db.Create(&test.dbInput)
|
||||||
|
filter := Filter{
|
||||||
|
WatchID: test.WatchID,
|
||||||
|
Name: "Test",
|
||||||
|
Parents: []*Filter{
|
||||||
|
{Results: test.Input},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
getFilterResultConditionDiff(
|
||||||
|
&filter,
|
||||||
|
db,
|
||||||
|
)
|
||||||
|
if (filter.Results != nil && test.Want != nil) && !reflect.DeepEqual(test.Want, filter.Results) {
|
||||||
|
t.Errorf("Got %s, want %s", filter.Results, test.Want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
err := os.Remove("./test.db")
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Could not remove test db:", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue