mirror of
https://github.com/283375/arcaea-offline.git
synced 2025-04-19 14:10:18 +00:00
111 lines
3.0 KiB
Python
111 lines
3.0 KiB
Python
"""
|
|
Database models v5
|
|
|
|
Chart functionalities
|
|
- basic data handling
|
|
- Difficulty song info overriding
|
|
"""
|
|
|
|
from arcaea_offline.constants.enums.arcaea import ArcaeaRatingClass
|
|
from arcaea_offline.database.models import (
|
|
Chart,
|
|
ChartInfo,
|
|
Difficulty,
|
|
ModelsV5Base,
|
|
ModelsV5ViewBase,
|
|
Pack,
|
|
Song,
|
|
)
|
|
|
|
|
|
class TestChart:
|
|
def init_db(self, session):
|
|
ModelsV5Base.metadata.create_all(session.bind)
|
|
ModelsV5ViewBase.metadata.create_all(session.bind)
|
|
|
|
def test_basic(self, db_session):
|
|
self.init_db(db_session)
|
|
|
|
pack_id = "test_pack"
|
|
song_id = "test_song"
|
|
rating_class = ArcaeaRatingClass.FUTURE
|
|
|
|
pack = Pack(id=pack_id, name="Test Pack")
|
|
song = Song(
|
|
idx=2,
|
|
id=song_id,
|
|
title="~TEST~",
|
|
artist="~test~",
|
|
pack_id=pack_id,
|
|
)
|
|
difficulty = Difficulty(
|
|
song_id=song_id,
|
|
rating_class=rating_class,
|
|
rating=9,
|
|
rating_plus=True,
|
|
)
|
|
chart_info = ChartInfo(
|
|
song_id=song_id,
|
|
rating_class=rating_class,
|
|
constant=98,
|
|
notes=980,
|
|
)
|
|
db_session.add_all([pack, song, difficulty, chart_info])
|
|
|
|
chart: Chart = (
|
|
db_session.query(Chart)
|
|
.where((Chart.song_id == song_id) & (Chart.rating_class == rating_class))
|
|
.one()
|
|
)
|
|
|
|
# `song_id` and `rating_class` are guarded by the WHERE clause above
|
|
assert chart.song_idx == song.idx
|
|
assert chart.title == song.title
|
|
assert chart.artist == song.artist
|
|
assert chart.pack_id == song.pack_id
|
|
assert chart.rating == difficulty.rating
|
|
assert chart.rating_plus == difficulty.rating_plus
|
|
assert chart.constant == chart_info.constant
|
|
assert chart.notes == chart_info.notes
|
|
|
|
def test_difficulty_override(self, db_session):
|
|
self.init_db(db_session)
|
|
|
|
pack_id = "test_pack"
|
|
song_id = "test_song"
|
|
rating_class = ArcaeaRatingClass.FUTURE
|
|
|
|
pack = Pack(id=pack_id, name="Test Pack")
|
|
song = Song(
|
|
idx=2,
|
|
id=song_id,
|
|
title="~TEST~",
|
|
artist="~test~",
|
|
pack_id=pack_id,
|
|
)
|
|
difficulty = Difficulty(
|
|
song_id=song_id,
|
|
rating_class=rating_class,
|
|
rating=9,
|
|
rating_plus=True,
|
|
title="~TEST DIFF~",
|
|
artist="~diff~",
|
|
)
|
|
chart_info = ChartInfo(
|
|
song_id=song_id,
|
|
rating_class=rating_class,
|
|
constant=98,
|
|
notes=980,
|
|
)
|
|
db_session.add_all([pack, song, difficulty, chart_info])
|
|
|
|
chart: Chart = (
|
|
db_session.query(Chart)
|
|
.where((Chart.song_id == song_id) & (Chart.rating_class == rating_class))
|
|
.one()
|
|
)
|
|
|
|
assert chart.song_idx == song.idx
|
|
assert chart.title == difficulty.title
|
|
assert chart.artist == difficulty.artist
|