Beispiel #1
0
class TextLinklistParserTest(unittest.TestCase):
    
    def setUp(self):
        self.textLinklistParserInstance=TextLinklistParser()
        debugMock=Mock()
        settings=Settings()
        self.textLinklistParserInstance.debug=debugMock
        self.textLinklistParserInstance.settings=settings
        self.linklistPath="/media/KINGSTON/Sumid/linklist/prelinklist26.txt"
        
    def tearDown(self):
        self.textLinklistParserInstance=None

    def test_trimSpcSymbols(self):
        """ Line is trimmed. It returns list: [url,symbol,textAfterSymbol]"""
        oneStringURLWithSPC=""
        self.assertEqual(self.textLinklistParserInstance.trimSpcSymbols(oneStringURLWithSPC) ,["",None,None])
        oneStringURLWithSPC="http://foo.com/blah_blah"
        self.assertEqual(self.textLinklistParserInstance.trimSpcSymbols(oneStringURLWithSPC) ,["http://foo.com/blah_blah",None,None])
        oneStringURLWithSPC="#http://foo.com/blah_blah"
        self.assertEqual(self.textLinklistParserInstance.trimSpcSymbols(oneStringURLWithSPC) ,["","#","http://foo.com/blah_blah"])
        oneStringURLWithSPC="http://foo.com/blah_blah #comment"
        self.assertEqual(self.textLinklistParserInstance.trimSpcSymbols(oneStringURLWithSPC) ,["http://foo.com/blah_blah ","#","comment"])
        oneStringURLWithSPC="http://foo.com/blah_blah @command"
        self.assertEqual(self.textLinklistParserInstance.trimSpcSymbols(oneStringURLWithSPC) ,["http://foo.com/blah_blah ","@","command"])
        oneStringURLWithSPC="@command"     
        self.assertEqual(self.textLinklistParserInstance.trimSpcSymbols(oneStringURLWithSPC) ,["","@","command"])

    """
    parseToSmartURL
    - Input is one raw line from linklist.
    - Output is SmartURL instance.
    --    SPC part is trimmed
    --    URL part is striped
    --    If url string is invalid, exception is thrown (it is the matter of SmartURL)
    --    Skips empty lines or comments. (Returns None for those)
    """
    
    def test_parse2SmartURL(self):
        """ Parses one raw line to SmartURL instance. Handles correctly URL part and SPC part."""
        oneStringURLWithSPC=" "
        url=self.textLinklistParserInstance.parse2SmartURL(oneStringURLWithSPC)
        self.assertEqual(url,None)
        
        oneStringURLWithSPC="#http://foo.com/blah_blah"
        url=self.textLinklistParserInstance.parse2SmartURL(oneStringURLWithSPC)
        self.assertEqual(url,None)
        
        oneStringURLWithSPC="http://foo.com/blah_blah"
        url=self.textLinklistParserInstance.parse2SmartURL(oneStringURLWithSPC)
        self.assertEqual(url.Composed,"http://foo.com/blah_blah")
        self.assertEqual(url.SPCPart,None)
        
        oneStringURLWithSPC="http://foo.com/blah_blah @command"
        url=self.textLinklistParserInstance.parse2SmartURL(oneStringURLWithSPC)
        self.assertTrue(isinstance(url,SmartURL))
        self.assertEqual(url.Composed,"http://foo.com/blah_blah")
        self.assertEqual(url.SPCPart,"@command")
        
        oneStringURLWithSPC="http://foo.com/blah_blah #comment"
        url=self.textLinklistParserInstance.parse2SmartURL(oneStringURLWithSPC)
        self.assertTrue(isinstance(url,SmartURL))
        self.assertEqual(url.Composed,"http://foo.com/blah_blah")
        self.assertEqual(url.SPCPart,"#comment")     
        
    def test_next(self):                   
        """ Next provides another SmartURL instance. """
        linklist=urllib2.urlopen("file://%s"%(self.linklistPath))
        linklistInstance=LinklistAdaptor()
        linklistInstance.connectLinklistFile(linklist)
        self.textLinklistParserInstance.connectLinklistAdaptor(linklistInstance)
        next=self.textLinklistParserInstance.next()
        # 026 If this test fails, check if first line of linklist is not commented out.
        self.assertTrue(isinstance(next,SmartURL))

    def test_next_noLinklist(self):
        """ If there's no linklist connected, next raises error."""
        # Suppose thers's no linklist until I connect it.
        self.assertRaises(AttributeError,self.textLinklistParserInstance.next)
        self.textLinklistParserInstance.linklistAdaptorInstance=None
        self.assertRaises(AttributeError,self.textLinklistParserInstance.next)
        
    def test_connectLinklistAdaptor_wrongInput(self):
        """ Linklist parser allows connect only LinklistAdaptor instance."""
        self.assertRaises(AttributeError,self.textLinklistParserInstance.connectLinklistAdaptor,"/This/is/a/string")
        self.assertRaises(AttributeError,self.textLinklistParserInstance.connectLinklistAdaptor,["This","is","a","list"])
        self.assertRaises(AttributeError,self.textLinklistParserInstance.connectLinklistAdaptor,{"This":"is","a":"dict"})
        self.assertRaises(AttributeError,self.textLinklistParserInstance.connectLinklistAdaptor,object())
        self.assertRaises(AttributeError,self.textLinklistParserInstance.connectLinklistAdaptor,file(self.linklistPath))
        self.assertRaises(AttributeError,self.textLinklistParserInstance.connectLinklistAdaptor,urllib2.urlopen("file://%s"%(self.linklistPath)))
        
    def test_connectLinklistAdaptor_correctInput(self):
        """Linklist parser stores link to a LinklistAdaptor instance, when gets it as a input parameter."""  
        linklistInstance=LinklistAdaptor()
        self.textLinklistParserInstance.connectLinklistAdaptor(linklistInstance)  
        self.assertTrue(hasattr(self.textLinklistParserInstance,"linklistAdaptorInstance"))
        self.assertTrue(isinstance(self.textLinklistParserInstance.linklistAdaptorInstance,LinklistAdaptor))