root/trunk/tests/daotest.py @ 42

Revision 42, 6.7 KB (checked in by clauz, 4 years ago)

adding playlist randomization plus small changes

  • Property svn:keywords set to Id
Line 
1# vim:fileencoding=utf-8:nomodified
2# $Id$
3# Test of the dao module
4
5import json
6from radiomate.dao import *
7from radiomate.mate import *
8import sys
9import MySQLdb
10
11# connection parameters
12DBHOST="127.0.0.1"
13DBUSER="mate"
14DBPASSWORD="radi0"
15DATABASE="radiomate0"
16
17def roledaotest():
18        r = Role()
19        r.rolename = "testrole"
20        cm = DBConnectionManager(
21                        dbhost = DBHOST, 
22                        dbuser = DBUSER,
23                        dbpassword = DBPASSWORD,
24                        database = DATABASE
25                        )
26        roledao = RoleDAO(cm)
27        roledao.insert(r)
28        r1 = roledao.getByName("testrole")
29        print r1
30        rall = roledao.getAll()
31        print rall
32        r1.canManageRoles = True
33        roledao.update(r1)
34        r2 = roledao.getByName("testrole")
35        print r2
36        roledao.removeByName("testrole")
37
38def userdaotest():
39        r = Role()
40        r.rolename = "testrole"
41        cm = DBConnectionManager(
42                        dbhost = DBHOST, 
43                        dbuser = DBUSER,
44                        dbpassword = DBPASSWORD,
45                        database = DATABASE
46                        )
47        roledao = RoleDAO(cm)
48        roledao.insert(r)
49        u = User()
50        u.name = "testuser"
51        u.password = "secret"
52        u.displayname = "Test User"
53        u.rolename = r.rolename
54        userdao = UserDAO(cm)
55        userdao.insert(u)
56        u0 = userdao.logincheck(u.name, u.password)
57        print u0
58        assert u0
59        u1 = userdao.getByName(u.name)
60        print u1
61        u1.displayname = "Modified Test User"
62        userdao.update(u1)
63        u2 = userdao.getByName(u1.name)
64        print u2
65        res = userdao.getAll()
66        print res
67        userdao.removeByName(u.name)
68        roledao.removeByName(r.rolename)
69
70def mediafilesdaotest():
71        r = Role()
72        r.rolename = "testrole"
73        u = User()
74        u.name = "foobar1"
75        u.rolename = r.rolename
76
77        mf = MediaFile()
78        mf.user = u.name
79        mf.path = "/tmp/ulululu.mp3"
80        mf.type = 'audio'
81        mf.title = "Ulululu"
82        mf.author = "Shakerobba"
83        mf.album = "Steam this album"
84        mf.genre = "steam pop"
85        mf.year = 1932
86        mf.comment = "very good music"
87        mf.license = "CC"
88        mf.tags = "shakerobba,steam,wolves"
89        cm = DBConnectionManager(
90                        dbhost = DBHOST, 
91                        dbuser = DBUSER,
92                        dbpassword = DBPASSWORD,
93                        database = DATABASE
94                        )
95        rdao = RoleDAO(cm)
96        rdao.insert(r)
97
98        udao = UserDAO(cm)
99        udao.insert(u)
100        mediafiledao = MediaFileDAO(cm)
101        id = mediafiledao.insert(mf)
102        mf2 = mediafiledao.getById(id)
103        print mf2
104        mf2.license = "AGPL"
105        mediafiledao.update(mf2)
106        mf3 = mediafiledao.getById(id)
107        print mf3
108        mediafiledao.removeById(id)
109        udao.removeByName(u.name)
110        rdao.removeByName(r.rolename)
111
112def playlistdaotest():
113        cm = DBConnectionManager(
114                        dbhost = DBHOST, 
115                        dbuser = DBUSER,
116                        dbpassword = DBPASSWORD,
117                        database = DATABASE
118                        )
119        r = Role()
120        r.rolename = "testrole"
121        rdao = RoleDAO(cm)
122        rdao.insert(r)
123        u1 = User()
124        u1.name = "foobar1"
125        u1.rolename = r.rolename
126        udao = UserDAO(cm)
127        udao.insert(u1)
128        u2 = User()
129        u2.name = "foobar2"
130        u2.rolename = r.rolename
131        udao.insert(u2)
132
133        mf = MediaFile()
134        mf.user = "foobar2"
135        mf.path = "/tmp/ulululu.mp3"
136        mf.type = 'audio'
137        mf.title = "Ulululu"
138        mf.author = "Shakerobba"
139        mf.album = "Steam this album"
140        mf.genre = "steam pop"
141        mf.year = 1932
142        mf.comment = "very good music"
143        mf.license = "CC"
144        mf.tags = "shakerobba,steam,wolves"
145
146        mf2 = MediaFile()
147        mf2.user = "foobar2"
148        mf2.path = "/tmp/ulululu2.mp3"
149        mf2.type = 'audio'
150        mf2.title = "Ulululu2"
151        mf2.author = "Shakerobba"
152        mf2.album = "Steam this album"
153        mf2.genre = "steam pop"
154        mf2.year = 1932
155        mf2.comment = "very good music"
156        mf2.license = "CC"
157        mf2.tags = "shakerobba,steam,wolves,sequel"
158       
159        mediafiledao = MediaFileDAO(cm)
160        id1 = mediafiledao.insert(mf)
161        id2 = mediafiledao.insert(mf2)
162        mf = mediafiledao.getById(id1)
163        mf2 = mediafiledao.getById(id2)
164
165        pl = PlayList()
166        pl.title = "just a test"
167        pl.creator = "foobar2"
168        pl.private = False
169        pl.random = False
170        pl.description = "testing dao"
171        pl.comment = ":)"
172        pl.tags = "test,prova,foo,bar"
173
174        pl.addMediaFile(mf)
175        pl.addMediaFile(mf2)
176       
177        pl.addOwner("foobar1")
178        pl.addViewer("foobar2")
179
180        print pl
181
182        playlistdao = PlayListDAO(cm)
183        plid = playlistdao.insert(pl)
184        print plid
185        pl2 = playlistdao.getById(plid)
186        print pl2
187
188        pl2.description = "testing dao 2"
189        playlistdao.update(pl2)
190        pl3 = playlistdao.getById(pl2.id)
191        print pl3
192
193        res = playlistdao.getByUser("foobar1")
194        print res
195
196        res = playlistdao.getByCreator("foobar2")
197        print res
198
199        mediafiledao.removeById(id1)
200        mediafiledao.removeById(id2)
201        playlistdao.removeById(plid)
202        udao.removeByName(u1.name)
203        udao.removeByName(u2.name)
204        rdao.removeByName(r.rolename)
205
206def timeslotdaotest():
207        cm = DBConnectionManager(
208                        dbhost = DBHOST, 
209                        dbuser = DBUSER,
210                        dbpassword = DBPASSWORD,
211                        database = DATABASE
212                        )
213        rdao = RoleDAO(cm)
214        udao = UserDAO(cm)
215        tsdao = TimeSlotDAO(cm)
216        playlistdao = PlayListDAO(cm)
217
218
219        r = Role()
220        r.rolename = "testrole"
221
222        u1 = User()
223        u1.name = "foobar1"
224        u1.rolename = "testrole"
225       
226        u2 = User()
227        u2.name = "foobar2"
228        u2.rolename = "testrole"
229
230        try:
231                rdao.insert(r)
232                udao.insert(u1)
233                udao.insert(u2)
234        except:
235                pass
236       
237        print "-- Playlist --"
238        pl = PlayList()
239        pl.title = "just a test"
240        pl.creator = "foobar2"
241        pl.private = False
242        pl.random = False
243        pl.description = "testing dao"
244        pl.comment = ":)"
245        pl.tags = "test,prova,foo,bar"
246        plid = playlistdao.insert(pl)
247        print "--"
248
249        print "-- TimeSlot --"
250        ts = TimeSlot()
251        ts.creator = 'foobar1'
252        ts.slottype = 'dummy'
253        ts.slotparams = {'par1': 0, 'par2': 'ciao'}
254        ts.beginningtime = {'year': 2010, 'month': 07, 'day': 1, 'hour': 10, 'minute': 0}
255        ts.duration = 60
256        ts.title = "The Test Show"
257        ts.description = "the best test show ever"
258        ts.comment = "just a test"
259        ts.tags = "test, show, radio"
260        print ts.beginningtime
261        print ts
262       
263        print "-- TimeSlot --"
264        ts.fallbackplaylist = plid
265        print ts
266        print "insertion"
267        tsid = tsdao.insert(ts)
268        print "getById --"
269        ts1 = tsdao.getById(tsid)
270        print ts1
271        ts1.description = "testing dao"
272        tsdao.update(ts1)
273
274        ts2 = tsdao.getById(tsid)
275        print ts2
276
277        res = tsdao.getFromTo("2010-07-01 9:00", "2010-07-01 12:00")
278        print res
279
280        tss = TimeSlot()
281        tss.title = "show"
282        res = tsdao.search(tss)
283        print res
284       
285        print "getNext"
286        res = tsdao.getNext("2010-07-01 8:00")
287        print res
288
289        tsdao.removeById(tsid)
290        playlistdao.removeById(plid)
291        udao.removeByName(u1.name)
292        udao.removeByName(u2.name)
293        rdao.removeByName(r.rolename)
294       
295
296def exceptiontest():
297        conn = MySQLdb.connect( 
298                        host = DBHOST, 
299                        user = DBUSER,
300                        passwd = DBPASSWORD,
301                        db = DATABASE
302                        )
303        try:
304                selstring = "SELECT dummyfield FROM roles"
305                cursor = conn.cursor(MySQLdb.cursors.DictCursor)
306                cursor.execute(selstring)
307                cursor.close()
308        except MySQLdb.Error, e:
309                raise RadioMateDAOException(e.args)
310       
311        conn.close()
312
313
314#execute
315print "---"
316roledaotest()
317userdaotest()
318mediafilesdaotest()
319playlistdaotest()
320timeslotdaotest()
321#exceptiontest()
322
Note: See TracBrowser for help on using the browser.