~moovida-developers/+junk/mediascanner

« back to all changes in this revision

Viewing changes to plugins/name_parser/tests/test_clean_name.py

  • Committer: Fernando Casanova
  • Date: 2010-02-01 18:42:58 UTC
  • mfrom: (48.1.4 media_scanner_klass)
  • Revision ID: fcasanova@fluendo.com-20100201184258-r9etykahshz6z3m7
Added name parser data source

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- coding: utf-8 -*-
 
2
# Moovida - Home multimedia server
 
3
# Copyright (C) 2006-2009 Fluendo Embedded S.L. (www.fluendo.com).
 
4
# All rights reserved.
 
5
#
 
6
# This file is available under one of two license agreements.
 
7
#
 
8
# This file is licensed under the GPL version 3.
 
9
# See "LICENSE.GPL" in the root of this distribution including a special
 
10
# exception to use Moovida with Fluendo's plugins.
 
11
#
 
12
# The GPL part of Moovida is also available under a commercial licensing
 
13
# agreement from Fluendo.
 
14
# See "LICENSE.Moovida" in the root directory of this distribution package
 
15
# for details on that license.
 
16
#
 
17
# Authors: Fernando Casanova <fcasanova@fluendo.com>
 
18
 
 
19
from twisted.trial.unittest import TestCase
 
20
from twisted.internet import defer
 
21
 
 
22
from plugins.name_parser.metadata_source import NameParserDataSource
 
23
from plugins.ontology.name_spaces import moo
 
24
 
 
25
import RDF
 
26
 
 
27
def stream_wrapper(stream):
 
28
    # FIXME: should be put somewhere in utils
 
29
    for element in stream:
 
30
        yield element
 
31
 
 
32
class ManagerMockUp(object):
 
33
    def __init__(self):
 
34
        super(ManagerMockUp, self).__init__()
 
35
        self.cache = RDF.Model()
 
36
 
 
37
    def find_statements(self, subject, predicate, object):
 
38
        query_statement = RDF.Statement(subject, predicate, object)
 
39
        stream = self.cache.find_statements(query_statement)
 
40
        return defer.succeed(stream_wrapper(stream))
 
41
 
 
42
 
 
43
class MovieDBTest(TestCase):
 
44
    test_file_alien = u'file:///home/luser/Videos/ALIEN.[ReDUX].avi'
 
45
    test_file_resident = u'file:///home/luser/Videos/Resident%20Evil.avi'
 
46
 
 
47
    test_file_alien_blank = RDF.Node()
 
48
    test_file_resident_blank = RDF.Node()
 
49
 
 
50
    def setUp(self):
 
51
        manager = ManagerMockUp()
 
52
        self.source = NameParserDataSource(manager=manager)
 
53
        manager.cache.add_statement(RDF.Statement(RDF.Uri(self.test_file_alien),
 
54
                                                  moo['dataOf'],
 
55
                                                  self.test_file_alien_blank))
 
56
        manager.cache.add_statement(RDF.Statement(RDF.Uri(self.test_file_resident),
 
57
                                                  moo['dataOf'],
 
58
                                                  self.test_file_resident_blank))
 
59
 
 
60
    def tearDown(self):
 
61
        pass
 
62
 
 
63
    def test_find_file_name_alien(self):
 
64
        dfr = self.source._get_file_name(self.test_file_alien_blank)
 
65
 
 
66
        def check_result(file_name):
 
67
            self.failUnlessEqual(file_name,\
 
68
                                 u'ALIEN.[ReDUX]')
 
69
        dfr.addCallback(check_result)
 
70
        return dfr
 
71
 
 
72
    def test_find_file_name_resident(self):
 
73
        dfr = self.source._get_file_name(self.test_file_resident_blank)
 
74
 
 
75
        def check_result(file_name):
 
76
            self.failUnlessEqual(file_name,\
 
77
                                 u'Resident Evil')
 
78
        dfr.addCallback(check_result)
 
79
        return dfr
 
80
 
 
81
    def test_clean_name_simple(self):
 
82
        dfr = self.source.find_statements(self.test_file_alien_blank, \
 
83
                                          moo['cleanName'], \
 
84
                                          None)
 
85
 
 
86
        def check_result(statements):
 
87
            count = 0
 
88
 
 
89
            for statement in statements:
 
90
                if statement.predicate == moo['cleanName'] \
 
91
                        and statement.subject == \
 
92
                            self.test_file_alien_blank:
 
93
                    self.failUnlessEqual(statement.object, RDF.Node('alien'))
 
94
                    count += 1
 
95
 
 
96
            self.failUnlessEqual(count, 1)
 
97
 
 
98
        dfr.addCallback(check_result)
 
99
        return dfr
 
100