import pytest
import mimetypes


def verify_summary(gb_api, httpserver, filename, expected_summary, custom_filename='', content_type='', delay=0.0):
    # guess content type
    if not content_type:
        content_type = mimetypes.guess_type(filename)[0]

    httpserver.serve_content(content=open(filename, 'rb').read(),
                             headers={'content-type': content_type})

    # format url
    file_url = httpserver.url + '/' + custom_filename

    # add url
    assert gb_api.add_url(file_url) == True

    if delay:
        from time import sleep
        sleep(delay)

    # verify result
    result = gb_api.search('url:' + file_url)
    assert len(result['results']) == 1
    print(result['results'][0]['sum'])
    assert result['results'][0]['sum'] == expected_summary


def emoticon_expected_summary():
    return 'Li Europan lingues es membres del sam familie. Lor separat existentie es un myth. ' \
            'Por scientie, musica, sport etc, litot Europa usa li sam vocabular. Li lingues …'


@pytest.mark.parametrize('filename, expected_summary', [
    # filename                         expected_summary
    ('summary_emoticon_start.html',    emoticon_expected_summary()),
    ('summary_emoticon_middle.html',   emoticon_expected_summary()),
    ('summary_emoticon_end.html',      emoticon_expected_summary()),
])
def test_title_emoticon(gb_api, httpserver, filename, expected_summary):
    verify_summary(gb_api, httpserver, 'data/html/' + filename, expected_summary)