Files
yovision/Sense/server/app/sense/area/service_test.go
T

37 lines
1.5 KiB
Go

package area
import (
"context"
"testing"
"yovision.local/sense/app/sense/admission"
"yovision.local/sense/app/sense/identity"
)
func TestVersionsConflictAndRecalibration(t *testing.T) {
service := NewService(NewMemoryStore())
width := 1920
service.profile = func(string, string) (admission.Profile, error) {
return admission.Profile{Width: width, Height: 1080}, nil
}
item, err := service.Create(context.Background(), identity.Principal{}, "device", "main", "区域", KindPolygon, "", []Point{{.1, .1}, {.9, .1}, {.5, .8}})
if err != nil {
t.Fatal(err)
}
updated, err := service.Update(context.Background(), identity.Principal{}, item.ID, "区域2", "", item.Points, item.Version, false)
if err != nil || updated.Version != 2 {
t.Fatalf("updated=%#v err=%v", updated, err)
}
if _, err := service.Update(context.Background(), identity.Principal{}, item.ID, "冲突", "", item.Points, item.Version, false); err != ErrConflict {
t.Fatalf("conflict err=%v", err)
}
width = 1280
flagged, err := service.Update(context.Background(), identity.Principal{}, item.ID, updated.Name, "", updated.Points, updated.Version, false)
if err != nil || !flagged.RecalibrationRequired {
t.Fatalf("flagged=%#v err=%v", flagged, err)
}
recalibrated, err := service.Update(context.Background(), identity.Principal{}, item.ID, updated.Name, "", updated.Points, flagged.Version, true)
if err != nil || recalibrated.RecalibrationRequired || recalibrated.Width != 1280 {
t.Fatalf("recalibrated=%#v err=%v", recalibrated, err)
}
}