From 743563f5804a9cc81a3c8103f213a62630fe50c9 Mon Sep 17 00:00:00 2001 From: "robinwilliam.hundt" <robinwilliam.hundt@stud.uni-goettingen.de> Date: Wed, 14 Aug 2019 15:10:29 +0200 Subject: [PATCH] Added test case --- functional_tests/test_feedback_creation.py | 10 +-- functional_tests/test_feedback_update.py | 85 ++++++++++++++++++++++ functional_tests/util.py | 12 +++ 3 files changed, 99 insertions(+), 8 deletions(-) create mode 100644 functional_tests/test_feedback_update.py diff --git a/functional_tests/test_feedback_creation.py b/functional_tests/test_feedback_creation.py index 1e1bd335..b68efbc9 100644 --- a/functional_tests/test_feedback_creation.py +++ b/functional_tests/test_feedback_creation.py @@ -6,7 +6,7 @@ from selenium.webdriver.support import expected_conditions as ec from core.models import UserAccount, Submission, FeedbackComment from functional_tests.util import (login, create_browser, reset_browser_after_test, go_to_subscription, wait_until_code_changes, - reconstruct_submission_code) + reconstruct_submission_code, correct_some_submission) from util import factory_boys as fact @@ -93,13 +93,7 @@ class UntestedParent: def test_can_give_max_score(self): self._login() go_to_subscription(self) - code = reconstruct_submission_code(self) - self.browser.find_element_by_id('score-full').click() - submit_btn = self.browser.find_element_by_id('submit-feedback') - submit_btn.click() - WebDriverWait(self.browser, 10).until( - wait_until_code_changes(self, code) - ) + code = correct_some_submission() submission_for_code = Submission.objects.get(text=code) self.assertEqual(self.sub_type.full_score, submission_for_code.feedback.score) diff --git a/functional_tests/test_feedback_update.py b/functional_tests/test_feedback_update.py new file mode 100644 index 00000000..f2848b88 --- /dev/null +++ b/functional_tests/test_feedback_update.py @@ -0,0 +1,85 @@ +from django.test import LiveServerTestCase +from selenium import webdriver +from selenium.webdriver import ActionChains +from selenium.webdriver.common.by import By +from selenium.webdriver.common.keys import Keys +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as ec + +from core.models import FeedbackLabel +from functional_tests.util import (login, create_browser, reset_browser_after_test, + query_returns_object, go_to_subscription, + reconstruct_submission_code, wait_until_code_changes, + correct_some_submission) +from util import factory_boys as fact + +import time + +class TestFeedbackUpdate(LiveServerTestCase): + browser: webdriver.Firefox = None + username = None + password = None + role = None + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.browser = create_browser() + + @classmethod + def tearDownClass(cls): + super().tearDownClass() + cls.browser.quit() + + def setUp(self): + super().setUp() + self.username = 'tut' + self.password = 'p' + fact.UserAccountFactory( + username=self.username, + password=self.password, + ) + self.sub_type = fact.SubmissionTypeFactory.create() + fact.SubmissionFactory.create_batch(2, type=self.sub_type) + + def _login(self): + login(self.browser, self.live_server_url, self.username, self.password) + + def test_updating_own_feedback_doesnt_invalidate_other_tutors_assignment(self): + self._login() + code = correct_some_submission(self) + first_tab = self.browser.current_window_handle + + # body = self.browser.find_element_by_tag_name('body') + # body.send_keys(Keys.LEFT_CONTROL + 't') + self.browser.execute_script('window.open()') + self.browser.switch_to.window(self.browser.window_handles[-1]) + second_tab = self.browser.current_window_handle + self.browser.execute_script("window.sessionStorage.clear()") + self.browser.get(self.live_server_url) + username = 'other_tut' + password = 'p' + fact.UserAccountFactory( + username=username, + password=password + ) + login(self.browser, self.live_server_url, username, password) + go_to_subscription(self, stage='validate') + other_code = reconstruct_submission_code(self) + self.assertEqual( + code, other_code, + "Code for validation submissions is different than initial") + + self.browser.switch_to.window(first_tab) + self.browser.find_element_by_partial_link_text('Feedback History').click() + # time.sleep(3) + feedback_entry = self.browser.find_element_by_class_name('feedback-row') + ActionChains(self.browser).move_to_element(feedback_entry).click().perform() + self.browser.find_element_by_id('submit-feedback').click() + + self.browser.switch_to.window(second_tab) + self.browser.find_element_by_id('submit-feedback').click() + WebDriverWait(self.browser, 10).until( + ec.url_contains('ended'), + 'Browser is not on Subscription ended site, therefore Feedback could not be submitted' + ) diff --git a/functional_tests/util.py b/functional_tests/util.py index 9fd0e6ed..f91826f0 100644 --- a/functional_tests/util.py +++ b/functional_tests/util.py @@ -106,6 +106,18 @@ def go_to_subscription(test_class_instance, stage='initial', sub_type=None): WebDriverWait(test_class_instance.browser, 10).until(ec.url_contains('subscription')) +def correct_some_submission(test_class_instance): + go_to_subscription(test_class_instance) + code = reconstruct_submission_code(test_class_instance) + test_class_instance.browser.find_element_by_id('score-full').click() + submit_btn = test_class_instance.browser.find_element_by_id('submit-feedback') + submit_btn.click() + WebDriverWait(test_class_instance.browser, 10).until( + wait_until_code_changes(test_class_instance, code) + ) + return code + + def reconstruct_submission_code(test_class_instance): sub_table = test_class_instance.browser.find_element_by_class_name('submission-table') lines = sub_table.find_elements_by_tag_name('tr') -- GitLab