示例#1
0
def test_my_ratings(driver, django_db_blocker):
    # creating a video

    login(driver)

    with django_db_blocker.unblock():
        me = UserPreferences.objects.get(user__username=test_username)
        video_id1 = create_test_video()
        video_id2 = create_test_video()
        video_1 = Video.objects.get(video_id=video_id1)
        video_2 = Video.objects.get(video_id=video_id2)
        ExpertRating.objects.create(video_1=video_1,
                                    video_2=video_2,
                                    **{k: 50
                                       for k in VIDEO_FIELDS},
                                    user=me)

    open_more_menu(driver)

    WebDriverWait(driver, TIME_WAIT).until(
        EC.visibility_of_element_located((By.ID, 'video_details_menu')))

    print("Going to the details page")
    expert_interface_btn = driver.find_element_by_id('video_details_menu')
    expert_interface_btn.click()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'video_id_text_field')))

    elem = driver.find_element_by_class_name('video_id_text_field')
    elem = elem.find_element_by_tag_name('input')

    elem.clear()
    elem.send_keys(video_id1, Keys.HOME)
    if elem.get_attribute('value') != video_id1:
        elem.send_keys(3 * [Keys.DELETE])

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.CLASS_NAME, 'button_video_ratings')))

    # opening ratings page
    driver.find_element_by_class_name('button_video_ratings').click()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.ID, 'id_my_ratings')))

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'video_rating_video')))

    # have only 1 rating
    assert len(driver.find_elements_by_class_name('video_rating_video')) == 1

    # rerate
    driver.find_elements_by_class_name('video_rating_rerate')[0].click()

    # on the right page
    assert driver.current_url.split('/')[-2:] == [video_id1, video_id2]

    logout(driver)
示例#2
0
def test_thank_unthank(driver, django_db_blocker):
    with django_db_blocker.unblock():
        video_id = create_test_video()
        video = Video.objects.get(video_id=video_id)

        video_id1 = create_test_video()
        video1 = Video.objects.get(video_id=video_id1)

        domain = EmailDomain.objects.create(status=EmailDomain.STATUS_ACCEPTED,
                                            domain="@" +
                                            random_alphanumeric() + ".com")

        # creating a certified user with ratings of the video
        other_user = DjangoUser.objects.create_user(
            username=random_alphanumeric(), is_active=True)
        oup = UserPreferences.objects.create(user=other_user)
        oui = UserInformation.objects.create(user=other_user)

        ExpertRating.objects.create(user=oup, video_1=video, video_2=video1)

        ve = VerifiableEmail.objects.create(user=oui,
                                            email="aba" + domain.domain,
                                            is_verified=True)

    login(driver)

    open_more_menu(driver)

    WebDriverWait(driver, TIME_WAIT).until(
        EC.visibility_of_element_located((By.ID, 'video_details_menu')))

    print("Going to the details page")
    expert_interface_btn = driver.find_element_by_id('video_details_menu')
    expert_interface_btn.click()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'video_id_text_field')))

    elem = driver.find_element_by_class_name('video_id_text_field')
    elem = elem.find_element_by_tag_name('input')

    # setting the video ID
    elem.clear()
    elem.send_keys(video_id, Keys.HOME)
    if elem.get_attribute('value') != video_id:
        elem.send_keys(3 * [Keys.DELETE])

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.ID, f'id_{video_id}_thank')))

    driver.find_element_by_id(f'id_{video_id}_thank').click()

    with django_db_blocker.unblock():
        assert get_object_with_timeout(
            VideoRatingThankYou,
            video__video_id=video_id,
            thanks_from__user__username=test_username,
            thanks_to__user__username=other_user.username)
    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.ID, f'id_{video_id}_unthank')))

    driver.find_element_by_id(f'id_{video_id}_unthank').click()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.ID, f'id_{video_id}_thank')))

    with django_db_blocker.unblock():
        assert VideoRatingThankYou.objects.filter(
            video__video_id=video_id,
            thanks_from__user__username=test_username,
            thanks_to__user__username=other_user.username).count() == 0

    logout(driver)

    with django_db_blocker.unblock():
        Video.objects.filter(video_id=video_id).delete()
        Video.objects.filter(video_id=video_id1).delete()

        ve.delete()
        other_user.delete()
