def setUpClass(cls): super(TestCaseNoWorkflow, cls).setUpClass() cls.data_utils = data_helpers.DataHelpers() cls.video_lang_pg = video_language_page.VideoLanguagePage(cls) cls.video_pg = video_page.VideoPage(cls) cls.user = UserFactory.create() cls.owner = UserFactory.create() cls.team = TeamMemberFactory.create( team__translate_policy=20, #any team team__subtitle_policy=20, #any team user=cls.owner, ).team cls.admin = TeamAdminMemberFactory(team=cls.team).user cls.contributor = TeamMemberFactory(team=cls.team).user cls.subs_dir = os.path.join(os.getcwd(), 'apps', 'webdriver_testing', 'subtitle_data')
def setUpClass(cls): super(TestCaseTaskFreeDashboard, cls).setUpClass() cls.data_utils = data_helpers.DataHelpers() cls.dashboard_tab = dashboard_tab.DashboardTab(cls) cls.logger.info('setup: Create a team and team owner, add some videos') cls.team_owner = UserFactory() cls.team = TeamMemberFactory.create(user=cls.team_owner, ).team #Add some videos with various languages required. test_videos = [('jaws.mp4', 'fr', 'fr'), ('Birds_short.oggtheora.ogg', None, None), ('fireplace.mp4', 'en', 'en')] for vid in test_videos: vidurl_data = { 'url': ('http://qa.pculture.org/amara_tests/%s' % vid[0]), 'video__title': vid[0] } video = cls.data_utils.create_video(**vidurl_data) if vid[1] is not None: video_data = { 'language_code': vid[1], 'video_language': vid[2], 'video': video.pk, 'draft': open('apps/webdriver_testing/subtitle_data/' 'Timed_text.sv.dfxp'), 'is_complete': True } cls.data_utils.upload_subs(video, video_data) TeamVideoFactory(video=video, team=cls.team, added_by=cls.team_owner) cls.logger.info( 'setup: Create team members Polly Glott and Mono Glot.') cls.polly_glott = TeamContributorMemberFactory.create( team=cls.team, user=UserFactory(username='******')).user cls.mono_glot = TeamContributorMemberFactory.create( team=cls.team, user=UserFactory(username='******')).user
def test_edit__change_team(self): """Edit a video, changing it from 1 team to another. """ video_title = 'qs1-not-transback' team2 = TeamMemberFactory.create(user=self.team_owner).team videos = self.data_utils.create_several_team_videos_with_subs( self.team, self.manager_user) self.videos_tab.log_in(self.team_owner.username, 'password') self.videos_tab.open_videos_tab(self.team.slug) self.videos_tab.search(video_title) self.videos_tab.edit_video( video=video_title, team=team2.name, ) self.videos_tab.open_videos_tab(team2.slug) self.assertTrue(self.videos_tab.video_present(video_title))
def setUpClass(cls): super(TestCaseBilling, cls).setUpClass() cls.data_utils = data_helpers.DataHelpers() cls.billing_pg = billing_page.BillingPage(cls) cls.terri = UserFactory.create(username='******', is_staff=True, is_superuser=True) cls.user = UserFactory.create() cls.team = TeamMemberFactory.create(user=cls.user).team cls.subs_data_dir = os.path.join(os.getcwd(), 'apps', 'webdriver_testing', 'subtitle_data') cls.video, cls.tv = cls._create_tv_with_original_subs( cls.user, cls.team) cls._upload_sv_translation(cls.video, cls.user, complete=True) cls.bill_dict = cls.create_team_bill() cls.billing_pg.open_billing_page() cls.billing_pg.log_in(cls.terri.username, 'password')
def test_user(self): """User credit with subtitles is listed in the record. """ testuser = TeamMemberFactory.create().user video, tv = self._create_tv_with_original_subs(self.user, self.team) self._upload_sv_translation(video, testuser, complete=True) report = BillingFactory(start_date=(datetime.date.today() - datetime.timedelta(1)), end_date=datetime.datetime.now(), ) report.teams=[self.team] report.save() report.process() bill = 'user-data/%s' % report.csv_file bill_dict = self._bill_dict(bill) self.assertEqual(self.user.username, bill_dict[video.video_id]['en']['User']) self.assertEqual(testuser.username, bill_dict[video.video_id]['sv']['User'])
def setUpClass(cls): super(TestCaseMembersTab, cls).setUpClass() cls.team_dir_pg = TeamsDirPage(cls) cls.user_message_pg = user_messages_page.UserMessagesPage(cls) cls.members_tab = members_tab.MembersTab(cls) cls.team_owner = UserFactory.create() cls.team = TeamMemberFactory.create( team__name='Members tab roles Test', user=cls.team_owner).team cls.promoted_manager = TeamContributorMemberFactory.create( team=cls.team, user=UserFactory()).user cls.promoted_admin = TeamContributorMemberFactory.create( team=cls.team, user=UserFactory()).user cls.project = TeamProjectFactory.create( team=cls.team, workflow_enabled=True, ) cls.members_tab.open_members_page(cls.team.slug)
def setUpClass(cls): super(TestCaseDraftVideos, cls).setUpClass() cls.data_utils = data_helpers.DataHelpers() cls.video_pg = video_page.VideoPage(cls) cls.video_lang_pg = video_language_page.VideoLanguagePage(cls) cls.menu = unisubs_menu.UnisubsMenu(cls) cls.create_modal = dialogs.CreateLanguageSelection(cls) cls.user = UserFactory(username='******', is_partner=True) cls.data_utils.create_user_api_key(cls.user) #Add a team with workflows, tasks and preferred languages cls.logger.info('setup: Create a team with tasks enabled') cls.team = TeamMemberFactory.create( team__workflow_enabled=True, team__subtitle_policy=20, team__translate_policy=20, user=cls.user, ).team cls.team_workflow = WorkflowFactory( team=cls.team, autocreate_subtitle=True, autocreate_translate=True, approve_allowed=10, review_allowed=10, ) cls.member = TeamContributorMemberFactory.create( team=cls.team, user=UserFactory(username='******')).user cls.nonmember = UserFactory() #Add video to team with draft subtitles cls.logger.info('Setup: Add video to team with draft subs.') cls.draft = TeamVideoFactory.create( team=cls.team, video=cls.data_utils.create_video(), added_by=cls.user).video cls.data_utils.upload_subs(cls.draft, data=None, user=dict(username=cls.user.username, password='******')) cls.video_pg.open_video_page(cls.draft.video_id) cls.video_pg.set_skiphowto()
def setUpClass(cls): super(TestCaseTeamMemberResource, cls).setUpClass() cls.data_utils = data_helpers.DataHelpers() cls.user = UserFactory.create(username='******', is_partner=True) cls.team_member = UserFactory.create(username='******') cls.data_utils.create_user_api_key(cls.user) #create an open team with description text and 2 members cls.open_team = TeamMemberFactory.create( team__name="A1 Waay Cool team", team__slug='a1-waay-cool-team', team__description='this is the coolest, most creative team ever', user=cls.user, ).team TeamContributorMemberFactory.create( team=cls.open_team, user=UserFactory.create(username='******')) #Open to the teams page so you can see what's there. cls.teams_dir_pg = TeamsDirPage(cls) cls.teams_dir_pg.open_teams_page()
def setUpClass(cls): super(TestCaseVideosDisplay, cls).setUpClass() #management.call_command('flush', interactive=False) cls.data_utils = data_helpers.DataHelpers() cls.videos_tab = videos_tab.VideosTab(cls) cls.tasks_tab = TasksTab(cls) cls.team_owner = UserFactory.create() cls.logger.info('Creating team limited access: workflows enabled, ' 'video policy set to manager and admin, ' 'task assign policy set to manager and admin, ' 'membership policy open.') cls.limited_access_team = TeamMemberFactory.create( team__membership_policy=4, #open team__video_policy=2, #manager and admin team__task_assign_policy=20, #manager and admin team__workflow_enabled=True, user=cls.team_owner, ).team cls.videos_tab.open_page(cls.limited_access_team.slug)
def setUpClass(cls): super(TestCaseMessages, cls).setUpClass() cls.data_utils = data_helpers.DataHelpers() cls.user = UserFactory.create() cls.data_utils.create_user_api_key(cls.user) cls.open_team = TeamMemberFactory.create( team__name="A1 Waay Cool team", team__slug='a1-waay-cool-team', team__description='this is the coolest, most creative team ever', user=cls.user, ).team cls.team_member = UserFactory.create(username='******') TeamContributorMemberFactory.create(team=cls.open_team, user=cls.team_member) for x in range(3): TeamContributorMemberFactory.create(team=cls.open_team, user=UserFactory.create()) cls.second_user = UserFactory.create(username='******') cls.messages_pg = user_messages_page.UserMessagesPage(cls) cls.messages_pg.open_messages()
def setUpClass(cls): super(TestCaseTeamMessages, cls).setUpClass() cls.a_team_pg = ATeamPage(cls) cls.members_tab = members_tab.MembersTab(cls) cls.messages_tab = messages_tab.MessagesTab(cls) cls.user_message_pg = user_messages_page.UserMessagesPage(cls) cls.non_member = UserFactory.create(username='******') cls.team_owner = UserFactory.create(is_partner=True) #CREATE AN APPLICATION-ONLY TEAM cls.team = TeamMemberFactory.create( team__membership_policy=1, user=cls.team_owner, ).team cls.team_member = TeamContributorMemberFactory.create( user=UserFactory(), team=cls.team).user #ADD THE TEST MESSAGES TO THE TEST TEAM cls.members_tab.open_members_page(cls.team.slug) cls.members_tab.log_in(cls.team_owner.username, 'password') cls.messages_tab.open_messages_tab(cls.team.slug) cls.messages_tab.edit_messages(cls._TEST_MESSAGES)
def setUpClass(cls): super(TestCaseTasksEnabledDashboard, cls).setUpClass() cls.data_utils = data_helpers.DataHelpers() cls.sub_editor = subtitle_editor.SubtitleEditor(cls) cls.create_modal = dialogs.CreateLanguageSelection(cls) cls.dashboard_tab = dashboard_tab.DashboardTab(cls) cls.user = UserFactory(username='******', is_partner=True) cls.data_utils.create_user_api_key(cls.user) cls.subs_file = os.path.join( os.path.dirname(os.path.abspath(__file__)), 'oneline.txt') #Add a team with workflows, tasks and preferred languages cls.logger.info('setup: Create a team with tasks enabled') cls.team = TeamMemberFactory.create( team__name='Tasks Enabled', team__slug='tasks-enabled', team__workflow_enabled=True, user=cls.user, ).team cls.team_workflow = WorkflowFactory( team=cls.team, autocreate_subtitle=True, autocreate_translate=True, ) cls.team_workflow.review_allowed = 10 cls.team_workflow.save() cls.logger.info('setup: Add some preferred languages to the team.') lang_list = ['en', 'ru', 'pt-br', 'fr', 'de', 'es'] for language in lang_list: TeamLangPrefFactory.create(team=cls.team, language_code=language, preferred=True) #Create some users with different roles and languages. polly_speaks = ['en', 'fr', 'ru', 'ar'] cls.logger.info("setup: Create user Polly who speaks: %s" % polly_speaks) cls.polly_glott = TeamContributorMemberFactory.create( team=cls.team, user=UserFactory(username='******')).user cls.logger.info("setup: Create manager reviewer who speaks: %s" % polly_speaks) cls.reviewer = TeamManagerMemberFactory.create( team=cls.team, user=UserFactory(username='******')).user for lang in polly_speaks: UserLangFactory(user=cls.polly_glott, language=lang) UserLangFactory(user=cls.reviewer, language=lang) #Add some videos with various languages required. cls.logger.info('setup: Add some videos and set primary audio lang.') d = { 'url': 'http://qa.pculture.org/amara_tests/Birds_short.mp4', 'video__title': 'Short Birds MP4', 'video__primary_audio_language_code': 'en' } cls.non_team_video = cls.data_utils.create_video(**d) test_videos = [('jaws.mp4', 'fr'), ('Birds_short.oggtheora.ogg', 'de'), ('fireplace.mp4', 'en'), ('penguins.webm', None), ('trailer.webm', 'en')] cls.vid_obj_list = [] for vid in test_videos: vidurl_data = { 'url': 'http://qa.pculture.org/amara_tests/%s' % vid[0], 'video__title': vid[0] } video = cls.data_utils.create_video(**vidurl_data) if vid[1] is not None: video.primary_audio_language_code = vid[1] video.save() cls.vid_obj_list.append(video) team_video = TeamVideoFactory(video=video, team=cls.team, added_by=cls.polly_glott)
def setUpClass(cls): super(TestCaseWorkflows, cls).setUpClass() cls.data_utils = data_helpers.DataHelpers() cls.video_lang_pg = video_language_page.VideoLanguagePage(cls) cls.video_pg = video_page.VideoPage(cls) cls.user = UserFactory.create() cls.owner = UserFactory.create() cls.basic_team = TeamMemberFactory.create( team__workflow_enabled=False, team__translate_policy=20, #any team team__subtitle_policy=20, #any team user=cls.owner, ).team cls.team = TeamMemberFactory.create( team__workflow_enabled=True, team__translate_policy=20, #any team team__subtitle_policy=20, #any team team__task_assign_policy=10, #any team user=cls.owner, ).team cls.workflow = WorkflowFactory( team=cls.team, autocreate_subtitle=True, autocreate_translate=True, approve_allowed=10, # manager review_allowed=10, # peer ) lang_list = ['en', 'ru', 'pt-br', 'de', 'sv'] for language in lang_list: TeamLangPrefFactory.create(team=cls.team, language_code=language, preferred=True) cls.admin = TeamAdminMemberFactory(team=cls.team).user cls.contributor = TeamContributorMemberFactory(team=cls.team).user cls.subs_dir = os.path.join(os.getcwd(), 'apps', 'webdriver_testing', 'subtitle_data') cls.rev1 = os.path.join(cls.subs_dir, 'Timed_text.en.srt') cls.rev2 = os.path.join(cls.subs_dir, 'Timed_text.rev2.en.srt') de = os.path.join(cls.subs_dir, 'Timed_text.rev3.en.srt') cls.sv = os.path.join(cls.subs_dir, 'Timed_text.sv.dfxp') #Create en source language 2 revisions - approved. cls.video, cls.tv = cls._add_team_video() cls._upload_subtitles(cls.video, 'en', cls.rev1, cls.contributor, complete=False) cls._upload_subtitles(cls.video, 'en', cls.rev2, cls.contributor) cls.data_utils.complete_review_task(cls.tv, 20, cls.admin) cls.data_utils.complete_approve_task(cls.tv, 20, cls.admin) #Add sv translation, reviewed cls._upload_translation(cls.video, 'sv', cls.sv, cls.contributor) cls.data_utils.complete_review_task(cls.tv, 20, cls.admin) #Add de translation complete waiting review cls._upload_translation(cls.video, 'de', cls.sv, cls.contributor) #Add ru translation, incomplete. cls._upload_translation(cls.video, 'ru', cls.sv, cls.contributor, complete=False) cls.video.subtitle_language('en').clear_tip_cache() sl_sv = cls.video.subtitle_language('sv').clear_tip_cache() cls.video_lang_pg.open_video_lang_page(cls.video.video_id, 'en')
def setUpClass(cls): super(TestCaseDeletion, cls).setUpClass() cls.data_utils = data_helpers.DataHelpers() cls.video_lang_pg = video_language_page.VideoLanguagePage(cls) cls.video_pg = video_page.VideoPage(cls) cls.tasks_tab = TasksTab(cls) cls.watch_pg = watch_page.WatchPage(cls) cls.sub_editor = subtitle_editor.SubtitleEditor(cls) cls.user = UserFactory.create() cls.owner = UserFactory.create() cls.team = TeamMemberFactory.create( team__workflow_enabled=True, team__translate_policy=20, #any team team__subtitle_policy=20, #any team team__task_assign_policy=10, #any team user=cls.owner, ).team cls.workflow = WorkflowFactory( team=cls.team, autocreate_subtitle=True, autocreate_translate=True, approve_allowed=10, # manager review_allowed=10, # peer ) lang_list = ['en', 'ru', 'pt-br', 'de', 'sv'] for language in lang_list: TeamLangPrefFactory.create(team=cls.team, language_code=language, preferred=True) cls.admin = TeamAdminMemberFactory(team=cls.team).user cls.contributor = TeamContributorMemberFactory(team=cls.team).user cls.subs_dir = os.path.join(os.getcwd(), 'apps', 'webdriver_testing', 'subtitle_data') cls.rev1 = os.path.join(cls.subs_dir, 'Timed_text.en.srt') cls.rev2 = os.path.join(cls.subs_dir, 'Timed_text.rev2.en.srt') cls.sv = os.path.join(cls.subs_dir, 'Timed_text.sv.dfxp') ru = os.path.join(cls.subs_dir, 'less_lines.ssa') cls.logger.info(""" Create video with en as primary audio lang. Subtitle, review and approve. Translate to: sv: reviewed de: complete, needs review ru: incomplete Delete Subtitle Language en + sv and de. """) #Create en source language 2 revisions - approved. cls.video, cls.tv = cls._add_team_video() cls._upload_subtitles(cls.video, 'en', cls.rev1, cls.contributor, complete=False) cls._upload_subtitles(cls.video, 'en', cls.rev2, cls.contributor) cls.data_utils.complete_review_task(cls.tv, 20, cls.admin) cls.data_utils.complete_approve_task(cls.tv, 20, cls.admin) #Add sv translation, reviewed cls._upload_translation(cls.video, 'sv', cls.sv, cls.contributor) cls.data_utils.complete_review_task(cls.tv, 20, cls.admin) #Add it translation, reviewed cls._upload_translation(cls.video, 'it', cls.sv, cls.contributor) cls.data_utils.complete_review_task(cls.tv, 20, cls.admin) #Add hr translation, needs review cls._upload_translation(cls.video, 'hr', cls.sv, cls.contributor) #Add de translation complete waiting review cls._upload_translation(cls.video, 'de', cls.sv, cls.contributor) #Add ru translation, incomplete. cls._upload_translation(cls.video, 'ru', cls.sv, cls.contributor, complete=False) cls.video_lang_pg.open_video_lang_page(cls.video.video_id, 'en') cls.video_lang_pg.log_in(cls.owner.username, 'password') cls.video_lang_pg.page_refresh() #Delete English subtitle language + Swedish and German cls.video_lang_pg.delete_subtitle_language(['Swedish', 'German']) management.call_command('update_index', interactive=False) management.call_command('update_video_metadata')
def setUpClass(cls): super(TestCaseUnpublishLast, cls).setUpClass() cls.data_utils = data_helpers.DataHelpers() cls.create_modal = dialogs.CreateLanguageSelection(cls) cls.sub_editor = subtitle_editor.SubtitleEditor(cls) cls.tasks_tab = TasksTab(cls) cls.video_pg = video_page.VideoPage(cls) cls.watch_pg = watch_page.WatchPage(cls) cls.user = UserFactory.create() cls.owner = UserFactory.create() cls.team = TeamMemberFactory.create( team__workflow_enabled=True, team__translate_policy=20, #any team team__subtitle_policy=20, #any team team__task_assign_policy=10, #any team user=cls.owner, ).team cls.workflow = WorkflowFactory( team=cls.team, autocreate_subtitle=True, autocreate_translate=True, approve_allowed=10, # manager review_allowed=10, # peer ) lang_list = ['en', 'ru', 'pt-br', 'de', 'sv'] for language in lang_list: TeamLangPrefFactory.create(team=cls.team, language_code=language, preferred=True) cls.admin = TeamAdminMemberFactory(team=cls.team).user cls.contributor = TeamMemberFactory(team=cls.team).user cls.subs_dir = os.path.join(os.getcwd(), 'apps', 'webdriver_testing', 'subtitle_data') cls.video, cls.tv = cls.create_source_with_multiple_revisions() translation = os.path.join(cls.subs_dir, 'Timed_text.sv.dfxp') #Upload subs - sv - incomplete, de - reviewed, ru - complete needs review cls.logger.info("""Uploading subs to get tasks in various stages: """) cls.logger.info(""" sv: translation started, incomplete ru: translation submitted, needs review de: translation reviewed, needs approve pt-br: not started """) cls._upload_lang(cls.video, translation, 'sv', cls.contributor) cls._upload_lang(cls.video, translation, 'de', cls.contributor, complete=True) cls.data_utils.complete_review_task(cls.tv, 20, cls.admin) cls._upload_lang(cls.video, translation, 'ru', cls.contributor, complete=True) cls.logger.info('Setting visibility override on v3 to private') cls.en = cls.video.subtitle_language('en') en_v3 = cls.en.get_tip(full=True) en_v3.visibility_override = 'private' en_v3.save() cls.tasks_tab.open_page('teams/%s/tasks/?lang=all&assignee=anyone' % cls.team.slug)
def setUpClass(cls): super(TestCaseTeamsPage, cls).setUpClass() cls.COOL_TEAM_NAME = "A1 Waay Cool team" #CREATE A USER cls.cool_user = UserFactory.create(username='******', password='******') cls.logger.info("creating some teams for testing") #create 5 open teams for x in range(5): TeamMemberFactory.create(team__name='my team ' + str(x), team__slug='my-team-' + str(x), user__username='******' + str(x), user__password='******') #create an open team with description text and 2 members cls.team = TeamMemberFactory.create( team__name="A1 Waay Cool team", team__slug='a1-waay-cool-team', team__description='this is the coolest, most creative team ever', user__username='******', user__password='******').team TeamMemberFactory.create(team=cls.team, user=cls.cool_user) TeamVideoFactory.create(team=cls.team, added_by=cls.cool_user) #create an application team with 3 members and 5 videos cls.app_team = TeamMemberFactory.create( team__name='the application-only team', team__slug='the-application-only-team', team__membership_policy=1, user__username='******', user__password='******').team TeamMemberFactory.create(team=cls.app_team, user=UserFactory.create()) TeamMemberFactory.create(team=cls.app_team, user=cls.cool_user) for x in range(5): TeamVideoFactory.create(team=cls.app_team, added_by=cls.cool_user) #create 1 private team cls.priv_team = TeamMemberFactory.create( team__name='my own private idaho ', team__slug='private-idaho', team__membership_policy=1, team__is_visible=False, user__username='******', user__password='******').team cls.teams_dir_pg = TeamsDirPage(cls) cls.a_team_pg = ATeamPage(cls)
def setUpClass(cls): super(TestCaseTeamsResource, cls).setUpClass() cls.data_utils = data_helpers.DataHelpers() cls.user = UserFactory.create(is_partner=True) cls.private_user = UserFactory.create(username='******') cls.data_utils.create_user_api_key(cls.user) cls.logger.info('setup: creating team data') #create 3 open teams for x in range(3): TeamMemberFactory.create( team__name='my team ' + str(x), team__slug='my-team-' + str(x), user__username='******' + str(x), ) #create an open team with description text and 2 members cls.open_team = TeamMemberFactory.create( team__name="A1 Waay Cool team", team__slug='a1-waay-cool-team', team__description='this is the coolest, most creative team ever', user__username='******', ).team TeamMemberFactory.create(team=cls.open_team, user=cls.user) TeamVideoFactory.create(team=cls.open_team, added_by=cls.user) #create an application team with 3 members and 5 videos app_team = TeamMemberFactory.create( team__name='the application-only team', team__slug='the-application-only-team', team__membership_policy=1, user__username='******', ).team TeamMemberFactory.create(team=app_team, user=UserFactory.create()) TeamMemberFactory.create(team=app_team, user=cls.user) for x in range(5): TeamVideoFactory.create(team=app_team, added_by=cls.user) #create 1 private team cls.priv_team = TeamMemberFactory.create( team__name='my own private idaho', team__slug='private-idaho', team__membership_policy=1, team__is_visible=False, user=cls.private_user).team #Open to the teams page so you can see what's there. cls.teams_dir_pg = TeamsDirPage(cls) cls.teams_dir_pg.open_teams_page()