예제 #1
0
    def test_tidy(self):

        # if sequence = NULL, tidy sets sequences

        count = self.db_(self.db_.testy.sequence == None).count()
        self.assertEqual(count, self.records)
        seq = DbSequenceField(field=self.db_.testy.sequence)
        seq.tidy()
        count = self.db_(self.db_.testy.sequence == None).count()
        self.assertEqual(count, 0)

        # Sequence values start at 1 and are sequential

        rows = self.db_().select(self.db_.testy.ALL)
        seqs = []
        for row in rows:
            seqs.append(int(row.sequence))
        self.assertEqual(range(1, self.records + 1), seqs)

        # if multiple records have same sequence value, tidy sets them unique

        self.db_(self.db_.testy.id > 0).update(sequence=1)
        self.db_.commit()
        count = self.db_(self.db_.testy.sequence == 1).count()
        self.assertEqual(count, self.records)
        seq = DbSequenceField(field=self.db_.testy.sequence)
        seq.tidy()
        count = self.db_(self.db_.testy.sequence == 1).count()
        self.assertEqual(count, 1)

        # Doesn't kak on an empty table

        self.db_(self.db_.testy.id > 0).delete()
        self.db_.commit()
        seq = DbSequenceField(field=self.db_.testy.sequence)
        seq.tidy()
예제 #2
0
    def test_move(self):

        # Control - test that a reset returns expected

        self.reset_list()
        expect = [1, 2, 3, 4]
        got = self.id_list()
        self.assertEqual(got, expect)

        seq = DbSequenceField(field=self.db_.testy.sequence)

        # move with no position provided

        self.reset_list()
        seq.move(2)
        expect = [1, 3, 4, 2]  # 2 is moved to end
        got = self.id_list()
        self.assertEqual(got, expect)

        # move to new position upward

        self.reset_list()
        seq.move(4, 2)
        expect = [1, 4, 2, 3]
        got = self.id_list()
        self.assertEqual(got, expect)

        # move to new position downward

        self.reset_list()
        seq.move(1, 3)
        expect = [2, 3, 1, 4]
        got = self.id_list()
        self.assertEqual(got, expect)

        # move to same position

        self.reset_list()
        seq.move(2, 2)
        expect = [1, 2, 3, 4]
        got = self.id_list()
        self.assertEqual(got, expect)

        # move to 'start'

        self.reset_list()
        seq.move(3, 'start')
        expect = [3, 1, 2, 4]
        got = self.id_list()
        self.assertEqual(got, expect)

        # move to 'end'

        self.reset_list()
        seq.move(1, 'end')
        expect = [2, 3, 4, 1]
        got = self.id_list()
        self.assertEqual(got, expect)

        # move 'up'

        self.reset_list()
        seq.move(3, 'up')
        expect = [1, 3, 2, 4]
        got = self.id_list()
        self.assertEqual(got, expect)

        # move 'down'

        self.reset_list()
        seq.move(2, 'down')
        expect = [1, 3, 2, 4]
        got = self.id_list()
        self.assertEqual(got, expect)

        # Secessive moves
        # move 'up'

        self.reset_list()
        seq.move(2, 'up')
        expect = [2, 1, 3, 4]
        got = self.id_list()
        self.assertEqual(got, expect)

        seq.move(2, 'down')
        expect = [1, 2, 3, 4]
        got = self.id_list()
        self.assertEqual(got, expect)

        # Boundary tests
        # move first to 'start'

        self.reset_list()
        seq.move(1, 'start')
        expect = [1, 2, 3, 4]
        got = self.id_list()
        self.assertEqual(got, expect)

        # move last to 'end'

        self.reset_list()
        seq.move(4, 'end')
        expect = [1, 2, 3, 4]
        got = self.id_list()
        self.assertEqual(got, expect)

        # move first 'up'

        self.reset_list()
        seq.move(1, 'up')
        expect = [1, 2, 3, 4]
        got = self.id_list()
        self.assertEqual(got, expect)

        # move last 'down'

        self.reset_list()
        seq.move(4, 'down')
        expect = [1, 2, 3, 4]
        got = self.id_list()
        self.assertEqual(got, expect)

        # move to position outside of range

        self.reset_list()
        seq.move(2, 9999)
        expect = [1, 3, 4, 2]
        got = self.id_list()
        self.assertEqual(got, expect)

        # move to position outside of range

        self.reset_list()
        seq.move(3, -1)
        expect = [3, 1, 2, 4]
        got = self.id_list()
        self.assertEqual(got, expect)

        # invalid position

        self.reset_list()
        seq.move(1, '__invalid__')
        expect = [1, 2, 3, 4]
        got = self.id_list()
        self.assertEqual(got, expect)