def test_convert_missions(monkeypatch, mocked_missions): """Happy Path - Get List of Missions""" monkeypatch.setattr(Session, "get", lambda a, b: mocked_missions) res = api.get_missions_list(Session(), "flash") missions = api.convert_missions(res) assert len(missions) == 10 assert missions[0].name == "BLACK MARKET - 500 Glorg-> 50 Millions"
def test_get_missions_from_database_with_filters(monkeypatch, mocked_missions): monkeypatch.setattr(Session, "get", lambda a, b: mocked_missions) page = api.get_missions_list(Session(), "flash") missions = api.convert_missions(page) api.connect_and_initialize_database("sqlite", "data/test_collection.sqlite") api.write_missions_to_database(missions) res = api.get_missions_from_database({"goal": 80}) try: assert len(res) == 1 assert res[0].name == "Komboka OP" assert res[0].progress == 0 finally: with database.get_session() as session: session.query(mission.Mission).delete()
def test_get_missions_from_database(monkeypatch, mocked_missions): monkeypatch.setattr(Session, "get", lambda a, b: mocked_missions) page = api.get_missions_list(Session(), "flash") missions = api.convert_missions(page) api.connect_and_initialize_database("sqlite", "data/test_collection.sqlite") api.write_missions_to_database(missions) res = api.get_missions_from_database() try: assert res[0].hash_id assert res[0].name != "" assert res[0].goal > 0 finally: with database.get_session() as session: session.query(mission.Mission).delete()
def test_write_missions_to_database(monkeypatch, mocked_missions): monkeypatch.setattr(Session, "get", lambda a, b: mocked_missions) page = api.get_missions_list(Session(), "flash") missions = api.convert_missions(page) mission_hashes = [miss.hash_id for miss in missions] api.connect_and_initialize_database("sqlite", "data/test_collection.sqlite") api.write_missions_to_database(missions) try: with database.get_session() as session: res = [ item[0] for item in session.query(mission.Mission.hash_id).all() ] for hash_id in mission_hashes: assert hash_id in res finally: with database.get_session() as session: session.query(mission.Mission).delete()
def test_get_missions_list(monkeypatch, mocked_missions): """Happy Path - History Pages Fetched""" monkeypatch.setattr(Session, "get", lambda a, b: mocked_missions) assert api.get_missions_list(Session(), "flash")
def generate_email(): """ Run from command line via python -c "from urdailyemail import email; email.generate_email()" """ with Session() as session: # Set up database and session initialization url = "https://ohbucketmybucket.s3-us-west-1.amazonaws.com/collection.sqlite" # file_path = Path(os.environ["USERPROFILE"] + # "\Desktop\database\collection.sqlite") file_path = os.environ["DB_FILE_PATH"] with get(url) as response, open(file_path, 'wb') as out_file: out_file.write(response.content) api.connect_and_initialize_database("sqlite", str(Path(file_path))) api.session_connect_to_ur(session, os.environ["UR_USER"], os.environ["UR_PASS"]) # Get purchases from database to check against full_purchases = api.get_history_from_database() purchases = list( islice((purchase for purchase in full_purchases), int(os.environ["PURCHASE_COUNT"]))) # Get market offers for purchases offers = market.get_market_offers( session, [purchase.id for purchase in purchases]) # Get black market flash mission try: missions = api.convert_missions( api.get_missions_list(session, "black market")) bm_missions = [ mission for mission in missions if "BLACK MARKET" in mission.name ] bm_char_offers = {} for bm_mission in bm_missions: bm_mission_character = re.search('\\d(.+)(\\W)>', bm_mission.name) if bm_mission_character: bm_mission_character = str( bm_mission_character.group(1)).strip() else: logging.error("Failed to process %s", bm_mission.name) try: bm_offers = market.get_market_offers( session, [bm_mission_character]) bm_char_offers[ bm_mission.name] = bm_offers[bm_mission_character] except Exception as exception: logging.error( "Failed while generating black market offers: %s", str(exception)) except Exception as exception: logging.exception(f"62 - {exception}") bm_missions = [api.get_missions_list(session, "black market").text] bm_char_offers = None # Create table for email table_rows = create_table_rows(purchases, offers) mission_table = create_market_mission_table(bm_missions, bm_char_offers) final_content = create_table(table_rows, mission_table) _send_email(final_content) return "OK"