示例#3
0
def test_mention(driver, django_db_blocker):
    login(driver)

    with django_db_blocker.unblock():
        video_id = create_test_video()
        domain = EmailDomain.objects.create(status=EmailDomain.STATUS_ACCEPTED,
                                            domain="@" +
                                            random_alphanumeric() + ".com")
        ve = VerifiableEmail.objects.create(
            user=UserInformation.objects.get(user__username=test_username),
            email="aba" + domain.domain,
            is_verified=True)

    open_more_menu(driver)

    WebDriverWait(driver, TIME_WAIT).until(
        EC.visibility_of_element_located((By.ID, 'video_details_menu')))

    print("Going to the details page")
    expert_interface_btn = driver.find_element_by_id('video_details_menu')
    expert_interface_btn.click()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'video_id_text_field')))

    elem = driver.find_element_by_class_name('video_id_text_field')
    elem = elem.find_element_by_tag_name('input')

    # setting the video ID
    elem.clear()
    elem.send_keys(video_id, Keys.HOME)
    if elem.get_attribute('value') != video_id:
        elem.send_keys(3 * [Keys.DELETE])

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.CLASS_NAME, f'comment_editor_{video_id}_undefined')))

    # sending the comment
    editor = driver.find_element_by_class_name(
        f'comment_editor_{video_id}_undefined')
    editor.find_element_by_class_name('public-DraftEditor-content').send_keys(
        '@' + test_username)

    # selecting the mention suggestion
    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.CLASS_NAME, 'rdw-suggestion-option')))

    elems = driver.find_elements_by_class_name('rdw-suggestion-option')
    elems = [x for x in elems if test_username in x.text]
    assert len(elems) == 1

    WebDriverWait(driver, TIME_WAIT).until(EC.visibility_of(elems[0]))

    elems[0].click()

    action = webdriver.common.action_chains.ActionChains(driver)
    action.move_to_element_with_offset(elems[0], elems[0].rect['width'] / 2,
                                       elems[0].rect['height'] / 2)
    action.click()
    action.perform()
    WebDriverWait(driver,
                  TIME_WAIT).until(EC.invisibility_of_element(elems[0]))

    driver.find_elements_by_class_name(
        f'comment_editor_submit_{video_id}_undefined')[0].click()

    with django_db_blocker.unblock():
        assert get_object_with_timeout(VideoComment, video__video_id=video_id)

    # going to mentions...
    driver.find_element_by_id('personal_info_menu').click()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.ID, 'id_mentions')))

    driver.find_element_by_id('id_mentions').click()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.CLASS_NAME, 'class_li_comment_mention')))

    assert len(
        driver.find_elements_by_class_name('class_li_comment_mention')) == 1

    logout(driver)

    with django_db_blocker.unblock():
        Video.objects.filter(video_id=video_id).delete()
        ve.delete()
