import os from datetime import datetime, timedelta from tracker import json_utils, db from api import api from tracker.utils import a_datetime from . import login_to_test_client as _login source_to_klass = {"sc": db.ScUser, "in": db.InUser, "tw": db.TrackedEntity} def test_can_set_artist_flag(session): now_plus_fifteen_days = a_datetime("15 days").from_now().date() now_plus_sixteen_days = a_datetime("16 days").from_now().date() session.add(db.ScUser(scid=1, name="artist")) session.add(db.InUser(inid="1")) session.add(db.TrackedEntity(eid=1, name="twitter1")) session.commit() for loop in [1,2, 3]: # because we can test moving between states... for (source, action) in [(source, action) for source in ["sc", "in", "tw"] for action in ["activate", "deactivate", "snooze", "unsnooze"] ]: print("Testing: {}/{}".format(source, action)) Klass = source_to_klass[source] id = 1 if source in ("sc", "tw") else "1" app = api.app.test_client() _login(app) rv = app.put("/api/admin/{}/{}/{}".format(source, id, action)) assert rv.status_code == 200 obj = session.query(Klass).get(id) if action == "activate": assert obj.active is True elif action == "deactivate": assert obj.active is False elif action == "snooze": assert obj.snooze_until >= now_plus_fifteen_days assert ( obj.snooze_until < now_plus_sixteen_days ) # ensure it's not too long... elif action == "unsnooze": assert obj.snooze_until < datetime.today().date()