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 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_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_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_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 },
        )