import sys
sys.path.insert(0, '/opt/struktur/youtube-research')
import e2e_worker

class Track:
    def __init__(self, code, language, generated, text):
        self.language_code = code
        self.language = language
        self.is_generated = generated
        self.is_translatable = True
        self.text = text
    def fetch(self):
        return [{'text': self.text, 'start': 0, 'duration': 1}]

class Listing:
    def __init__(self, tracks): self.tracks = tracks
    def __iter__(self): return iter(self.tracks)

class API:
    def __init__(self, tracks): self.tracks = tracks
    def list(self, yid): return Listing(self.tracks)

def run(tracks):
    e2e_worker._transcript_api = lambda: (API(tracks), False)
    segs, meta = e2e_worker.fetch_transcript_with_meta('TEST')
    return meta['selected_track'], segs[0][3]

selected, text = run([
    Track('en', 'English', False, 'english manual'),
    Track('de', 'German', True, 'german auto'),
    Track('de', 'German', False, 'german manual'),
])
assert selected['language_code'] == 'de' and selected['is_generated'] is False and text == 'german manual'
selected, text = run([Track('en', 'English', False, 'english manual'), Track('de', 'German', True, 'german auto')])
assert selected['language_code'] == 'de' and selected['is_generated'] is True and text == 'german auto'
print('mock_track_selection=PASS')
