Esempio n. 1
0
 def test_parsing_only_old_event_on_the_first_page_in_only_new_mode(self, session, clear_data):
     parsing_pointer = ParsingPointer.get_parsing_pointer(source="KudaGo", session=session)
     parsing_pointer.current_pointer = "1539356260"
     session.add(parsing_pointer)
     session.commit()
     parser = KudaGoParser(session, mode='only_new', page_limit=1000)
     assert parser.main(test_url="http://127.0.0.1:5000?source=kudago&testcase=only_old_event_on_the_first_page_in_only_new_mode") == 1
     events_from_db = session.query(Event).all()
     assert len(events_from_db) == 0
Esempio n. 2
0
 def test_parsing_page_with_one_event(self, session, clear_data):
     parsing_pointer = ParsingPointer.get_parsing_pointer(source="KudaGo", session=session)
     parsing_pointer.current_pointer = "123456"
     session.add(parsing_pointer)
     session.commit()
     event = self.create_event_kudago_exhibition_face2face()
     parser = KudaGoParser(session, mode="only_new", page_limit=1000)
     assert parser.main(test_url="http://127.0.0.1:5000?source=kudago&testcase=one_event") == 2
     event_from_db = session.query(Event).first()
     self.check_equivalence_of_two_events(event, event_from_db)
Esempio n. 3
0
 def test_parsing_four_pages_in_full_mode(self, session, clear_data):
     """
     This test case is about full mode
     The first page has only one event
     The second page has the same only one event
     The third page has two events - the same one and the new one
     The fourth page is 404
     Totally we have 2 events and 4 pages for parsing
     :param session:
     :param clear_data:
     :return:
     """
     parsing_pointer = ParsingPointer.get_parsing_pointer(source="KudaGo", session=session)
     parsing_pointer.current_pointer = "1539356260"
     session.add(parsing_pointer)
     session.commit()
     parser = KudaGoParser(session, mode='full', page_limit=1000)
     assert parser.main(test_url="http://127.0.0.1:5000?source=kudago&testcase=four_pages_in_full_mode") == 4
     events_from_db = session.query(Event).all()
     assert len(events_from_db) == 2
Esempio n. 4
0
 def _create_parser(self):
     """
     Provides right concrete parser object for source name
     :return:
     """
     logging.debug('Enter to the method, source: %s', self.source)
     if self.source == "KudaGo":
         from KudaGoParser import KudaGoParser
         parser = KudaGoParser(self.session, self.mode, self.page_limit)
         return parser
     if self.source == "YandexAfishaCinema":
         from YandexAfishaCinemaParser import YandexAfishaCinemaParser
         parser = YandexAfishaCinemaParser(self.session, self.mode, self.page_limit)
         return parser
     if self.source == "YandexAfishaTheater":
         from YandexAfishaTheaterParser import YandexAfishaTheaterParser
         parser = YandexAfishaTheaterParser(self.session, self.mode, self.page_limit)
         return parser
     logging.error('Wrong source parameter!')
     raise ValueError("source parameter is wrong: " + str(self.source))
