Update collection tests

This commit is contained in:
JonnyWong16 2021-05-29 15:17:47 -07:00
parent ccc6091bb4
commit 40e4413dde
No known key found for this signature in database
GPG key ID: B1F1F9807184697A
2 changed files with 149 additions and 28 deletions

View file

@ -39,6 +39,23 @@ def test_Collection_attrs(collection):
assert utils.is_datetime(collection.updatedAt) assert utils.is_datetime(collection.updatedAt)
def test_Collection_section(collection, movies):
assert collection.section() == movies
def test_Collection_item(collection):
item1 = collection.item("Elephants Dream")
assert item1.title == "Elephants Dream"
item2 = collection.get("Elephants Dream")
assert item2.title == "Elephants Dream"
assert item1 == item2
def test_Collection_items(collection):
items = collection.items()
assert len(items) == 1
def test_Collection_modeUpdate(collection): def test_Collection_modeUpdate(collection):
mode_dict = {"default": -1, "hide": 0, "hideItems": 1, "showItems": 2} mode_dict = {"default": -1, "hide": 0, "hideItems": 1, "showItems": 2}
for key, value in mode_dict.items(): for key, value in mode_dict.items():
@ -61,40 +78,131 @@ def test_Collection_sortUpdate(collection):
collection.sortUpdate("release") collection.sortUpdate("release")
def test_Collection_edit(collection): def test_Collection_add_remove(collection, movies, show):
edits = {"titleSort.value": "New Title Sort", "titleSort.locked": 1} movie = movies.get("Big Buck Bunny")
collectionTitleSort = collection.titleSort assert movie not in collection
collection.edit(**edits) collection.addItems(movie)
collection.reload() collection.reload()
for field in collection.fields: assert movie in collection
if field.name == "titleSort": collection.removeItems(movie)
assert collection.titleSort == "New Title Sort" collection.reload()
assert field.locked is True assert movie not in collection
collection.edit(**{"titleSort.value": collectionTitleSort, "titleSort.locked": 0}) with pytest.raises(BadRequest):
collection.addItems(show)
def test_Collection_delete(movies): def test_Collection_edit(collection, movies):
delete_collection = "delete_collection" fields = {"title", "titleSort", "contentRating", "summary"}
movie = movies.get("Sintel") title = collection.title
movie.addCollection(delete_collection) titleSort = collection.titleSort
collections = movies.collections(title=delete_collection) contentRating = collection.contentRating
assert len(collections) == 1 summary = collection.summary
collections[0].delete()
collections = movies.collections(title=delete_collection) newTitle = "New Title"
assert len(collections) == 0 newTitleSort = "New Title Sort"
newContentRating = "New Content Rating"
newSummary = "New Summary"
collection.edit(
title=newTitle,
titleSort=newTitleSort,
contentRating=newContentRating,
summary=newSummary
)
collection.reload()
assert collection.title == newTitle
assert collection.titleSort == newTitleSort
assert collection.contentRating == newContentRating
assert collection.summary == newSummary
lockedFields = [f.locked for f in collection.fields if f.name in fields]
assert all(lockedFields)
collection.edit(
title=title,
titleSort=titleSort,
contentRating=contentRating or "",
summary=summary,
**{
"title.locked": 0,
"titleSort.locked": 0,
"contentRating.locked": 0,
"summary.locked": 0
}
)
# Cannot use collection.reload() since PlexObject.__setattr__()
# will not overwrite contentRating with None
collection = movies.collection("Test Collection")
assert collection.title == title
assert collection.titleSort == titleSort
assert collection.contentRating is None
assert collection.summary == summary
lockedFields = [f.locked for f in collection.fields if f.name in fields]
assert not any(lockedFields)
def test_Collection_item(collection): def test_Collection_create(plex, tvshows):
item1 = collection.item("Elephants Dream") title = "test_Collection_create"
assert item1.title == "Elephants Dream" try:
item2 = collection.get("Elephants Dream") collection = plex.createCollection(
assert item2.title == "Elephants Dream" title=title,
assert item1 == item2 section=tvshows,
items=tvshows.all()
)
assert collection in tvshows.collections()
assert collection.smart is False
finally:
collection.delete()
def test_Collection_items(collection): def test_Collection_createSmart(plex, tvshows):
items = collection.items() title = "test_Collection_createSmart"
assert len(items) == 1 try:
collection = plex.createCollection(
title=title,
section=tvshows,
smart=True,
limit=3,
libtype="episode",
sort="episode.index:desc",
filters={"show.title": "Game of Thrones"}
)
assert collection in tvshows.collections()
assert collection.smart is True
assert len(collection.items()) == 3
assert all([e.type == "episode" for e in collection.items()])
assert all([e.grandparentTitle == "Game of Thrones" for e in collection.items()])
assert collection.items() == sorted(collection.items(), key=lambda e: e.index, reverse=True)
collection.updateFilters(limit=5, libtype="episode", filters={"show.title": "The 100"})
collection.reload()
assert len(collection.items()) == 5
assert all([e.grandparentTitle == "The 100" for e in collection.items()])
finally:
collection.delete()
def test_Collection_exceptions(plex, movies, movie, artist):
title = 'test_Collection_exceptions'
try:
collection = plex.createCollection(title, movies, movie)
with pytest.raises(BadRequest):
collection.updateFilters()
with pytest.raises(BadRequest):
collection.addItems(artist)
finally:
collection.delete()
with pytest.raises(BadRequest):
plex.createCollection(title, movies, items=[])
with pytest.raises(BadRequest):
plex.createCollection(title, movies, items=[movie, artist])
try:
collection = plex.createCollection(title, smart=True, section=movies, **{'year>>': 2000})
with pytest.raises(BadRequest):
collection.addItems(movie)
with pytest.raises(BadRequest):
collection.removeItems(movie)
finally:
collection.delete()
def test_Collection_posters(collection): def test_Collection_posters(collection):
@ -104,7 +212,7 @@ def test_Collection_posters(collection):
def test_Collection_art(collection): def test_Collection_art(collection):
arts = collection.arts() arts = collection.arts()
assert not arts # Collection has no default art assert arts
def test_Collection_mixins_images(collection): def test_Collection_mixins_images(collection):

View file

@ -141,6 +141,19 @@ def test_create_playqueue_from_playlist(plex, album):
playlist.delete() playlist.delete()
def test_create_playqueue_from_collection(plex, music, album):
try:
collection = plex.createCollection("test_collection", music, album)
pq = collection.playQueue(shuffle=1)
assert pq.playQueueShuffled is True
assert len(collection) == len(album.tracks())
assert len(pq) == len(collection)
pq.addItem(collection.items()[0])
assert len(pq) == len(collection) + 1
finally:
collection.delete()
def test_lookup_playqueue(plex, movie): def test_lookup_playqueue(plex, movie):
pq = PlayQueue.create(plex, movie) pq = PlayQueue.create(plex, movie)
pq_id = pq.playQueueID pq_id = pq.playQueueID