Skip to content

Commit

Permalink
Add more tests and improve coverage.
Browse files Browse the repository at this point in the history
  • Loading branch information
prabhuramachandran committed Feb 6, 2017
1 parent e16b304 commit 0df77f7
Show file tree
Hide file tree
Showing 6 changed files with 100 additions and 25 deletions.
2 changes: 1 addition & 1 deletion vixen/directory.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def __init__(self, path, parent, relpath=None, name=None):
self.relpath = relpath

def __repr__(self):
return 'File(path=%s)' % self.path
return 'File(path=%r)' % self.path


class Directory(HasTraits):
Expand Down
8 changes: 0 additions & 8 deletions vixen/media.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,14 +129,6 @@ def from_data(cls, data, tags):
def to_dict(self):
return self.__dict__

def flatten(self):
"""Return a flattened dict of the metadata for processing or dumping.
"""
data = dict(self.to_dict())
tags = data.pop('tags', {})
data.update(tags)
return data

def update(self, data=None, tags=None):
"""Update the metadata from the file or from the data given.
"""
Expand Down
21 changes: 21 additions & 0 deletions vixen/tests/test_directory.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,9 @@ def test_directory_extensions(self):
d.extensions = ['.py']

# Then
self._check_py_extensions(d)

def _check_py_extensions(self, d):
self.assertEqual(len(d.files), 1)
self.assertEqual(len(d.directories), 2)
file_obj = d.files[0]
Expand Down Expand Up @@ -130,6 +133,13 @@ def test_directory_extensions_changed(self):
self.assertEqual(len(sub_dir.directories), 1)
self.assertEqual(len(sub_dir.directories[0].files), 1)

# When
del d.extensions[-1]
d.extensions.append('.py')

# Then
self._check_py_extensions(d)

def test_extensions_order_change_does_not_rescan(self):
# Given.
d = Directory(path=self.root, extensions=['.py', '.txt'])
Expand All @@ -143,6 +153,17 @@ def test_extensions_order_change_does_not_rescan(self):
self.check_root(d)
self.assertEqual(n_listdir_calls, 0)

def test_repr_file_dir(self):
# Given/When.
d = Directory(path=self.root, extensions=['.py', '.txt'])
f = d.files[0]

# Then
expect = 'Directory(path=%r)' % self.root
self.assertEqual(repr(d), expect)
expect = 'File(path=%r)' % f.path
self.assertEqual(repr(f), expect)


if __name__ == '__main__':
unittest.main()
46 changes: 33 additions & 13 deletions vixen/tests/test_media.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,20 @@
import tempfile
import os

from vixen.media import get_media_data, find_type, MediaData
from vixen.media import get_media_data, find_type, MediaData, Media


class TestMedia(unittest.TestCase):
def setUp(self):
fname = tempfile.mktemp(suffix='.txt')
with open(fname, 'w') as fp:
fp.write('Hello world\n')

self.fname = fname

def tearDown(self):
os.remove(self.fname)

def test_find_type(self):
# Given
cases = [
Expand All @@ -25,24 +35,34 @@ def test_find_type(self):

def test_get_media_data(self):
# Given
fname = tempfile.mktemp(suffix='.txt')
with open(fname, 'w') as fp:
fp.write('Hello world\n')
fname = self.fname

# When
relpath = os.path.basename(fname)
data = get_media_data(fname, relpath)

# Then
try:
self.assertTrue(isinstance(data, MediaData))
self.assertEqual(data.type, 'text')
self.assertTrue(data.size > 0)
self.assertEqual(data.relpath, relpath)
self.assertEqual(data.path, fname)
self.assertEqual(data.file_name, relpath)
finally:
os.remove(fname)
self.assertTrue(isinstance(data, MediaData))
self.assertEqual(data.type, 'text')
self.assertTrue(data.size > 0)
self.assertEqual(data.relpath, relpath)
self.assertEqual(data.path, fname)
self.assertEqual(data.file_name, relpath)

def test_media_from_path(self):
# Given
fname = self.fname
relpath = os.path.basename(fname)

# When
m = Media.from_path(fname, relpath)

# Then
self.assertEqual(m.type, 'text')
self.assertTrue(m.size > 0)
self.assertEqual(m.relpath, relpath)
self.assertEqual(m.path, fname)
self.assertEqual(m.file_name, relpath)


if __name__ == '__main__':
Expand Down
43 changes: 43 additions & 0 deletions vixen/tests/test_vixen.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import os
import mock
import unittest

import vixen
from vixen.processor import PythonFunctionFactory
from vixen.project import Project
from vixen.vixen import VixenUI
from vixen.vixen_ui import get_html, get_html_file

from vixen.tests.test_project import TestProjectBase

Expand Down Expand Up @@ -168,6 +171,29 @@ def process(relpath, media, dest):

class TestVixenUI(TestVixenBase):

def test_miscellaneous(self):
# Given/When
ui = VixenUI()

# Then
self.assertEqual(ui.version, vixen.__version__)
fname = ui.docs
self.assertEqual('index.html', os.path.basename(fname))

# When
ui.mode = 'view'
ui.home()

# Then
self.assertEqual(ui.mode, 'edit')

# When
ctx = ui.get_context()

# Then
self.assertEqual(sorted(ctx.keys()),
['editor', 'ui', 'viewer', 'vixen'])

def test_add_remove_project_works(self):
# Given
ui = VixenUI()
Expand Down Expand Up @@ -202,10 +228,12 @@ def test_search_string_updates_search_completed(self):

# When
ui.view(p)
self.assertEqual(ui.viewer.active_pager, ui.viewer.pager)
ui.viewer.search = 'root.txt'

# Then
self.assertEqual(ui.viewer.search_completed, False)
self.assertEqual(ui.viewer.active_pager, ui.viewer.search_pager)

# When
ui.viewer.do_search()
Expand Down Expand Up @@ -269,3 +297,18 @@ def test_viewer_rescan(self):

# Then
self.assertEqual(viewer.current_dir, p.root)


class TestVixenUtils(unittest.TestCase):
def test_get_html_file(self):
r = os.path.abspath(get_html_file())
self.assertTrue(os.path.exists(r))
self.assertTrue(os.path.isfile(r))

def test_get_html(self):
# Given/When
data = get_html(get_html_file())

# Then.
self.assertEqual(data.count('$HTML_ROOT'), 0)
self.assertEqual(data.count('$ROOT'), 0)
5 changes: 2 additions & 3 deletions vixen/vixen.py
Original file line number Diff line number Diff line change
Expand Up @@ -423,9 +423,8 @@ def _current_dir_changed(self, d):
self.pager.data = d.directories + d.files

def _current_file_changed(self, file):
if file is None:
return
self.media = self.project.get(file.relpath)
if file is not None:
self.media = self.project.get(file.relpath)

def _pager_default(self):
p = Pager(limit=20)
Expand Down

0 comments on commit 0df77f7

Please sign in to comment.