photoprism/internal/entity/place_test.go
Michael Mayer e1c45c4d5f Rename "location" to "geo" to have a short, common prefix for geo data
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-11 23:43:29 +02:00

132 lines
3 KiB
Go

package entity
import (
"testing"
"github.com/photoprism/photoprism/pkg/s2"
"github.com/stretchr/testify/assert"
)
func TestCreateUnknownPlace(t *testing.T) {
r := FirstOrCreatePlace(&UnknownPlace)
assert.True(t, r.Unknown())
}
func TestFindPlaceByLabel(t *testing.T) {
t.Run("find by id", func(t *testing.T) {
r := FindPlace(s2.TokenPrefix+"1ef744d1e280", "")
if r == nil {
t.Fatal("result should not be nil")
}
assert.Equal(t, "de", r.GeoCountry)
})
t.Run("find by id", func(t *testing.T) {
r := FindPlace(s2.TokenPrefix+"85d1ea7d3278", "")
if r == nil {
t.Fatal("result should not be nil")
}
assert.Equal(t, "mx", r.GeoCountry)
})
t.Run("find by label", func(t *testing.T) {
r := FindPlace("", "KwaDukuza, KwaZulu-Natal, South Africa")
if r == nil {
t.Fatal("result should not be nil")
}
assert.Equal(t, "za", r.GeoCountry)
})
t.Run("not matching", func(t *testing.T) {
r := FindPlace("111", "xxx")
if r != nil {
t.Fatal("result should be nil")
}
})
t.Run("not matching empty label", func(t *testing.T) {
r := FindPlace("111", "")
if r != nil {
t.Fatal("result should be nil")
}
})
}
func TestPlace_Find(t *testing.T) {
t.Run("record exists", func(t *testing.T) {
m := PlaceFixtures.Get("mexico")
if err := m.Find(); err != nil {
t.Fatal(err)
}
})
t.Run("record does not exist", func(t *testing.T) {
place := &Place{
ID: s2.TokenPrefix + "1110",
GeoLabel: "test",
GeoCity: "testCity",
GeoState: "",
GeoCountry: "",
GeoKeywords: "",
GeoNotes: "",
GeoFavorite: false,
PhotoCount: 0,
CreatedAt: Timestamp(),
UpdatedAt: Timestamp(),
New: false,
}
err := place.Find()
assert.EqualError(t, err, "record not found")
})
}
func TestFirstOrCreatePlace(t *testing.T) {
t.Run("existing place", func(t *testing.T) {
m := PlaceFixtures.Pointer("zinkwazi")
r := FirstOrCreatePlace(m)
assert.Equal(t, "KwaDukuza, KwaZulu-Natal, South Africa", r.GeoLabel)
})
t.Run("ID empty", func(t *testing.T) {
p := &Place{ID: ""}
assert.Nil(t, FirstOrCreatePlace(p))
})
t.Run("GeoLabel empty", func(t *testing.T) {
p := &Place{ID: "abcde44", GeoLabel: ""}
assert.Nil(t, FirstOrCreatePlace(p))
})
}
func TestPlace_LongCity(t *testing.T) {
t.Run("true", func(t *testing.T) {
p := Place{GeoCity: "veryveryveryverylongcity"}
assert.True(t, p.LongCity())
})
t.Run("false", func(t *testing.T) {
p := Place{GeoCity: "short"}
assert.False(t, p.LongCity())
})
}
func TestPlace_NoCity(t *testing.T) {
t.Run("true", func(t *testing.T) {
p := Place{GeoCity: ""}
assert.True(t, p.NoCity())
})
t.Run("false", func(t *testing.T) {
p := Place{GeoCity: "short"}
assert.False(t, p.NoCity())
})
}
func TestPlace_CityContains(t *testing.T) {
t.Run("true", func(t *testing.T) {
p := Place{GeoCity: "Munich"}
assert.True(t, p.CityContains("Munich"))
})
t.Run("false", func(t *testing.T) {
p := Place{GeoCity: "short"}
assert.False(t, p.CityContains("ich"))
})
}