def test_delete_project( db: DBInterface, db_session: sqlalchemy.orm.Session, ): project_name = "project-name" project_description = "some description" db.create_project( db_session, mlrun.api.schemas.Project(name=project_name, description=project_description), ) db.delete_project(db_session, project_name) with pytest.raises(mlrun.errors.MLRunNotFoundError): db.get_project(db_session, project_name)
def test_get_project( db: DBInterface, db_session: sqlalchemy.orm.Session, ): project_name = "project-name" project_description = "some description" project_labels = { "some-label": "some-label-value", } db.create_project( db_session, mlrun.api.schemas.Project( metadata=mlrun.api.schemas.ProjectMetadata(name=project_name, labels=project_labels), spec=mlrun.api.schemas.ProjectSpec( description=project_description), ), ) project_output = db.get_project(db_session, project_name) assert project_output.metadata.name == project_name assert project_output.spec.description == project_description assert (deepdiff.DeepDiff( project_labels, project_output.metadata.labels, ignore_order=True, ) == {})
def test_store_project_update( db: DBInterface, db_session: sqlalchemy.orm.Session, ): project_name = "project-name" project_description = "some description" project_labels = { "some-label": "some-label-value", } project_created = datetime.datetime.utcnow() db.create_project( db_session, mlrun.api.schemas.Project( metadata=mlrun.api.schemas.ProjectMetadata( name=project_name, created=project_created, labels=project_labels, ), spec=mlrun.api.schemas.ProjectSpec( description=project_description), ), ) db.store_project( db_session, project_name, mlrun.api.schemas.Project( metadata=mlrun.api.schemas.ProjectMetadata(name=project_name), ), ) project_output = db.get_project(db_session, project_name) assert project_output.metadata.name == project_name assert project_output.spec.description is None assert project_output.metadata.labels is None # Created in request body should be ignored and set by the DB layer assert project_output.metadata.created != project_created
def test_get_project( db: DBInterface, db_session: sqlalchemy.orm.Session, ): project_name = "project-name" project_description = "some description" db.create_project( db_session, mlrun.api.schemas.Project(name=project_name, description=project_description), ) project_output = db.get_project(db_session, project_name) assert project_output.name == project_name assert project_output.description == project_description
def test_get_project_with_pre_060_record( db: DBInterface, db_session: sqlalchemy.orm.Session, ): project_name = "project_name" _generate_and_insert_pre_060_record(db_session, project_name) pre_060_record = ( db_session.query(Project).filter(Project.name == project_name).one() ) assert pre_060_record.full_object is None project = db.get_project(db_session, project_name,) assert project.metadata.name == project_name updated_record = ( db_session.query(Project).filter(Project.name == project_name).one() ) # when GET performed on a project of the old format - we're upgrading it to the new format - ensuring it happened assert updated_record.full_object is not None
def test_store_project_creation( db: DBInterface, db_session: sqlalchemy.orm.Session, ): project_name = "project-name" project_description = "some description" project_created = datetime.datetime.utcnow() db.store_project( db_session, project_name, mlrun.api.schemas.Project(name=project_name, description=project_description, created=project_created), ) project_output = db.get_project(db_session, project_name) assert project_output.name == project_name assert project_output.description == project_description # Created in request body should be ignored and set by the DB layer assert project_output.created != project_created
def test_patch_project( db: DBInterface, db_session: sqlalchemy.orm.Session, ): project_name = "project-name" project_description = "some description" project_created = datetime.datetime.utcnow() db.create_project( db_session, mlrun.api.schemas.Project( metadata=mlrun.api.schemas.ProjectMetadata(name=project_name), spec=mlrun.api.schemas.ProjectSpec( description=project_description), ), ) patched_project_description = "some description 2" patched_project_labels = { "some-label": "some-label-value", } db.patch_project( db_session, project_name, { "metadata": { "created": project_created, "labels": patched_project_labels }, "spec": { "description": patched_project_description }, }, ) project_output = db.get_project(db_session, project_name) assert project_output.metadata.name == project_name assert project_output.spec.description == patched_project_description # Created in request body should be ignored and set by the DB layer assert project_output.metadata.created != project_created assert (deepdiff.DeepDiff( patched_project_labels, project_output.metadata.labels, ignore_order=True, ) == {})