示例#4
0
def test_comments(driver, django_db_blocker):
    # creating a video

    with django_db_blocker.unblock():
        video_id = create_test_video()

    login(driver)

    open_more_menu(driver)

    with django_db_blocker.unblock():
        UserInformation.objects.filter(user__username=test_username).update(
            comment_anonymously=False)

    WebDriverWait(driver, TIME_WAIT).until(
        EC.visibility_of_element_located((By.ID, 'video_details_menu')))

    print("Going to the details page")
    expert_interface_btn = driver.find_element_by_id('video_details_menu')
    expert_interface_btn.click()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'video_id_text_field')))

    elem = driver.find_element_by_class_name('video_id_text_field')
    elem = elem.find_element_by_tag_name('input')

    # setting the video ID
    elem.clear()
    elem.send_keys(video_id, Keys.HOME)
    if elem.get_attribute('value') != video_id:
        elem.send_keys(3 * [Keys.DELETE])

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.CLASS_NAME, f'comment_editor_{video_id}_undefined')))

    # sending the comment
    editor = driver.find_element_by_class_name(
        f'comment_editor_{video_id}_undefined')
    editor.find_element_by_class_name('public-DraftEditor-content').send_keys(
        'sdf')
    driver.find_elements_by_class_name(
        f'comment_editor_submit_{video_id}_undefined')[0].click()

    # checking results
    with django_db_blocker.unblock():
        comment = get_object_with_timeout(VideoComment,
                                          video__video_id=video_id,
                                          parent_comment=None)
        assert comment.comment == "<p>sdf</p>"
        assert not comment.anonymous
        cid = VideoComment.objects.filter(video__video_id=video_id).get().id

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.CLASS_NAME, f'comment_{cid}_reply')))

    # replying to a comment
    driver.find_element_by_class_name(f'comment_{cid}_reply').click()
    driver.find_element_by_class_name(
        f'comment_editor_{video_id}_{cid}').find_element_by_class_name(
            'public-DraftEditor-content').send_keys('aba')
    driver.find_elements_by_class_name(
        f'comment_editor_submit_{video_id}_{cid}')[0].click()

    with django_db_blocker.unblock():
        subcid = get_object_with_timeout(VideoComment,
                                         video__video_id=video_id,
                                         parent_comment__id=cid).id

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.CLASS_NAME, f'comment_{subcid}_reply')))

    # replying to a reply anonymously
    driver.find_element_by_class_name(f'comment_{subcid}_reply').click()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.CLASS_NAME, f'comment_editor_{video_id}_{subcid}')))

    driver.find_element_by_class_name(
        f'comment_editor_{video_id}_{subcid}').find_element_by_class_name(
            'public-DraftEditor-content').send_keys('zzzaaa')
    checkbox = driver.find_element_by_class_name(
        f'anonymous_comment_checkbox_class_{video_id}_{subcid}')
    if not checkbox.find_element_by_tag_name('input').get_property('checked'):
        checkbox.click()
    driver.find_elements_by_class_name(
        f'comment_editor_submit_{video_id}_{subcid}')[0].click()

    with django_db_blocker.unblock():
        assert get_object_with_timeout(
            VideoComment, video__video_id=video_id,
            parent_comment__id=cid).comment == '<p>aba</p>'

        subsubc = get_object_with_timeout(VideoComment,
                                          video__video_id=video_id,
                                          parent_comment_id=subcid)
        assert subsubc.anonymous
        assert subsubc.comment == '<p>zzzaaa</p>'
    # editing the subcomment
    with django_db_blocker.unblock():
        ecid = get_object_with_timeout(VideoComment,
                                       video__video_id=video_id,
                                       parent_comment__id=cid).id

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.CLASS_NAME, f'comment_{ecid}_edit')))

    driver.find_element_by_class_name(f'comment_{ecid}_edit').click()
    elem = driver.find_element_by_class_name(
        f'comment_editor_cid_{ecid}').find_element_by_class_name(
            'public-DraftEditor-content')

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.CLASS_NAME, f'comment_editor_cid_{ecid}_editing')))

    elem.click()
    elem.send_keys('xyz')
    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.CLASS_NAME, f'comment_{ecid}_save_edits')))

    driver.find_element_by_class_name(f'comment_{ecid}_save_edits').click()
    with django_db_blocker.unblock():
        assert get_object_with_timeout(
            VideoComment, video__video_id=video_id,
            parent_comment__id=cid).comment.strip() == '<p>xyzaba</p>'

    # comment markers
    with django_db_blocker.unblock():
        assert VideoComment.objects.filter(
            video__video_id=video_id,
            parent_comment__id=cid).get().votes_plus == 0
    driver.find_element_by_class_name(f'vote_plus_comment_{ecid}').click()
    with django_db_blocker.unblock():
        assert VideoComment.objects.filter(
            video__video_id=video_id,
            parent_comment__id=cid).get().votes_plus == 1
    driver.find_element_by_class_name(f'vote_plus_comment_{ecid}').click()
    with django_db_blocker.unblock():
        assert VideoComment.objects.filter(
            video__video_id=video_id,
            parent_comment__id=cid).get().votes_plus == 0

    logout(driver)
