1
# -*- coding: utf-8 -*-
2
# Moovida - Home multimedia server
3
# Copyright (C) 2006-2009 Fluendo Embedded S.L. (www.fluendo.com).
6
# This file is available under one of two license agreements.
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.
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.
17
# Authors: Fernando Casanova <fcasanova@fluendo.com>
19
from twisted.trial.unittest import TestCase
20
from twisted.internet import defer
22
from plugins.name_parser.metadata_source import NameParserDataSource
23
from plugins.ontology.name_spaces import moo
27
def stream_wrapper(stream):
28
# FIXME: should be put somewhere in utils
29
for element in stream:
32
class ManagerMockUp(object):
34
super(ManagerMockUp, self).__init__()
35
self.cache = RDF.Model()
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))
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'
47
test_file_alien_blank = RDF.Node()
48
test_file_resident_blank = RDF.Node()
51
manager = ManagerMockUp()
52
self.source = NameParserDataSource(manager=manager)
53
manager.cache.add_statement(RDF.Statement(RDF.Uri(self.test_file_alien),
55
self.test_file_alien_blank))
56
manager.cache.add_statement(RDF.Statement(RDF.Uri(self.test_file_resident),
58
self.test_file_resident_blank))
63
def test_find_file_name_alien(self):
64
dfr = self.source._get_file_name(self.test_file_alien_blank)
66
def check_result(file_name):
67
self.failUnlessEqual(file_name,\
69
dfr.addCallback(check_result)
72
def test_find_file_name_resident(self):
73
dfr = self.source._get_file_name(self.test_file_resident_blank)
75
def check_result(file_name):
76
self.failUnlessEqual(file_name,\
78
dfr.addCallback(check_result)
81
def test_clean_name_simple(self):
82
dfr = self.source.find_statements(self.test_file_alien_blank, \
86
def check_result(statements):
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'))
96
self.failUnlessEqual(count, 1)
98
dfr.addCallback(check_result)