def test_issue_kanban_moveleftright(self):
        self.assertEqual(self.project.kanbancol.count(), 4)
        issue1 = Issue(title="issue1",
                       project=self.project,
                       kanbancol=self.project.kanbancol.first())
        issue1.save()

        self.assertEqual(issue1.get_left_kCol_for_issue(), -1)
        self.assertEqual(issue1.get_right_kCol_for_issue(), 1)

        # move issue to next row and check results
        issue1.kanbancol = self.project.kanbancol.get(position='1')
        issue1.save()
        self.assertEqual(issue1.get_left_kCol_for_issue(), 0)
        self.assertEqual(issue1.get_right_kCol_for_issue(), 2)

        # move issue to last row and check results
        issue1.kanbancol = self.project.kanbancol.get(position='3')
        issue1.save()
        self.assertEqual(issue1.get_left_kCol_for_issue(), 2)
        self.assertEqual(issue1.get_right_kCol_for_issue(), -1)

        # test view function
        response = self.client.post(
            reverse('issue:setkanbancol',
                    kwargs={'project': self.project.name_short}), {
                        'sqn_k': '0',
                        'sqn_i': issue1.number,
                    },
            follow=True)
        self.assertRedirects(
            response,
            reverse('issue:projList',
                    kwargs={'project': self.project.name_short}))
        issue1.refresh_from_db()
        self.assertEqual(issue1.kanbancol.position, 0)

        # check if error handling works (set col too high)
        response = self.client.post(
            reverse('issue:setkanbancol',
                    kwargs={'project': self.project.name_short}), {
                        'sqn_k': '4',
                        'sqn_i': issue1.number,
                    },
            follow=True)
        self.assertRedirects(
            response,
            reverse('issue:projList',
                    kwargs={'project': self.project.name_short}))
        self.assertEqual(len(list(response.context['messages'])), 1)
        issue1.refresh_from_db()
        self.assertEqual(issue1.kanbancol.position, 0)

        # check with invalid issue
        response = self.client.post(
            reverse('issue:setkanbancol',
                    kwargs={'project': self.project.name_short}), {
                        'sqn_k': '2',
                        'sqn_i': issue1.number + 1,
                    },
            follow=True)
        self.assertRedirects(
            response,
            reverse('issue:projList',
                    kwargs={'project': self.project.name_short}))
        self.assertEqual(len(list(response.context['messages'])), 1)
        issue1.refresh_from_db()
        self.assertEqual(issue1.kanbancol.position, 0)