2020-05-08 14:18:11 +02:00
|
|
|
package entity
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
2020-05-08 15:41:01 +02:00
|
|
|
|
2020-06-05 16:49:32 +02:00
|
|
|
"github.com/photoprism/photoprism/pkg/s2"
|
2020-05-08 15:41:01 +02:00
|
|
|
"github.com/stretchr/testify/assert"
|
2020-05-08 14:18:11 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestCreateUnknownPlace(t *testing.T) {
|
2020-05-25 19:10:44 +02:00
|
|
|
r := FirstOrCreatePlace(&UnknownPlace)
|
2020-05-08 14:18:11 +02:00
|
|
|
assert.True(t, r.Unknown())
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestFindPlaceByLabel(t *testing.T) {
|
|
|
|
t.Run("find by id", func(t *testing.T) {
|
2020-06-05 16:49:32 +02:00
|
|
|
r := FindPlace(s2.TokenPrefix+"1ef744d1e280", "")
|
2020-05-10 19:43:49 +02:00
|
|
|
|
|
|
|
if r == nil {
|
|
|
|
t.Fatal("result should not be nil")
|
|
|
|
}
|
|
|
|
|
2020-07-12 08:27:05 +02:00
|
|
|
assert.Equal(t, "de", r.PlaceCountry)
|
2020-05-08 14:18:11 +02:00
|
|
|
})
|
2020-05-15 13:15:10 +02:00
|
|
|
t.Run("find by id", func(t *testing.T) {
|
2020-06-05 16:49:32 +02:00
|
|
|
r := FindPlace(s2.TokenPrefix+"85d1ea7d3278", "")
|
2020-05-15 13:15:10 +02:00
|
|
|
|
|
|
|
if r == nil {
|
|
|
|
t.Fatal("result should not be nil")
|
|
|
|
}
|
2020-07-12 08:27:05 +02:00
|
|
|
assert.Equal(t, "mx", r.PlaceCountry)
|
2020-05-15 13:15:10 +02:00
|
|
|
})
|
2020-05-08 14:18:11 +02:00
|
|
|
t.Run("find by label", func(t *testing.T) {
|
2020-05-29 12:56:24 +02:00
|
|
|
r := FindPlace("", "KwaDukuza, KwaZulu-Natal, South Africa")
|
2020-05-10 19:43:49 +02:00
|
|
|
|
|
|
|
if r == nil {
|
|
|
|
t.Fatal("result should not be nil")
|
|
|
|
}
|
|
|
|
|
2020-07-12 08:27:05 +02:00
|
|
|
assert.Equal(t, "za", r.PlaceCountry)
|
2020-05-08 14:18:11 +02:00
|
|
|
})
|
|
|
|
t.Run("not matching", func(t *testing.T) {
|
2020-05-29 12:56:24 +02:00
|
|
|
r := FindPlace("111", "xxx")
|
2020-05-10 19:43:49 +02:00
|
|
|
|
2020-07-10 17:27:06 +02:00
|
|
|
if r != nil {
|
|
|
|
t.Fatal("result should be nil")
|
|
|
|
}
|
|
|
|
})
|
|
|
|
t.Run("not matching empty label", func(t *testing.T) {
|
|
|
|
r := FindPlace("111", "")
|
|
|
|
|
2020-05-10 19:43:49 +02:00
|
|
|
if r != nil {
|
|
|
|
t.Fatal("result should be nil")
|
|
|
|
}
|
2020-05-08 14:18:11 +02:00
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestPlace_Find(t *testing.T) {
|
|
|
|
t.Run("record exists", func(t *testing.T) {
|
2020-05-25 19:10:44 +02:00
|
|
|
m := PlaceFixtures.Get("mexico")
|
|
|
|
if err := m.Find(); err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
2020-05-08 14:18:11 +02:00
|
|
|
})
|
|
|
|
t.Run("record does not exist", func(t *testing.T) {
|
2020-05-08 15:41:01 +02:00
|
|
|
place := &Place{
|
2020-07-12 08:27:05 +02:00
|
|
|
ID: s2.TokenPrefix + "1110",
|
|
|
|
PlaceLabel: "test",
|
|
|
|
PlaceCity: "testCity",
|
|
|
|
PlaceState: "",
|
|
|
|
PlaceCountry: "",
|
|
|
|
PlaceKeywords: "",
|
|
|
|
PlaceFavorite: false,
|
|
|
|
PhotoCount: 0,
|
|
|
|
CreatedAt: Timestamp(),
|
|
|
|
UpdatedAt: Timestamp(),
|
2020-05-08 15:41:01 +02:00
|
|
|
}
|
2020-06-05 16:49:32 +02:00
|
|
|
err := place.Find()
|
|
|
|
assert.EqualError(t, err, "record not found")
|
2020-05-08 14:18:11 +02:00
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2020-05-25 19:10:44 +02:00
|
|
|
func TestFirstOrCreatePlace(t *testing.T) {
|
2020-07-10 17:27:06 +02:00
|
|
|
t.Run("existing place", func(t *testing.T) {
|
|
|
|
m := PlaceFixtures.Pointer("zinkwazi")
|
|
|
|
r := FirstOrCreatePlace(m)
|
2020-07-12 08:27:05 +02:00
|
|
|
assert.Equal(t, "KwaDukuza, KwaZulu-Natal, South Africa", r.PlaceLabel)
|
2020-07-10 17:27:06 +02:00
|
|
|
})
|
|
|
|
t.Run("ID empty", func(t *testing.T) {
|
|
|
|
p := &Place{ID: ""}
|
|
|
|
assert.Nil(t, FirstOrCreatePlace(p))
|
|
|
|
})
|
2020-07-12 08:27:05 +02:00
|
|
|
t.Run("PlaceLabel empty", func(t *testing.T) {
|
|
|
|
p := &Place{ID: "abcde44", PlaceLabel: ""}
|
2020-07-10 17:27:06 +02:00
|
|
|
assert.Nil(t, FirstOrCreatePlace(p))
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestPlace_LongCity(t *testing.T) {
|
|
|
|
t.Run("true", func(t *testing.T) {
|
2020-07-12 08:27:05 +02:00
|
|
|
p := Place{PlaceCity: "veryveryveryverylongcity"}
|
2020-07-10 17:27:06 +02:00
|
|
|
assert.True(t, p.LongCity())
|
|
|
|
})
|
|
|
|
t.Run("false", func(t *testing.T) {
|
2020-07-12 08:27:05 +02:00
|
|
|
p := Place{PlaceCity: "short"}
|
2020-07-10 17:27:06 +02:00
|
|
|
assert.False(t, p.LongCity())
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestPlace_NoCity(t *testing.T) {
|
|
|
|
t.Run("true", func(t *testing.T) {
|
2020-07-12 08:27:05 +02:00
|
|
|
p := Place{PlaceCity: ""}
|
2020-07-10 17:27:06 +02:00
|
|
|
assert.True(t, p.NoCity())
|
|
|
|
})
|
|
|
|
t.Run("false", func(t *testing.T) {
|
2020-07-12 08:27:05 +02:00
|
|
|
p := Place{PlaceCity: "short"}
|
2020-07-10 17:27:06 +02:00
|
|
|
assert.False(t, p.NoCity())
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestPlace_CityContains(t *testing.T) {
|
|
|
|
t.Run("true", func(t *testing.T) {
|
2020-07-12 08:27:05 +02:00
|
|
|
p := Place{PlaceCity: "Munich"}
|
2020-07-10 17:27:06 +02:00
|
|
|
assert.True(t, p.CityContains("Munich"))
|
|
|
|
})
|
|
|
|
t.Run("false", func(t *testing.T) {
|
2020-07-12 08:27:05 +02:00
|
|
|
p := Place{PlaceCity: "short"}
|
2020-07-10 17:27:06 +02:00
|
|
|
assert.False(t, p.CityContains("ich"))
|
|
|
|
})
|
2020-05-08 14:18:11 +02:00
|
|
|
}
|