From 487f078256962597e8bb6b8bbde7792f272f8654 Mon Sep 17 00:00:00 2001
From: tholok97 <thomas.lokkeborg@mimer.no>
Date: Mon, 24 Feb 2020 15:17:00 +0100
Subject: [PATCH] #4 test passerer lint, tillater lang URL

---
 .gitlab-ci.yml    |  4 ++--
 scripts/.flake8   |  5 +++++
 scripts/.pylintrc |  2 +-
 test/test_main.py | 49 +++++++++++++++++++++++++++++++++++------------
 4 files changed, 45 insertions(+), 15 deletions(-)
 create mode 100644 scripts/.flake8

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 57d6080..6cb7ecd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -8,14 +8,14 @@ job_lint_flake8:
   image: morkolai/soitool-ci
   script:
     - flake8 --version
-    - flake8 soitool
+    - flake8 --config scripts/.flake8 soitool test
     
 job_lint_pylint:
   stage: lint
   image: morkolai/soitool-ci
   script:
     - pylint --version
-    - pylint --rcfile=scripts/.pylintrc soitool
+    - pylint --rcfile=scripts/.pylintrc soitool test
 
 job_lint_bandit:
   stage: lint
diff --git a/scripts/.flake8 b/scripts/.flake8
new file mode 100644
index 0000000..b67c079
--- /dev/null
+++ b/scripts/.flake8
@@ -0,0 +1,5 @@
+[flake8]
+# ignorerer sjekk for lange linjer, ettersom dette gjøres i pylint
+# vi vil tillate lange linjer som avsluttes med link, og dette er mulig i
+# pylint, men såvidt vi vet ikke mulig i flake8
+ignore = E501
diff --git a/scripts/.pylintrc b/scripts/.pylintrc
index 7e9ef2c..43b2b9b 100644
--- a/scripts/.pylintrc
+++ b/scripts/.pylintrc
@@ -275,7 +275,7 @@ redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io
 expected-line-ending-format=
 
 # Regexp for a line that is allowed to be longer than the limit.
-ignore-long-lines=^\s*(# )?<?https?://\S+>?$
+ignore-long-lines=^.*<?https?://\S+>?$
 
 # Number of spaces of indent required inside a hanging or continued line.
 indent-after-paren=4
diff --git a/test/test_main.py b/test/test_main.py
index df0dbd7..89b4b90 100644
--- a/test/test_main.py
+++ b/test/test_main.py
@@ -1,7 +1,10 @@
+"""Test CoolWidget"""
+
 import unittest
 import sys
+from datetime import datetime as datetime_, timedelta
+from PySide2 import QtWidgets, QtTest, QtCore
 from soitool import main
-from PySide2 import QtGui, QtWidgets, QtTest, QtCore
 
 # references:
 # * findChild: https://srinikom.github.io/pyside-docs/PySide/QtCore/QObject.html#PySide.QtCore.PySide.QtCore.QObject.findChild
@@ -18,48 +21,69 @@ from PySide2 import QtGui, QtWidgets, QtTest, QtCore
 # moved here from setUp to avoid annoying startup messages
 app = QtWidgets.QApplication(sys.argv)
 
+
 def wait(msec):
-    QtTest.QTest.qWait(msec)
+    """Venter msec millisekunder
+
+    Bruker https://stackoverflow.com/a/34745326/3545896
+
+    Parameter
+    -----
+    msec : number
+        msec to wait
+    """
+
+    end = datetime_.now() + timedelta(milliseconds=msec)
+    while datetime_.now() < end:
+        app.processEvents()
+
 
 class TestMain(unittest.TestCase):
+    """TestCase for main"""
 
     def setUp(self):
+        """Forbereder widget for testing"""
         self.test_text1 = "A bad boy"
         self.test_text2 = "Hei Anders!"
         self.widget = main.CoolWidget(self.test_text1)
         self.widget.show()
 
     def test_starts_up(self):
+        """Test at widget kan starte opp"""
         self.assertEqual(
-           self.widget.qlabel.text(),
-           self.test_text1,
+            self.widget.qlabel.text(),
+            self.test_text1,
         )
         self.assertTrue(self.widget.isVisible())
-    
+
     def test_change_text_ok(self):
+        """Test at endring av tekst funker"""
 
         def change_text_and_ok():
-            active_widget = app.activeModalWidget()
-
-            child_line_edit = active_widget.findChild(QtWidgets.QLineEdit)
+            while self.widget.dlg_input is None:
+                app.processEvents()
+            child_line_edit = self.widget.dlg_input.findChild(QtWidgets.QLineEdit)
             QtTest.QTest.keyClicks(child_line_edit, self.test_text2)
             QtTest.QTest.keyClick(child_line_edit, QtCore.Qt.Key_Enter)
 
-        QtCore.QTimer.singleShot(0, change_text_and_ok)
+        QtCore.QTimer.singleShot(100, change_text_and_ok)
         QtTest.QTest.mouseClick(self.widget.button, QtCore.Qt.LeftButton)
 
         self.assertEqual(
             self.widget.qlabel.text(),
             self.test_text2,
         )
-    
+
     def test_change_text_not_ok(self):
+        """Test at avbrytelse av endring av tekster ikke endrer tekst"""
 
         def accept_popup():
             QtTest.QTest.keyClick(app.activeModalWidget(), QtCore.Qt.Key_Enter)
 
         def change_text_and_not_ok():
-            # in PySide2 we need to store a reference to this. If we don't the widget is garbage collected somehow before we get to use child_line_edit (a child of the active widget)
+            # in PySide2 we need to store a reference to this. If we don't the
+            # widget is garbage collected somehow before we get to use
+            # child_line_edit (a child of the active widget)
             active_widget = app.activeModalWidget()
 
             child_line_edit = active_widget.findChild(QtWidgets.QLineEdit)
@@ -70,11 +94,12 @@ class TestMain(unittest.TestCase):
         QtCore.QTimer.singleShot(0, change_text_and_not_ok)
 
         QtTest.QTest.mouseClick(self.widget.button, QtCore.Qt.LeftButton)
-    
+
         self.assertNotEqual(
             self.widget.qlabel.text(),
             self.test_text2,
         )
 
+
 if __name__ == '__main__':
     unittest.main()
-- 
GitLab