Beispiel #1
0
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"
Beispiel #2
0
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()
Beispiel #3
0
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()
Beispiel #4
0
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()
Beispiel #5
0
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")
Beispiel #6
0
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"