Esempio n. 5
0
 def test_update_events_from_db(self, session, clear_data):
     # TODO: create events in abstract test class (remember that these events emulate events from database not from url)
     # Form event № 1
     event_from_database_for_updating = Event()
     event_from_database_for_updating._id = 78
     event_from_database_for_updating.source = "KudaGo"
     event_from_database_for_updating.title = "выставка Face 2 Face"
     event_from_database_for_updating.description = "Хотите лицом к лицу встретиться с героями известных фильмов? Добро пожаловать"
     event_from_database_for_updating.price_kudago = "от 0 до 650 рублей"
     event_from_database_for_updating.url = "https://kudago.com/msk/event/vyistavka-face-2-face"
     event_from_database_for_updating.categories = {
         "exhibition", "kids", "интерактивные", "новые технологии"
     }
     event_from_database_for_updating.image = "https://kudago.com/media/images/event/e1/6f/a5f5f.JPG"
     event_from_database_for_updating.start_time = 4695469200
     event_from_database_for_updating.finish_time = 4699825200
     event_from_database_for_updating.join_anytime = False
     event_from_database_for_updating.duplicate_source_id = "https://kudago.com/msk/event/vyistavka-face-2-face"
     event_from_database_for_updating.duplicate_id = 45
     event_from_database_for_updating.price_min = 0
     event_from_database_for_updating.price_max = 25
     event_from_database_for_updating.source_rating_value = 2
     event_from_database_for_updating.source_rating_count = 2
     event_from_database_for_updating.status = "active"
     # Form event № 2
     event_from_source_for_updating = Event()
     event_from_source_for_updating.source = "KudaGo"
     event_from_source_for_updating.title = "Обсуждение фильма Хоррор"
     event_from_source_for_updating.description = "Вот уж точно фильм, от которого волосы встают дыбом"
     event_from_source_for_updating.price_kudago = "500 рублей"
     event_from_source_for_updating.url = "https://kudago.com/msk/event/vyistavka-face-2-face"
     event_from_source_for_updating.categories = {"интересненькое", "опера"}
     event_from_source_for_updating.image = "https://kudago.com/media/images/event/e1/6f/5f.JPG"
     event_from_source_for_updating.start_time = 4695469200
     event_from_source_for_updating.finish_time = 4699825200
     event_from_source_for_updating.join_anytime = True
     event_from_source_for_updating.duplicate_source_id = "https://kudago.com/msk/event/vyistavka-face-2-face"
     event_from_source_for_updating.duplicate_id = 0
     event_from_source_for_updating.price_min = 500
     event_from_source_for_updating.price_max = 500
     event_from_database_for_updating.source_rating_value = 2
     event_from_database_for_updating.source_rating_count = 2
     event_from_source_for_updating.status = "active"
     # Form event № 3
     event_from_database_for_inactivating = Event()
     event_from_database_for_inactivating._id = 80
     event_from_database_for_inactivating.source = "KudaGo"
     event_from_database_for_inactivating.url = "https://kudago.com/msk/event/vyistavka-face-2-face"
     event_from_database_for_inactivating.start_time = 4695469500
     event_from_database_for_inactivating.finish_time = 4699825500
     event_from_database_for_inactivating.duplicate_source_id = "https://kudago.com/msk/event/vyistavka-face-2-face"
     event_from_database_for_inactivating.duplicate_id = 45
     event_from_database_for_inactivating.status = "active"
     # Form event № 4
     event_from_source_for_adding = Event()
     event_from_source_for_adding.source = "KudaGo"
     event_from_source_for_adding.url = "https://kudago.com/msk/event/vyistavka-face-2-face"
     event_from_source_for_adding.start_time = 4695469900
     event_from_source_for_adding.finish_time = 4699825900
     event_from_source_for_adding.duplicate_source_id = "https://kudago.com/msk/event/vyistavka-face-2-face"
     event_from_source_for_adding.duplicate_id = 0
     event_from_source_for_adding.status = "active"
     # Form lists for events as arguments for function under testing
     events = [
         copy.deepcopy(event_from_source_for_updating),
         copy.deepcopy(event_from_source_for_adding)
     ]
     same_events_in_db = [
         copy.deepcopy(event_from_database_for_updating),
         copy.deepcopy(event_from_database_for_inactivating)
     ]
     # Test our function
     result_list_of_events = KudaGoParser._update_events_from_db(
         same_events_in_db, events)
     self.check_equivalence_of_two_events(result_list_of_events[0],
                                          event_from_source_for_updating)
     self.check_equivalence_of_two_events(result_list_of_events[1],
                                          event_from_source_for_adding)
     event_from_database_for_inactivating.status = "hidden"
     self.check_equivalence_of_two_events(
         result_list_of_events[2], event_from_database_for_inactivating)
     assert len(result_list_of_events) == 3
Esempio n. 6
0
 def test_make_url_with_test_url(self, session, clear_data):
     parser = KudaGoParser(session, mode='full', page_limit=1000)
     assert parser._make_url(page=1, test_url="http://127.0.0.1:5000?source=kudago&testcase=404") == "http://127.0.0.1:5000?source=kudago&testcase=404&page=1"
Esempio n. 7
0
 def test_make_url_for_second_page(self, session, clear_data):
     parser = KudaGoParser(session, mode='full', page_limit=1000)
     assert parser._make_url(page=2,
                             test_url=None) == "https://kudago.com/public-api/v1.4/events/?lang=ru&page_size=100&order_by=-publication_date&text_format=html&location=msk&is_free=0&fields=id,publication_date,dates,title,short_title,slug,place,description,body_text,location,categories,tagline,age_restriction,price,is_free,images,favorites_count,comments_count,site_url,tags,participants&page=2"
Esempio n. 8
0
 def test_parsing_page_with_404_status_code(self, session, clear_data):
     parser = KudaGoParser(session, mode='full', page_limit=1000)
     assert parser.main(test_url="http://127.0.0.1:5000?source=kudago&testcase=404") == 1
     events_from_db = session.query(Event).all()
     assert [] == events_from_db
Esempio n. 9
0
 def test_parsing_page_with_bad_json_format_in_full_mode(self, session, clear_data):
     parser = KudaGoParser(session, mode='full', page_limit=1000)
     assert parser.main(test_url="http://127.0.0.1:5000?source=kudago&testcase=page_with_bad_json_format") == 1
     events_from_db = session.query(Event).all()
     assert len(events_from_db) == 0