def test_extrinsic_metadata(self): """Various format front matter.""" qs = FBO( path=TEST_FILES_ROOT, glob='*.rst', metadata=FileObject.MetadataInFileHead, ).all() self.assertEqual( 3, qs.count(), ) # Have to test this both ways so that however it # comes out of the filesystem "by default" (ie # intrinsically, probably inode ordering) we'll get # a failure if our explicit ordering isn't applied. self.assertEqual( 'test1.rst', qs.order_by('title')[0].name, ) self.assertEqual( 'test3.rst', qs.order_by('-title')[0].name, )
def test_intrinsic_metadata(self): """Intrinsic metadata.""" qs = FBO( path=TEST_FILES_ROOT, glob='*.md', metadata='.meta', ).all() self.assertEqual( 4, qs.count(), ) # Have to test this both ways so that however it # comes out of the filesystem "by default" (ie # intrinsically, probably inode ordering) we'll get # a failure if our explicit ordering isn't applied. self.assertEqual( 'index.md', qs.order_by('name')[0].name, ) self.assertEqual( 'test2.md', qs.order_by('-name')[0].name, )
def test_everything(self): """Just find all file objects.""" qs = FBO( path=TEST_FILES_ROOT, ).exclude( name__glob='*~', ).exclude( name__glob='*.meta', ) self.assertEqual( 7, qs.count(), ) self.assertEqual( { 'index.md', 'subdir/index.md', 'test1.md', 'test2.md', 'test1.rst', 'test2.rst', 'test3.rst', }, { o.name for o in qs }, )
def test_get(self): """Fetch a single file instance.""" qs = FBO( path=TEST_FILES_ROOT, ).all() obj = qs.get( name='test1.md', ) self.assertEqual( 'test1.md', obj.name, )
def test_filters_are_clones_not_references(self): """_filter must be cloned""" # Everything else is considered immutable qs = FBO( path=TEST_FILES_ROOT, glob='*.rst', ) self.assertEqual( 3, qs.count(), ) qs2 = qs.filter(name='test1.rst') self.assertEqual( 3, qs.count(), )
def setUp(self): self.qs = FBO( path=TEST_FILES_ROOT, ).exclude( name__glob='*~', ).exclude( name__glob='*.meta', ).order_by( 'name' )
def test_glob_restriction(self): """With globbing.""" qs = FBO( path=TEST_FILES_ROOT, glob='*.md', ).all() self.assertEqual( 4, qs.count(), ) self.assertEqual( { 'index.md', 'subdir/index.md', 'test1.md', 'test2.md', }, { o.name for o in qs }, )
class TestSlice(TestCase): """Can we slice FBO?""" def setUp(self): self.qs = FBO( path=TEST_FILES_ROOT, ).exclude( name__glob='*~', ).exclude( name__glob='*.meta', ).order_by( 'name' ) def test_sliced_filter(self): # We want to test that the slice is applied last. # However we prefetch at the start of the iterator, # so we need to cause that prefetch to happen before # the filter is applied, so that the filter will be # applied within the iterator rather than in the # prefetch. # # This incidentally also showed that our prefetch # cache wasn't being propagated down to sub querysets, # so it acts as a regression test against that also. qs = self.qs.clone() _ = iter(qs) qs = qs.filter( name__glob='*.rst' )[2:] self.assertEqual( [ 'test3.rst', ], [ o.name for o in qs ], ) def test_open_both(self): qs = self.qs[:] self.assertEqual( [ 'index.md', 'subdir/index.md', 'test1.md', 'test1.rst', 'test2.md', 'test2.rst', 'test3.rst', ], [ o.name for o in qs ], ) def test_open_start(self): qs = self.qs[:4] self.assertEqual( [ 'index.md', 'subdir/index.md', 'test1.md', 'test1.rst', ], [ o.name for o in qs ], ) def test_open_end(self): qs = self.qs[1:] self.assertEqual( [ 'subdir/index.md', 'test1.md', 'test1.rst', 'test2.md', 'test2.rst', 'test3.rst', ], [ o.name for o in qs ], ) def test_closed(self): qs = self.qs[1:3] self.assertEqual( [ 'subdir/index.md', 'test1.md', ], [ o.name for o in qs ], ) def test_sliced_slice1(self): qs = self.qs[1:4][:2] self.assertEqual( [ 'subdir/index.md', 'test1.md', ], [ o.name for o in qs ], ) def test_sliced_slice2(self): qs = self.qs[1:3][:4] self.assertEqual( [ 'subdir/index.md', 'test1.md', ], [ o.name for o in qs ], ) def test_sliced_slice3(self): qs = self.qs[:2][1:4] self.assertEqual( [ 'subdir/index.md', 'test1.md', ], [ o.name for o in qs ], ) def test_sliced_slice4(self): qs = self.qs[1:4][1:3] self.assertEqual( [ 'test1.md', 'test1.rst', ], [ o.name for o in qs ], ) def test_step(self): qs = self.qs[1::2] self.assertEqual( [ 'subdir/index.md', 'test1.rst', 'test2.rst', ], [ o.name for o in qs ], ) def test_sliced_step1(self): qs = self.qs[1::2][:1] self.assertEqual( [ 'subdir/index.md', ], [ o.name for o in qs ], ) def test_sliced_step2(self): qs = self.qs[1::2][::] self.assertEqual( [ 'subdir/index.md', 'test1.rst', 'test2.rst', ], [ o.name for o in qs ], ) def test_sliced_step3(self): qs = self.qs[1:][::2] self.assertEqual( [ 'subdir/index.md', 'test1.rst', 'test2.rst', ], [ o.name for o in qs ], )