def test_create_view_reports(driver, django_db_blocker):
    # creating a video

    with django_db_blocker.unblock():
        video_id = create_test_video()

    login(driver)

    open_more_menu(driver)

    WebDriverWait(driver, TIME_WAIT).until(
        EC.visibility_of_element_located((By.ID, 'video_details_menu')))

    print("Going to the details page")
    expert_interface_btn = driver.find_element_by_id('video_details_menu')
    expert_interface_btn.click()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'video_id_text_field')))

    elem = driver.find_element_by_class_name('video_id_text_field')
    elem = elem.find_elements_by_tag_name('input')[0]
    elem.clear()
    elem.send_keys(video_id, Keys.HOME)
    if elem.get_attribute('value') != video_id:
        elem.send_keys(3 * [Keys.DELETE])
    print("target id", video_id)
    assert elem.get_attribute('value') == video_id

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.CLASS_NAME, 'button_video_reports')))

    # going to reports page
    driver.find_element_by_class_name('button_video_reports').click()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'report_explanation')))

    assert not driver.find_elements_by_class_name('video_report_one_item')

    checked = {k: np.random.choice([True, False]) for k in VIDEO_REPORT_FIELDS}

    for k in VIDEO_REPORT_FIELDS:
        checkbox = driver.find_element_by_class_name(f'report_{k}_checkbox')
        if checked[k]:
            checkbox.click()
        assert checkbox.find_element_by_tag_name('input').get_property(
            'checked') == checked[k]

    driver.find_element_by_class_name(
        'report_explanation').find_element_by_tag_name('textarea').send_keys(
            "Test explanation")

    driver.find_element_by_class_name('report_submit').click()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.ID, 'id_report_submission_ok')))

    driver.refresh()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.CLASS_NAME, 'video_report_one_item')))

    assert len(
        driver.find_elements_by_class_name('video_report_one_item')) == 1

    with django_db_blocker.unblock():
        report = VideoReports.objects.get(video__video_id=video_id)
    assert report.explanation == "Test explanation"
    for k in VIDEO_REPORT_FIELDS:
        assert checked[k] == getattr(report, k)

    driver.refresh()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'report_explanation')))

    # REPORT EDITING
    checked_old = checked
    checked = {k: np.random.choice([True, False]) for k in VIDEO_REPORT_FIELDS}

    for k in VIDEO_REPORT_FIELDS:
        checkbox = driver.find_element_by_class_name(f'report_{k}_checkbox')
        if checked_old[k] != checked[k]:
            checkbox.click()
        assert checkbox.find_element_by_tag_name('input').get_property(
            'checked') == checked[k]

    elem = driver.find_element_by_class_name(
        'report_explanation').find_element_by_tag_name('textarea')
    elem.send_keys(" II")

    driver.find_element_by_class_name('report_submit').click()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.ID, 'id_report_submission_ok')))

    driver.refresh()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'report_explanation')))

    assert len(
        driver.find_elements_by_class_name('video_report_one_item')) == 1

    with django_db_blocker.unblock():
        report = VideoReports.objects.get(video__video_id=video_id)
    assert report.explanation == "Test explanation II"
    for k in VIDEO_REPORT_FIELDS:
        assert checked[k] == getattr(report, k)

    logout(driver)
