37 lines
1.5 KiB
Go
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)
|
|
}
|
|
}
|