Skip to content

Moving node to leftmost position doesn't workΒ #68

Open
@RafGb

Description

@RafGb

When i'm trying to move node to leftmost position using node.move_before nothing happens with tree.
i think it's because there's no left_sibling here: https://github.com/uralbash/sqlalchemy_mptt/blob/master/sqlalchemy_mptt/events.py#L362

Here's test code:

class MoveLeft(self):
    def test_move_to_leftmost(self):
        self.session.query(self.model).delete()

        _level = self.model.get_default_level()
        pk_column = self.model.get_pk_column()

        self.session.add_all([
            self.model(**{pk_column.name: 1}),
            self.model(**{pk_column.name: 2, 'parent_id': 1}),
            self.model(**{pk_column.name: 3, 'parent_id': 1}),
            self.model(**{pk_column.name: 4, 'parent_id': 1}),
        ])

        # initial tree:
        #        1
        #   /    |   \
        #  2     3    4

        self.assertEqual(
            [
                (1, 1, 8, _level + 0, None, 1),
                (2, 2, 3, _level + 1, 1, 1),
                (3, 4, 5, _level + 1, 1, 1),
                (4, 6, 7, _level + 1, 1, 1)
            ],
            self.result.all()
        )

        # move 4 to left
        node4 = self.session.query(self.model).filter(pk_column == 4).one()
        node4.move_before("2")

        # expected result:
        #        1
        #   /    |   \
        #  4     2    3

        self.assertEqual(
            [
                (1, 1, 8, _level + 0, None, 1),
                (2, 4, 5, _level + 0, 1, 1),
                (3, 6, 7, _level + 0, 1, 1),
                (4, 2, 3, _level + 0, 1, 1)
            ],
            self.result.all()
        )

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions