def test_update_build_status(app, f_projects): p = f_projects[0] bs = BuildStatus( repo_name="foobar", build_id="12345", href="http://example.com/afasdfgt", status="pending" ) ProjectLogic.get_or_create_build_info_from_bs(p, bs) app.db.session.commit() build = ProjectLogic.get_or_create_build_info_from_bs(p, bs) status_updated_on_first = build.status_updated_on ProjectLogic.update_build_info_status(build, bs) app.db.session.commit() bi_list = DhBuildInfo.query.all() assert len(bi_list) == 1 bi = bi_list[0] assert bi.id == bs.build_id assert bi.status == bs.status assert bi.status_updated_on == status_updated_on_first bs.status = "failed" ProjectLogic.update_build_info_status(build, bs) app.db.session.commit() bi_list = DhBuildInfo.query.all() assert len(bi_list) == 1 bi = bi_list[0] assert bi.id == bs.build_id assert bi.status == bs.status assert bi.status_updated_on > status_updated_on_first
def test_get_projects_to_fetch_builds_status(app, f_projects): p = f_projects[0] assert len(ProjectLogic.get_projects_to_fetch_builds_status()) == 0 wp = get_fresh_p(p) wp.build_triggered_on = arrow.utcnow() app.db.session.add(wp) app.db.session.commit() p_list = ProjectLogic.get_projects_to_fetch_builds_status() assert len(p_list) == 1 assert p_list[0].id == p.id bs = BuildStatus( repo_name="foobar", build_id="12345", href="http://example.com/afasdfgt", status="pending" ) # ProjectLogic.get_or_create_build_info_from_bs(p, bs) app.db.session.commit() assert len(ProjectLogic.get_projects_to_fetch_builds_status()) == 0 wp = get_fresh_p(p) wp.build_triggered_on = arrow.utcnow() app.db.session.add(wp) app.db.session.commit() p_list = ProjectLogic.get_projects_to_fetch_builds_status() assert len(p_list) == 1 assert p_list[0].id == p.id
def test_should_get_builds_statuses(app, f_projects): p = f_projects[0] assert ProjectLogic.should_fetch_builds_statuses_for_project(get_fresh_p(p)) is False wp = get_fresh_p(p) wp.build_triggered_on = arrow.utcnow() app.db.session.add(wp) app.db.session.commit() assert ProjectLogic.should_fetch_builds_statuses_for_project(get_fresh_p(p)) is True bs = BuildStatus( repo_name="foobar", build_id="12345", href="http://example.com/afasdfgt", status="pending" ) # ProjectLogic.get_or_create_build_info_from_bs(p, bs) app.db.session.commit() assert ProjectLogic.should_fetch_builds_statuses_for_project(get_fresh_p(p)) is False wp = get_fresh_p(p) wp.build_triggered_on = arrow.utcnow() app.db.session.add(wp) app.db.session.commit() assert ProjectLogic.should_fetch_builds_statuses_for_project(get_fresh_p(p)) is True
def test_update_build_details(app, f_projects): p = f_projects[0] bs = BuildStatus( repo_name="foobar", build_id="12345", href="http://example.com/afasdfgt", status="pending" ) ProjectLogic.get_or_create_build_info_from_bs(p, bs) app.db.session.commit() build = ProjectLogic.get_or_create_build_info_from_bs(p, bs) details = BuildDetails( info_table={ "foo": "bar" }, logs="Lorem ipsum dolor sit amet" ) ProjectLogic.update_build_info_details(build, details) app.db.session.commit() build2 = ProjectLogic.get_or_create_build_info_from_bs(p, bs) assert build2.details["info_table"] == details.info_table assert build2.details["logs"] == details.logs
def test_get_builds_to_fetch_details(app, f_projects): # empty builds = ProjectLogic.get_builds_to_fetch_details() assert len(builds) == 0 p = f_projects[0] bs = BuildStatus( repo_name="foobar", build_id="12345", href="http://example.com/afasdfgt", status="pending" ) ProjectLogic.get_or_create_build_info_from_bs(p, bs) app.db.session.commit() builds = ProjectLogic.get_builds_to_fetch_details() assert len(builds) == 1 assert builds[0].id == bs.build_id builds[0].status = "done" app.db.session.add(builds[0]) app.db.session.commit() builds = ProjectLogic.get_builds_to_fetch_details() assert len(builds) == 0
def test_get_or_create_build_info(app, f_projects): p = f_projects[0] bs = BuildStatus( repo_name="foobar", build_id="12345", href="http://example.com/afasdfgt", status="pending" ) ProjectLogic.get_or_create_build_info_from_bs(p, bs) app.db.session.commit() # import ipdb; ipdb.set_trace() bi_list = DhBuildInfo.query.all() assert len(bi_list) == 1 bi = bi_list[0] assert bi.id == bs.build_id assert bi.status == bs.status ProjectLogic.get_or_create_build_info_from_bs(p, bs) app.db.session.commit() bi_list = DhBuildInfo.query.all() assert len(bi_list) == 1 bs_2 = BuildStatus( repo_name="foobar2", build_id="9123asd45", href="http://example.com/afasdfqat31gt", status="pending" ) ProjectLogic.get_or_create_build_info_from_bs(p, bs_2) app.db.session.commit() bi_list = DhBuildInfo.query.all() assert len(bi_list) == 2 assert set([x.id for x in bi_list]) == {bs.build_id, bs_2.build_id}