Add thread/conversation tests
This commit is contained in:
		
							parent
							
								
									b982259f1d
								
							
						
					
					
						commit
						baa734b32e
					
				| 
						 | 
				
			
			@ -28,6 +28,16 @@ class Timeline(object):
 | 
			
		|||
    protected = '.timeline-protected'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Conversation(object):
 | 
			
		||||
    main = '.main-tweet'
 | 
			
		||||
    before = '.before-tweet'
 | 
			
		||||
    after = '.after-tweet'
 | 
			
		||||
    replies = '.replies'
 | 
			
		||||
    thread = '.reply'
 | 
			
		||||
    tweet = '.status-el'
 | 
			
		||||
    tweet_text = '.status-content'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Poll(object):
 | 
			
		||||
    votes = '.poll-info'
 | 
			
		||||
    choice = '.poll-meter'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,55 @@
 | 
			
		|||
from base import BaseTestCase, Conversation
 | 
			
		||||
from parameterized import parameterized
 | 
			
		||||
 | 
			
		||||
thread = [
 | 
			
		||||
    ['octonion/status/975253897697611777', [], 'Based', ['Crystal', 'Julia'], [
 | 
			
		||||
        ['For', 'Then', 'Okay,', 'Python', 'Speed', 'Java', 'Coding', 'I', 'more'],
 | 
			
		||||
        ['yeah,']
 | 
			
		||||
    ]],
 | 
			
		||||
 | 
			
		||||
    ['octonion/status/975254452625002496', ['Based'], 'Crystal', ['Julia'], []],
 | 
			
		||||
 | 
			
		||||
    ['octonion/status/975256058384887808', ['Based', 'Crystal'], 'Julia', [], []],
 | 
			
		||||
 | 
			
		||||
    ['gauravssnl/status/975364889039417344',
 | 
			
		||||
     ['Based', 'For', 'Then', 'Okay,', 'Python'], 'Speed', [], [
 | 
			
		||||
         ['Java', 'more'], ['JAVA!']
 | 
			
		||||
     ]],
 | 
			
		||||
 | 
			
		||||
    ['d0m96/status/1141811379407425537', [], 'I\'m',
 | 
			
		||||
     ['The', 'The', 'Today', 'Some', 'If', 'There', 'Above'],
 | 
			
		||||
     [['Thank', 'Also,', 'Awesome.', 'Thank']]],
 | 
			
		||||
 | 
			
		||||
    ['Nitrux_NX/status/1138643619550810112', [], '"The', [],
 | 
			
		||||
     [['@bipin_joshi11', 'bc']]],
 | 
			
		||||
 | 
			
		||||
    ['gmpreussner/status/999766552546299904', [], 'A', [],
 | 
			
		||||
     [['I'], ['I']]]
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ThreadTest(BaseTestCase):
 | 
			
		||||
    def find_tweets(self, selector):
 | 
			
		||||
        return self.find_elements(f"{selector} {Conversation.tweet_text}")
 | 
			
		||||
 | 
			
		||||
    def compare_first_word(self, tweets, selector):
 | 
			
		||||
        if len(tweets) > 0:
 | 
			
		||||
            self.assert_element_visible(selector)
 | 
			
		||||
            for i, tweet in enumerate(self.find_tweets(selector)):
 | 
			
		||||
                text = tweet.text.split(" ")[0]
 | 
			
		||||
                self.assert_equal(tweets[i], text)
 | 
			
		||||
 | 
			
		||||
    @parameterized.expand(thread)
 | 
			
		||||
    def test_thread(self, tweet, before, main, after, replies):
 | 
			
		||||
        self.open_nitter(tweet)
 | 
			
		||||
        self.assert_element_visible(Conversation.main)
 | 
			
		||||
 | 
			
		||||
        self.assert_text(main, Conversation.main)
 | 
			
		||||
        self.assert_text(main, Conversation.main)
 | 
			
		||||
 | 
			
		||||
        self.compare_first_word(before, Conversation.before)
 | 
			
		||||
        self.compare_first_word(after, Conversation.after)
 | 
			
		||||
 | 
			
		||||
        for i, reply in enumerate(self.find_elements(Conversation.thread)):
 | 
			
		||||
            selector = Conversation.replies + f" > div:nth-child({i + 1})"
 | 
			
		||||
            self.compare_first_word(replies[i], selector)
 | 
			
		||||
		Loading…
	
		Reference in New Issue