def test_representative(driver, django_db_blocker):
    # creating 2 videos
    video_ids = []
    with django_db_blocker.unblock():
        for _ in range(2):
            video_ids.append(create_test_video())
        videos = [Video.objects.get(video_id=vid) for vid in video_ids]

    login(driver)

    with django_db_blocker.unblock():
        me = UserPreferences.objects.get(user__username=test_username)

    # creating ratings
    feature = VIDEO_FIELDS[0]
    other_values = {k: 50 for k in VIDEO_FIELDS if k != feature}
    with django_db_blocker.unblock():
        ExpertRating.objects.create(video_1=videos[0],
                                    video_2=videos[1],
                                    **other_values,
                                    **{feature: 0},
                                    user=me)  # left is better

        VideoRating.objects.create(video=videos[0],
                                   user=me,
                                   **{feature: 0},
                                   **other_values)
        VideoRating.objects.create(video=videos[1],
                                   user=me,
                                   **{feature: 100},
                                   **other_values)

    open_more_menu(driver)

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.ID, 'representative_menu')))

    driver.find_element_by_id('representative_menu').click()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.CLASS_NAME, 'representative_debug_slider')))

    sliders = driver.find_elements_by_class_name('representative_debug_slider')
    assert len(sliders) == 1

    set_slider_value(driver, slider=sliders[0], value=100)

    driver.find_element_by_class_name('representative_debug_submit').click()

    driver.refresh()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.ID, 'id_representative_interface_all')))

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.ID, 'id_representative_not_loading')))

    sliders = driver.find_elements_by_class_name('representative_debug_slider')
    assert len(sliders) == 0

    with django_db_blocker.unblock():
        assert ExpertRatingSliderChanges.objects.filter(
            context='DIS').count() > 0

    logout(driver)
示例#7
0
def test_cyclic_create_view_resolve(driver, django_db_blocker):
    # creating 3 videos
    video_ids = []
    with django_db_blocker.unblock():
        for _ in range(3):
            video_ids.append(create_test_video())
        videos = [Video.objects.get(video_id=vid) for vid in video_ids]

    login(driver)

    with django_db_blocker.unblock():
        me = UserPreferences.objects.get(user__username=test_username)

    # creating ratings
    feature = VIDEO_FIELDS[0]
    other_values = {k: 50 for k in VIDEO_FIELDS if k != feature}
    with django_db_blocker.unblock():
        ExpertRating.objects.create(video_1=videos[0],
                                    video_2=videos[1],
                                    **other_values,
                                    **{feature: 0},
                                    user=me)  # left is better
        ExpertRating.objects.create(video_1=videos[1],
                                    video_2=videos[2],
                                    **other_values,
                                    **{feature: 0},
                                    user=me)  # left is better
        ExpertRating.objects.create(video_1=videos[2],
                                    video_2=videos[0],
                                    **other_values,
                                    **{feature: 0},
                                    user=me)  # left is better

    open_more_menu(driver)

    WebDriverWait(driver, TIME_WAIT).until(
        EC.visibility_of_element_located((By.ID, 'inconsistencies_menu')))

    driver.find_element_by_id('inconsistencies_menu').click()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'inconsistency')))

    incons = driver.find_elements_by_class_name('inconsistency')

    assert len(incons) > 0

    for inc in incons:
        vids = inc.get_attribute('id').split('_')
        assert len(vids) == 2
        assert all([v in video_ids for v in vids])

    incons[0].find_element_by_class_name('inconsistency_slider')

    set_slider_value(
        driver,
        slider=incons[0].find_element_by_class_name('inconsistency_slider'),
        value=100)

    WebDriverWait(driver, TIME_WAIT).until(
        EC.element_to_be_clickable((By.CLASS_NAME, 'inconsistency_submit')))

    driver.find_element_by_class_name('inconsistency_submit').click()

    driver.refresh()

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located((By.ID, 'id_all_inconsistencies')))

    WebDriverWait(driver, TIME_WAIT).until(
        EC.presence_of_element_located(
            (By.ID, 'id_inconsistencies_not_loading')))

    incons = driver.find_elements_by_class_name('inconsistency')
    assert not incons

    with django_db_blocker.unblock():
        assert ExpertRatingSliderChanges.objects.filter(
            context='INC').count() > 0

    logout(driver)