Exemple #1
0
class ArticleRankerTest(unittest.TestCase):


    def setUp(self):
        fill_database()
        config_ = load_config(file_path = "/media/sdc1/Aptana Studio 3 Workspace/configs/config.yaml",
                              logger = logger)
        self.feature_extractor = EsaFeatureExtractor(prefix = config_['prefix'])
        self.ranker = ArticleRanker(extractor = self.feature_extractor)
        self.article_as_dict = {'news_vendor': 'TechCrunch', 
                                'author': "MG Siegler",
                                'link': "http://www.techcrunch.com",
                                'headline': "Again Apple",
                                'clean_content': "Fooobaaar!",
                                'content': "<p>Fooobaaar!</p>",
                                'features': {'version': '1.0',
                                            'data': [(1, 0.5),
                                                     (3, 0.6)
                                                    ]
                                            }
                                }

    def tearDown(self):
        clear_database()

    def test_get_vendor_false(self):
        vendor = self.ranker.get_vendor({'news_vendor': 'not in db'})
        
        self.assertEqual(vendor, None)
        
    def test_get_vendor(self):
        vendor = self.ranker.get_vendor(self.article_as_dict)

        self.assertEqual(vendor.config, 'vendor config')
        
    def test_save_article_false(self):
        vendor = self.ranker.get_vendor(self.article_as_dict)  
        stored_article = self.ranker.save_article(vendor, 
                                                  {'headline': "Everything else is missing."})
        
        self.assertEqual(stored_article, None)
        
    def test_save_article(self): 
        vendor = self.ranker.get_vendor(self.article_as_dict)  
        stored_article = self.ranker.save_article(vendor, self.article_as_dict)
        
        self.assertEqual(stored_article.author, 'MG Siegler')
        
    def test_save_rating(self):
        vendor = self.ranker.get_vendor(self.article_as_dict)  
        stored_article = self.ranker.save_article(vendor, self.article_as_dict)
        user = User.objects(name = "Karsten Jeschkies").first()
        self.ranker.save_rating(user=user, article = stored_article, rating = 1.0)
        
        user.reload()
        ranked_articles = RankedArticle.objects(user_id = user.id)
        self.assertEqual(3, ranked_articles.count())
        self.assertEqual(1.0, ranked_articles[0].rating) 

    def test_rank_article(self):
        pass
        #some error in genism. probably because some features are not quite right
        self.ranker.rank_article(self.article_as_dict)