summaryrefslogtreecommitdiff
path: root/migrate/tests/versioning/test_pathed.py
blob: 53f0b47152067b891cb5b948281612ce65eb3b0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from migrate.tests import fixture
from migrate.versioning.pathed import *

class TestPathed(fixture.Base):
    def test_parent_path(self):
        """Default parent_path should behave correctly"""
        filepath='/fgsfds/moot.py'
        dirpath='/fgsfds/moot'
        sdirpath='/fgsfds/moot/'

        result='/fgsfds'
        self.assertTrue(result==Pathed._parent_path(filepath))
        self.assertTrue(result==Pathed._parent_path(dirpath))
        self.assertTrue(result==Pathed._parent_path(sdirpath))

    def test_new(self):
        """Pathed(path) shouldn't create duplicate objects of the same path"""
        path='/fgsfds'
        class Test(Pathed):
            attr=None
        o1=Test(path)
        o2=Test(path)
        self.assertTrue(isinstance(o1,Test))
        self.assertTrue(o1.path==path)
        self.assertTrue(o1 is o2)
        o1.attr='herring'
        self.assertTrue(o2.attr=='herring')
        o2.attr='shrubbery'
        self.assertTrue(o1.attr=='shrubbery')

    def test_parent(self):
        """Parents should be fetched correctly"""
        class Parent(Pathed):
            parent=None
            children=0
            def _init_child(self,child,path):
                """Keep a tally of children.
                (A real class might do something more interesting here)
                """
                self.__class__.children+=1

        class Child(Pathed):
            parent=Parent

        path='/fgsfds/moot.py'
        parent_path='/fgsfds'
        object=Child(path)
        self.assertTrue(isinstance(object,Child))
        self.assertTrue(isinstance(object.parent,Parent))
        self.assertTrue(object.path==path)
        self.assertTrue(object.parent.path==parent_path)