Skip to content

Commit

Permalink
Use ActionsChains in IMDB inserter - fixes #34
Browse files Browse the repository at this point in the history
  • Loading branch information
StegSchreck committed Dec 3, 2017
1 parent bff0135 commit 68a92bb
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
11 changes: 8 additions & 3 deletions RatS/imdb/imdb_ratings_inserter.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import urllib.parse

from bs4 import BeautifulSoup
from selenium.webdriver import ActionChains

from RatS.base.base_ratings_inserter import RatingsInserter
from RatS.imdb.imdb_site import IMDB
Expand Down Expand Up @@ -38,8 +39,12 @@ def _is_requested_movie(self, movie, search_result):
return False

def _click_rating(self, my_rating):
self.site.browser.find_element_by_class_name('star-rating-button').find_element_by_tag_name('button').click()
time.sleep(0.5)
ratings_button = self.site.browser.find_element_by_class_name('star-rating-button')\
.find_element_by_tag_name('button')
stars = self.site.browser.find_element_by_class_name('star-rating-stars').find_elements_by_tag_name('a')
star_index = int(my_rating) - 1
stars[star_index].click()
builder = ActionChains(self.site.browser)
builder.move_to_element(ratings_button).click(ratings_button)\
.move_to_element(stars[star_index]).click(stars[star_index])\
.perform()
time.sleep(0.5) # wait for POST request to be sent
3 changes: 2 additions & 1 deletion tests/unit/imdb/test_imdb_ratings_inserter.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,12 @@ def test_init(self, browser_mock, base_init_mock):

self.assertTrue(base_init_mock.called)

@patch('RatS.imdb.imdb_ratings_inserter.ActionChains')
@patch('RatS.base.base_ratings_inserter.RatingsInserter._print_progress_bar')
@patch('RatS.imdb.imdb_ratings_inserter.IMDB')
@patch('RatS.base.base_ratings_inserter.RatingsInserter.__init__')
@patch('RatS.base.base_site.Firefox')
def test_insert(self, browser_mock, base_init_mock, site_mock, progress_print_mock): # pylint: disable=too-many-arguments
def test_insert(self, browser_mock, base_init_mock, site_mock, progress_print_mock, action_mock): # pylint: disable=too-many-arguments
site_mock.browser = browser_mock
inserter = IMDBRatingsInserter(None)
inserter.args = False
Expand Down

0 comments on commit 68a92bb

Please sign in to comment.