2015-11-06 10:51:07 -05:00
#!/usr/bin/env python3
import unittest
import sub
import os
TEST_DATA_DIR = os . path . join ( os . path . dirname ( os . path . realpath ( __file__ ) ) , " test_data " )
class TestGetSub ( unittest . TestCase ) :
def test_no_sub ( self ) :
self . assertEqual ( sub . getSub ( " (Z) gibberish " ) , None )
def test_sub_at_bol ( self ) :
self . assertEqual ( sub . getSub ( " sub/:test gibberish " ) , [ " sub " , " test " ] )
def test_sub_at_eol ( self ) :
self . assertEqual ( sub . getSub ( " (Z) gibberish sub/:test " ) , [ " sub " , " test " ] )
def test_sub_mid_line ( self ) :
self . assertEqual ( sub . getSub ( " (Z) sub/:test gibberish " ) , [ " sub " , " test " ] )
def test_sub_missing_folder ( self ) :
self . assertEqual ( sub . getSub ( " (Z) gibberish /:test " ) , None )
def test_sub_missing_file ( self ) :
self . assertEqual ( sub . getSub ( " (Z) sub/: gibberish " ) , None )
def setup_environment ( path ) :
os . environ [ " TODO_DIR " ] = os . path . join ( TEST_DATA_DIR , path )
os . environ [ " TODO_FILE " ] = os . path . join ( TEST_DATA_DIR , path , " todo.txt " )
os . environ [ " DONE_FILE " ] = os . path . join ( TEST_DATA_DIR , path , " done.txt " )
os . environ [ " REPORT_FILE " ] = os . path . join ( TEST_DATA_DIR , path , " report.txt " )
os . environ [ " TODOTXT_CFG_FILE " ] = os . path . join ( TEST_DATA_DIR , " todo.cfg " )
class TestShowSub ( unittest . TestCase ) :
def test_show ( self ) :
setup_environment ( " test1 " )
output = sub . showSub ( " (Z) gibberish sub/:test1.txt \n " , color = False )
self . assertEqual ( output , " 1 this is test 1 \n " )
class TestShowAll ( unittest . TestCase ) :
def test_show_all_one ( self ) :
self . show_all_tester ( " test1 " , " 1 (Z) gibberish sub/:test1.txt \n 1 this is test 1 \n -- \n TODO: 1 of 1 tasks shown \n " )
def test_show_all_two ( self ) :
self . show_all_tester ( " test2 " , " 1 (Z) gibberish sub/:test1.txt \n 1 this is test 1 \n 2 (Z) more gibberish sub/:test2.txt \n 1 this is test 2 \n -- \n TODO: 2 of 2 tasks shown \n " )
def show_all_tester ( self , path , expected_output ) :
from io import StringIO
setup_environment ( path )
out = StringIO ( )
sub . showAll ( out = out , color = False )
output = out . getvalue ( )
self . assertEqual ( output , expected_output )
class TestAdd ( unittest . TestCase ) :
def setUp ( self ) :
import shutil
2018-09-04 13:34:39 -04:00
if os . path . exists ( os . path . join ( TEST_DATA_DIR , " test_add " ) ) :
shutil . rmtree ( os . path . join ( TEST_DATA_DIR , " test_add " ) )
2015-11-06 16:26:28 -05:00
os . mkdir ( os . path . join ( TEST_DATA_DIR , " test_add " ) )
2018-09-04 13:34:39 -04:00
setup_environment ( " test_add " )
2015-11-06 16:25:44 -05:00
2015-11-06 10:51:07 -05:00
def test_add_sub ( self ) :
2015-11-06 16:26:28 -05:00
with open ( os . path . join ( TEST_DATA_DIR , " test_add/todo.txt " ) , " w " ) as f :
2015-11-06 10:51:07 -05:00
f . write ( " (Z) gibberish " )
sub . addSub ( 1 , " sub " , False )
out = sub . getSub ( sub . getItem ( 1 ) )
self . assertTrue ( out is not None )
fileExists = os . path . isfile ( os . path . join ( os . getenv ( " TODO_DIR " ) , out [ 0 ] , out [ 1 ] ) )
self . assertTrue ( fileExists )
2018-09-04 13:34:39 -04:00
def test_add_existing_sub ( self ) :
with open ( os . path . join ( TEST_DATA_DIR , " test_add/todo.txt " ) , " w " ) as f :
f . write ( " (Z) gibberish sub:/test1.txt \n " )
with self . assertRaises ( SystemExit ) :
sub . addSub ( 1 , " sub " , False )
2015-11-06 16:23:12 -05:00
class TestEdit ( unittest . TestCase ) :
def test_edit ( self ) :
from unittest . mock import MagicMock
import subprocess
subprocess . call = MagicMock ( )
setup_environment ( " test1 " )
os . environ [ " EDITOR " ] = " test "
sub . editSub ( 1 )
subName = sub . getSub ( sub . getItem ( 1 ) )
subprocess . call . assert_called_with ( [ " test " , os . path . join ( TEST_DATA_DIR , " test1 " , subName [ 0 ] , subName [ 1 ] ) ] )
def test_edit_EDITOR_unset ( self ) :
from unittest . mock import MagicMock
import subprocess
subprocess . call = MagicMock ( )
setup_environment ( " test1 " )
os . environ [ " EDITOR " ] = " "
subName = sub . getSub ( sub . getItem ( 1 ) )
with self . assertRaises ( SystemExit ) :
sub . editSub ( 1 )
2015-11-06 10:51:07 -05:00
if __name__ == ' __main__ ' :
unittest . main ( )