-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathunit.py
158 lines (117 loc) · 5.29 KB
/
unit.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
import unittest
import tekstowo
import models
from datetime import date
from models import draft
import sys
class TestLyrics(unittest.TestCase):
@classmethod
def setUpClass(self):
self.lyrics = tekstowo.getText("http://www.tekstowo.pl/piosenka,rick_astley,never_gonna_give_you_up.html")
def test_ArtistName(self):
self.assertEqual(self.lyrics.artist, "Rick Astley", "artist name doesn't match")
def test_SongName(self):
self.assertEqual(self.lyrics.songName, "Never gonna give you up", "song")
def test_Url(self):
self.assertEqual(self.lyrics.url, "https://www.tekstowo.pl/piosenka,rick_astley,never_gonna_give_you_up.html", "url invalid")
def test_HasText(self):
self.assertTrue(self.lyrics.hasText, "has text?")
def test_HasTranslation(self):
self.assertTrue(self.lyrics.hasTranslation, "has translation?")
def test_ID(self):
self.assertEqual(self.lyrics.id, 36785, "bad id")
def test_Comments(self):
self.assertEqual(len(self.lyrics.getComments(0)), self.lyrics.commentCount)
@unittest.skipIf(not tekstowo.models.session.isLogged, "Not logged in")
def test_VoteUp(self):
self.assertGreaterEqual(self.lyrics.rankSongUp(), 1)
class TestArtist(unittest.TestCase):
@classmethod
def setUpClass(self):
self.artist = tekstowo.getArtist("https://www.tekstowo.pl/wykonawca,rick_astley.html")
def test_Name(self):
self.assertEqual(self.artist.name, "Rick Astley", "name doesen't match")
def test_Albums(self):
self.assertTrue(len(self.artist.albums) == 9, "albums doesn't match")
def test_AmountOfFans(self):
self.assertGreaterEqual(self.artist.amountOfFans, 9, "fans doesn't match")
def test_SongList(self):
self.assertEqual(len(self.artist.songList), 108, "amount of songs doesnt match")
self.assertTrue(type(self.artist.songList[0]), draft.Song)
def test_Object(self):
self.assertIsInstance(self.artist.songList[0].getLyricsObject(), models.Lyrics)
class TestSongSearch(unittest.TestCase):
@classmethod
def setUpClass(self):
self.searchSong = tekstowo.searchSong("Never gonna give you up")
def test_Url(self):
self.assertTrue(self.searchSong.url == "https://tekstowo.pl/szukaj,tytul,Never+gonna+give+you+up,strona,1.html", "bad url")
def test_Length(self):
self.assertLessEqual(len(self.searchSong.entries), 30, "too many entries")
def test_Find(self):
self.assertTrue(self.searchSong[0].url == "/piosenka,rick_astley,never_gonna_give_you_up.html")
def test_getLyricsObject(self):
lyricsObject = self.searchSong[0].getLyricsObject()
self.assertTrue(type(lyricsObject) == models.Lyrics)
class TestArtistSearch(unittest.TestCase):
@classmethod
def setUpClass(self):
self.searchArtist = tekstowo.searchArtist("Rick Astley")
def test_Find(self):
self.assertTrue(self.searchArtist[0].url == "/piosenki_artysty,rick_astley.html")
def test_GetArtistObject(self):
artistObject = self.searchArtist[0].getArtistObject()
self.assertTrue(type(artistObject) == models.Artist)
def test_Length(self):
self.assertLessEqual(len(self.searchArtist.entries), 30, "too many entries")
def test_Url(self):
self.assertTrue(self.searchArtist.url == "https://tekstowo.pl/szukaj,wykonawca,Rick+Astley,strona,1.html", "bad url")
class TestUser(unittest.TestCase):
@classmethod
def setUpClass(self):
self.user = tekstowo.getUser("bombelbombel")
def test_Desc(self):
self.assertEqual(self.user.login, "bombelbombel", "invalid name")
self.assertEqual(self.user.name, "")
self.assertEqual(self.user.registerDate, date(2009, 7, 7))
self.assertEqual(self.user.gg, -1)
def test_Added(self):
text, translation, video, soundtrack = self.user.added
self.assertGreaterEqual(text, 81975)
self.assertGreaterEqual(translation, 4314)
self.assertGreaterEqual(video, 56261)
self.assertGreaterEqual(soundtrack, 1)
def test_Edited(self):
text, translation, soundtrack = self.user.edited
self.assertGreaterEqual(text, 6107)
self.assertGreaterEqual(translation, 159)
self.assertGreaterEqual(soundtrack, 0)
def test_Panels(self):
self.assertGreaterEqual(len(self.user.invitedUsers), 1)
self.assertEqual(len(self.user.recent), 10)
self.assertEqual(len(self.user.fanof), 0)
def test_Generators(self):
for gen in [self.user.getInvited(),
self.user.getLyrics(),
self.user.getSoundtracks(),
self.user.getTranslations(),
self.user.getVideoclips()]:
try:
self.assertIsNot(next(gen), next(gen), str(gen))
except StopIteration:
pass
# idk, sometimes exit=True doesnt work
# failsafe
sys.exit = lambda a: 0
if __name__ == "__main__":
if len(sys.argv) > 1:
if(sys.argv[1] in ["-u", "--user"]):
from getpass import getpass
tekstowo.login(input("Login: "), getpass("Password: "))
del sys.argv[1:]
unittest.main(exit=False)
tekstowo.logout()
else:
unittest.main()
else:
unittest.main()