3 unittest). These will both pass when you run "manage.py test". |
3 unittest). These will both pass when you run "manage.py test". |
4 |
4 |
5 Replace these with more appropriate tests for your application. |
5 Replace these with more appropriate tests for your application. |
6 """ |
6 """ |
7 |
7 |
8 from django.test import TestCase |
8 from django.core.management import call_command |
9 from ldt.ldt_utils.models import User, Project |
9 from ldt.ldt_utils.models import User, Project, Content |
10 from ldt.ldt_utils.utils import LdtAnnotation, create_ldt |
10 from ldt.ldt_utils.utils import LdtUtils, LdtAnnotation, create_ldt |
11 from ldt.test.client import Client |
11 from ldt.test.client import Client |
|
12 from ldt.test.testcases import TestCase |
|
13 import lxml.etree |
12 import uuid |
14 import uuid |
|
15 |
13 |
16 |
14 class ProjectTest(TestCase): |
17 class ProjectTest(TestCase): |
15 |
18 |
16 fixtures = ['base_data.json', 'user_data.json'] |
19 fixtures = ['base_data.json', 'user_data.json'] |
17 |
20 |
18 def setUp(self): |
21 def setUp(self): |
19 self.client = Client() |
22 self.client = Client() |
20 User.objects.create_superuser('blop', 'blop@blop.com', 'blop') |
23 User.objects.create_superuser('blop', 'blop@blop.com', 'blop') |
21 |
24 |
22 _ = self.client.login(username='blop', password='blop') |
25 _ = self.client.login(username='blop', password='blop') |
23 |
|
24 self.user = User() |
26 self.user = User() |
25 self.user.username = 'blop' |
27 self.user.username = 'blop' |
|
28 self.LU = LdtUtils() |
|
29 self.project = Project(title="titleproj1", owner=self.user) |
|
30 self.project.ldt = '<iri ldtversion="1.0.3" xmlns:dc="http://dublincore.org/documents/dcmi-namespace/"><project id="af3b99e4-b695-11df-bfde-00145ea4a2be" user="admin" title="CA:reponse a TC" abstract=""/> <medias> <media extra="" id="laurentcantet_entrelesmurs" pict="" src="http://amateur.iri.centrepompidou.fr//atelier/static/media/ldt/laurentcantet_entrelesmurs/laurentcantet_entrelesmurs.iri" video="rtmp://media.iri.centrepompidou.fr/ddc_player/video/regardssignes/"/> </medias> <annotations> <content id="laurentcantet_entrelesmurs"> <ensemble id="ens_perso" idProject="fe0d5d4c-2201-11df-8a24-00145ea4a2be" title="Decoupages personnels" author="perso" abstract=""> <decoupage id="c_EFC3FFE7-0204-A086-EBEC-D2A03A0E56CB" author="perso"> <title>CA: prof et admin</title> <abstract/> <elements> <element id="s_442AAB3A-42DA-F9BF-75E7-D2A0663FD5FF" begin="985690" dur="373222" author="" date="2010/09/02" color="16711680" src=""> <title/> <abstract/> <audio source=""/> <tags/> </element> <element id="s_0050F043-3AD2-0A7C-6699-D2A03A1EBA02" begin="5052858" dur="124407" author="" date="2010/09/02" color="10053375" src=""> <title>conseil de classe</title> <abstract>Reprise de la figure precedente</abstract> <audio source="undefined"/> <tags/> </element> </elements> </decoupage> <decoupage id="c_EEEF5C29-86E1-4AAE-E068-04EB5B00E492" author="perso"> <title>TC: prof et admin</title> <abstract/> <elements> <element id="s_880D9D4B-8BC0-BA43-5ECA-04EBA9FC9E59" begin="2426894" dur="141478" author="" date="2010/02/25" color="10053375" src=""> <title>Conseil de classe</title> <abstract/> <audio source=""/> <tags> <tag>Argumentation</tag> </tags> </element> <element id="s_D568A57C-7110-DED2-3165-04EC54387060" begin="5052858" dur="124407" author="" date="2010/02/25" color="10053375" src=""> <title>conseil de classe</title> <abstract>Reprise de la figure precedente</abstract> <audio source="undefined"/> <tags/> </element> </elements> </decoupage> </ensemble> </content> </annotations> <displays> <display id="0" title="Init view" idsel="laurentcantet_entrelesmurs" tc="2426424" zoom="0" scroll="0" infoBAB=""> <audio source=""/> <content id="laurentcantet_entrelesmurs"> <decoupage idens="en_2" id="de_PPP" tagsSelect=""/> <decoupage idens="laurentcantet_entrelesmurs" id="c_14A2E638-1936-97DC-E303-2DBA6A82A8B3" tagsSelect=""/> <decoupage idens="ens_perso" id="c_EEEF5C29-86E1-4AAE-E068-04EB5B00E492" tagsSelect=""/> <decoupage idens="ens_perso" id="c_EFC3FFE7-0204-A086-EBEC-D2A03A0E56CB" tagsSelect=""/> </content> </display> </displays> <edits> <editing id="0" tags=""> <title>Bout a bout 1</title> <abstract/> <edit id="edit1" tags=""> <eList/> <caption/> <audio/> <mList/> </edit> <edit id="edit2" tags=""> <eList/> <caption/> <audio/> <mList/> </edit> </editing> </edits> </iri>' |
|
31 self.project.id = "11321" |
|
32 self.project.ldt_id = str(uuid.uuid1()) |
|
33 self.project.description = "proj1description" |
|
34 self.project.save() |
26 |
35 |
27 def test_create_project(self): |
36 def test_create_project(self): |
|
37 self.cont1 = Content(iriurl="cont1_id/iriurl1", duration=123) |
|
38 self.cont1.iri_id = "cont1_id" |
|
39 self.cont1.save() |
|
40 |
|
41 self.cont2 = Content(iriurl="cont2_id/iriurl2", duration=100) |
|
42 self.cont2.iri_id = "cont2_id" |
|
43 self.cont2.save() |
|
44 |
28 self.project2 = Project(title="titleproj2", owner=self.user) |
45 self.project2 = Project(title="titleproj2", owner=self.user) |
29 self.project2.ldt = '<iri ldtversion="1.0.3" xmlns:dc="http://dublincore.org/documents/dcmi-namespace/"><project id="af3b99e4-b695-11df-bfde-00145ea4a212" user="admin" title="CA:reponse a TC" abstract=""/> <medias> <media extra="" id="laurentcantet_entrelesmurs" pict="" src="http://amateur.iri.centrepompidou.fr//atelier/static/media/ldt/laurentcantet_entrelesmurs/laurentcantet_entrelesmurs.iri" video="rtmp://media.iri.centrepompidou.fr/ddc_player/video/regardssignes/"/> </medias> <annotations> <content id="laurentcantet_entrelesmurs"> <ensemble id="ens_perso" idProject="fe0d5d4c-2201-11df-8a24-00145ea4a2be" title="Decoupages personnels" author="perso" abstract=""> <decoupage id="c_EFC3FFE7-0204-A086-EBEC-D2A03A0E56CB" author="perso"> <title>CA: prof et admin</title> <abstract/> <elements> <element id="s_442AAB3A-42DA-F9BF-75E7-D2A0663FD5FF" begin="985690" dur="373222" author="" date="2010/09/02" color="16711680" src=""> <title/> <abstract/> <audio source=""/> <tags/> </element> <element id="s_0050F043-3AD2-0A7C-6699-D2A03A1EBA02" begin="5052858" dur="124407" author="" date="2010/09/02" color="10053375" src=""> <title>conseil de classe</title> <abstract>Reprise de la figure precedente</abstract> <audio source="undefined"/> <tags/> </element> </elements> </decoupage> <decoupage id="c_EEEF5C29-86E1-4AAE-E068-04EB5B00E492" author="perso"> <title>TC: prof et admin</title> <abstract/> <elements> <element id="s_880D9D4B-8BC0-BA43-5ECA-04EBA9FC9E59" begin="2426894" dur="141478" author="" date="2010/02/25" color="10053375" src=""> <title>Conseil de classe</title> <abstract/> <audio source=""/> <tags> <tag>Argumentation</tag> </tags> </element> <element id="s_D568A57C-7110-DED2-3165-04EC54387060" begin="5052858" dur="124407" author="" date="2010/02/25" color="10053375" src=""> <title>conseil de classe</title> <abstract>Reprise de la figure precedente</abstract> <audio source="undefined"/> <tags/> </element> </elements> </decoupage> </ensemble> </content> </annotations> <displays> <display id="0" title="Init view" idsel="laurentcantet_entrelesmurs" tc="2426424" zoom="0" scroll="0" infoBAB=""> <audio source=""/> <content id="laurentcantet_entrelesmurs"> <decoupage idens="en_2" id="de_PPP" tagsSelect=""/> <decoupage idens="laurentcantet_entrelesmurs" id="c_14A2E638-1936-97DC-E303-2DBA6A82A8B3" tagsSelect=""/> <decoupage idens="ens_perso" id="c_EEEF5C29-86E1-4AAE-E068-04EB5B00E492" tagsSelect=""/> <decoupage idens="ens_perso" id="c_EFC3FFE7-0204-A086-EBEC-D2A03A0E56CB" tagsSelect=""/> </content> </display> </displays> <edits> <editing id="0" tags=""> <title>Bout a bout 1</title> <abstract/> <edit id="edit1" tags=""> <eList/> <caption/> <audio/> <mList/> </edit> <edit id="edit2" tags=""> <eList/> <caption/> <audio/> <mList/> </edit> </editing> </edits> </iri>' |
46 |
|
47 self.project2.ldt = self.LU.generate_ldt(Content.objects.all()) |
30 self.project2.ldt_id = str(uuid.uuid1()) |
48 self.project2.ldt_id = str(uuid.uuid1()) |
31 self.project2.description = "proj2description" |
49 self.project2.description = "proj2description" |
32 self.project2.save() |
50 self.project2.save() |
33 |
51 |
34 self.assertEqual(Project.objects.get(ldt_id=self.project2.ldt_id), self.project2) |
52 self.assertEqual(Project.objects.get(ldt_id=self.project2.ldt_id), self.project2) |
35 |
53 |
36 #test deletion of project without annotation |
54 #test deletion of project without annotation |
37 def test_del_project_v1(self): |
55 def test_del_project_v1(self): |
|
56 self.cont3 = Content(iriurl="cont3_id/iriurl3", duration=100) |
|
57 self.cont3.iri_id = "cont3_id" |
|
58 self.cont3.save() |
|
59 |
38 self.project3 = Project(title="titleproj3", owner=self.user) |
60 self.project3 = Project(title="titleproj3", owner=self.user) |
39 self.project3.ldt = '<iri ldtversion="1.0.3" xmlns:dc="http://dublincore.org/documents/dcmi-namespace/"><project id="af3b99e4-b695-11df-bfde-00145ea4a333" user="admin" title="CA:reponse a TC" abstract=""/> <medias> <media extra="" id="laurentcantet_entrelesmurs" pict="" src="http://amateur.iri.centrepompidou.fr//atelier/static/media/ldt/laurentcantet_entrelesmurs/laurentcantet_entrelesmurs.iri" video="rtmp://media.iri.centrepompidou.fr/ddc_player/video/regardssignes/"/> </medias> <annotations> <content id="laurentcantet_entrelesmurs"> <ensemble id="ens_perso" idProject="fe0d5d4c-2201-11df-8a24-00145ea4a2be" title="Decoupages personnels" author="perso" abstract=""> <decoupage id="c_EFC3FFE7-0204-A086-EBEC-D2A03A0E56CB" author="perso"> <title>CA: prof et admin</title> <abstract/> <elements> <element id="s_442AAB3A-42DA-F9BF-75E7-D2A0663FD5FF" begin="985690" dur="373222" author="" date="2010/09/02" color="16711680" src=""> <title/> <abstract/> <audio source=""/> <tags/> </element> <element id="s_0050F043-3AD2-0A7C-6699-D2A03A1EBA02" begin="5052858" dur="124407" author="" date="2010/09/02" color="10053375" src=""> <title>conseil de classe</title> <abstract>Reprise de la figure precedente</abstract> <audio source="undefined"/> <tags/> </element> </elements> </decoupage> <decoupage id="c_EEEF5C29-86E1-4AAE-E068-04EB5B00E492" author="perso"> <title>TC: prof et admin</title> <abstract/> <elements> <element id="s_880D9D4B-8BC0-BA43-5ECA-04EBA9FC9E59" begin="2426894" dur="141478" author="" date="2010/02/25" color="10053375" src=""> <title>Conseil de classe</title> <abstract/> <audio source=""/> <tags> <tag>Argumentation</tag> </tags> </element> <element id="s_D568A57C-7110-DED2-3165-04EC54387060" begin="5052858" dur="124407" author="" date="2010/02/25" color="10053375" src=""> <title>conseil de classe</title> <abstract>Reprise de la figure precedente</abstract> <audio source="undefined"/> <tags/> </element> </elements> </decoupage> </ensemble> </content> </annotations> <displays> <display id="0" title="Init view" idsel="laurentcantet_entrelesmurs" tc="2426424" zoom="0" scroll="0" infoBAB=""> <audio source=""/> <content id="laurentcantet_entrelesmurs"> <decoupage idens="en_2" id="de_PPP" tagsSelect=""/> <decoupage idens="laurentcantet_entrelesmurs" id="c_14A2E638-1936-97DC-E303-2DBA6A82A8B3" tagsSelect=""/> <decoupage idens="ens_perso" id="c_EEEF5C29-86E1-4AAE-E068-04EB5B00E492" tagsSelect=""/> <decoupage idens="ens_perso" id="c_EFC3FFE7-0204-A086-EBEC-D2A03A0E56CB" tagsSelect=""/> </content> </display> </displays> <edits> <editing id="0" tags=""> <title>Bout a bout 1</title> <abstract/> <edit id="edit1" tags=""> <eList/> <caption/> <audio/> <mList/> </edit> <edit id="edit2" tags=""> <eList/> <caption/> <audio/> <mList/> </edit> </editing> </edits> </iri>' |
61 self.project3.ldt = self.LU.generate_ldt(Content.objects.all()) |
40 self.project3.id = "333" |
62 self.project3.id = "333" |
41 self.project3.ldt_id = str(uuid.uuid1()) |
63 self.project3.ldt_id = str(uuid.uuid1()) |
42 self.project3.description = "proj3description" |
64 self.project3.description = "proj3description" |
43 self.project3.save() |
65 self.project3.save() |
44 |
66 |
47 with self.assertRaises(Project.DoesNotExist): |
69 with self.assertRaises(Project.DoesNotExist): |
48 Project.objects.get(ldt_id=self.project3.ldt_id) |
70 Project.objects.get(ldt_id=self.project3.ldt_id) |
49 |
71 |
50 #test deletion of project with annotations |
72 #test deletion of project with annotations |
51 def test_del_project_v2(self): |
73 def test_del_project_v2(self): |
|
74 self.cont4 = Content(iriurl="cont4_id/iriurl4", duration=100) |
|
75 self.cont4.iri_id = "cont4_id" |
|
76 self.cont4.save() |
52 |
77 |
53 self.project4 = Project(title="titleproj3", owner=self.user) |
78 self.project4 = Project(title="titleproj4", owner=self.user) |
54 self.project4.ldt = '<iri ldtversion="1.0.3" xmlns:dc="http://dublincore.org/documents/dcmi-namespace/"><project id="af3b99e4-b695-11df-bfde-00145ea4a333" user="admin" title="CA:reponse a TC" abstract=""/> <medias> <media extra="" id="laurentcantet_entrelesmurs" pict="" src="http://amateur.iri.centrepompidou.fr//atelier/static/media/ldt/laurentcantet_entrelesmurs/laurentcantet_entrelesmurs.iri" video="rtmp://media.iri.centrepompidou.fr/ddc_player/video/regardssignes/"/> </medias> <annotations> <content id="laurentcantet_entrelesmurs"> <ensemble id="ens_perso" idProject="fe0d5d4c-2201-11df-8a24-00145ea4a2be" title="Decoupages personnels" author="perso" abstract=""> <decoupage id="c_EFC3FFE7-0204-A086-EBEC-D2A03A0E56CB" author="perso"> <title>CA: prof et admin</title> <abstract/> <elements> <element id="s_442AAB3A-42DA-F9BF-75E7-D2A0663FD5FF" begin="985690" dur="373222" author="" date="2010/09/02" color="16711680" src=""> <title/> <abstract/> <audio source=""/> <tags/> </element> <element id="s_0050F043-3AD2-0A7C-6699-D2A03A1EBA02" begin="5052858" dur="124407" author="" date="2010/09/02" color="10053375" src=""> <title>conseil de classe</title> <abstract>Reprise de la figure precedente</abstract> <audio source="undefined"/> <tags/> </element> </elements> </decoupage> <decoupage id="c_EEEF5C29-86E1-4AAE-E068-04EB5B00E492" author="perso"> <title>TC: prof et admin</title> <abstract/> <elements> <element id="s_880D9D4B-8BC0-BA43-5ECA-04EBA9FC9E59" begin="2426894" dur="141478" author="" date="2010/02/25" color="10053375" src=""> <title>Conseil de classe</title> <abstract/> <audio source=""/> <tags> <tag>Argumentation</tag> </tags> </element> <element id="s_D568A57C-7110-DED2-3165-04EC54387060" begin="5052858" dur="124407" author="" date="2010/02/25" color="10053375" src=""> <title>conseil de classe</title> <abstract>Reprise de la figure precedente</abstract> <audio source="undefined"/> <tags/> </element> </elements> </decoupage> </ensemble> </content> </annotations> <displays> <display id="0" title="Init view" idsel="laurentcantet_entrelesmurs" tc="2426424" zoom="0" scroll="0" infoBAB=""> <audio source=""/> <content id="laurentcantet_entrelesmurs"> <decoupage idens="en_2" id="de_PPP" tagsSelect=""/> <decoupage idens="laurentcantet_entrelesmurs" id="c_14A2E638-1936-97DC-E303-2DBA6A82A8B3" tagsSelect=""/> <decoupage idens="ens_perso" id="c_EEEF5C29-86E1-4AAE-E068-04EB5B00E492" tagsSelect=""/> <decoupage idens="ens_perso" id="c_EFC3FFE7-0204-A086-EBEC-D2A03A0E56CB" tagsSelect=""/> </content> </display> </displays> <edits> <editing id="0" tags=""> <title>Bout a bout 1</title> <abstract/> <edit id="edit1" tags=""> <eList/> <caption/> <audio/> <mList/> </edit> <edit id="edit2" tags=""> <eList/> <caption/> <audio/> <mList/> </edit> </editing> </edits> </iri>' |
79 self.project4.ldt=self.LU.generate_ldt(Content.objects.all()) |
55 self.project4.id = "444" |
80 self.project4.id = "444" |
56 self.project4.ldt_id = str(uuid.uuid1()) |
81 self.project4.ldt_id = str(uuid.uuid1()) |
57 self.project4.description = "proj4description" |
82 self.project4.description = "proj4description" |
58 self.project4.save() |
83 self.project4.save() |
59 |
84 |
67 |
92 |
68 self.project4.delete() |
93 self.project4.delete() |
69 |
94 |
70 with self.assertRaises(Project.DoesNotExist): |
95 with self.assertRaises(Project.DoesNotExist): |
71 Project.objects.get(ldt_id=self.project4.ldt_id) |
96 Project.objects.get(ldt_id=self.project4.ldt_id) |
|
97 |
|
98 def test_clean_database_project(self) : |
|
99 self.cont5 = Content(iriurl="cont5_id/iriurl5", duration=123) |
|
100 self.cont5.iri_id = "cont5_id" |
|
101 self.cont5.save() |
|
102 |
|
103 self.cont6 = Content(iriurl="cont6_id/iriurl6", duration=100) |
|
104 self.cont6.iri_id = "cont6_id" |
|
105 self.cont6.save() |
|
106 |
|
107 self.cont7 = Content(iriurl="cont7_id/iriurl7", duration=100) |
|
108 self.cont7.iri_id = "cont7_id" |
|
109 self.cont7.save() |
|
110 |
|
111 self.project.contents.add(self.cont5, self.cont6) |
|
112 |
|
113 doc = self.LU.generate_ldt(Content.objects.all()) |
|
114 |
|
115 #project5 : valid project |
|
116 self.project5 = Project(title="titleproj5", owner=self.user) |
|
117 ldt = lxml.etree.tostring(doc, pretty_print = False) |
|
118 self.project5.ldt = ldt |
|
119 self.project5.id = "555" |
|
120 self.project5.ldt_id = str(uuid.uuid1()) |
|
121 self.project5.description = "proj5description" |
|
122 self.project5.save() |
|
123 |
|
124 #project6 : project with empty ldt |
|
125 self.project6 = Project(title="titleproj5", owner=self.user) |
|
126 self.project6.id = "666" |
|
127 self.project6.ldt_id = str(uuid.uuid1()) |
|
128 self.project6.description = "proj6description" |
|
129 self.project6.save() |
|
130 |
|
131 #project7 : project with a non-existing media |
|
132 |
|
133 self.project7 = Project(title="titleproj7", owner=self.user) |
|
134 self.project7.id = "777" |
|
135 self.project7.ldt_id = str(uuid.uuid1()) |
|
136 self.project7.ldt = '<iri><project id="a18ec3de-49c1-11e2-8e5d-00161798aedb" title="" user="IRI Web" abstract=""/><medias><media id="non_existing_media" src="ldt/non_existing_media/non_existing_media_iri_url" video="%(stream_url)s" pict="" extra=""/></medias><annotations/><displays><display id="0" title="generated" idsel="cont5_id" tc="0"><content id="cont5_id"/><content id="cont6_id"/><content id="cont7_id"/></display></displays><edits/></iri>' |
|
137 self.project7.description = "proj7description" |
|
138 self.project7.save() |
|
139 |
|
140 #project8 : project with multiple medias some valid and some that don't exist |
|
141 self.project8 = Project(title="titleproj8", owner=self.user) |
|
142 self.project8.id = "888" |
|
143 self.project8.ldt_id = str(uuid.uuid1()) |
|
144 self.project8.ldt = '<iri><project id="a18ec3de-49c1-11e2-8e5d-00161798aedb" title="" user="IRI Web" abstract=""/><medias><media id="cont5_id" src="ldt/cont5_id/iriurl5" video="%(stream_url)s" pict="" extra=""/><media id="non_existing_media" src="ldt/non_existing_media/non_existing_media_iri_url" video="%(stream_url)s" pict="" extra=""/><media id="cont6_id" src="ldt/cont6_id/iriurl6" video="%(stream_url)s" pict="" extra=""/><media id="cont7_id" src="ldt/cont7_id/iriurl7" video="%(stream_url)s" pict="" extra=""/></medias><annotations/><displays><display id="0" title="generated" idsel="cont5_id" tc="0"><content id="cont5_id"/><content id="cont6_id"/><content id="cont7_id"/></display></displays><edits/></iri>' |
|
145 self.project8.description = "proj8description" |
|
146 self.project8.save() |
|
147 |
|
148 #project9 : project without any media |
|
149 self.project9 = Project(title="titleproj9", owner=self.user) |
|
150 self.project9.id = "999" |
|
151 self.project9.ldt_id = str(uuid.uuid1()) |
|
152 self.project9.ldt = '<iri><project id="a18ec3de-49c1-11e2-8e5d-00161798aedb" title="" user="IRI Web" abstract=""/><medias></medias><annotations/><displays><display id="0" title="generated" idsel="cont5_id" tc="0"><content id="cont5_id"/><content id="cont6_id"/><content id="cont7_id"/></display></displays><edits/></iri>' |
|
153 self.project9.description = "proj9description" |
|
154 self.project9.save() |
|
155 |
|
156 call_command('set_projectldtiri') |
|
157 |
|
158 with self.assertRaises(Project.DoesNotExist): |
|
159 Project.objects.get(ldt_id=self.project6.ldt_id) |
|
160 |
|
161 with self.assertRaises(Project.DoesNotExist): |
|
162 Project.objects.get(ldt_id=self.project7.ldt_id) |
|
163 |
|
164 with self.assertRaises(Project.DoesNotExist): |
|
165 Project.objects.get(ldt_id=self.project9.ldt_id) |
|
166 |
|
167 self.assertEqual(ldt, self.project5.ldt) |
|
168 |