def test_update_projects_week(self): """Test JOB update projects week works.""" p = ProjectFactory.create() p.name = 'NewNameName' project_repository = ProjectRepository(db) project_repository.update(p) dashboard_update_projects_week() sql = "select * from dashboard_week_project_update;" results = db.session.execute(sql) for row in results: assert row.id == p.id assert row.name == p.name assert row.owner_id == p.owner_id assert row.u_name == p.owner.name assert row.email_addr == p.owner.email_addr
def test_update_projects_week(self): """Test JOB update projects week works.""" p = ProjectFactory.create() p.name = 'NewNameName' project_repository = ProjectRepository(db) project_repository.update(p) update_projects_week() sql = "select * from dashboard_week_project_update;" results = db.session.execute(sql) for row in results: assert row.id == p.id assert row.name == p.name assert row.owner_id == p.owner_id assert row.u_name == p.owner.name assert row.email_addr == p.owner.email_addr
def test_format_updated_projects(self): """Test format updated projects works.""" p = ProjectFactory.create() p.name = 'NewNewNew' project_repo = ProjectRepository(db) project_repo.update(p) dashboard_update_projects_week() res = format_update_projects() day = datetime.utcnow().strftime('%Y-%m-%d') res = res[0] assert res['day'].strftime('%Y-%m-%d') == day, res['day'] assert res['id'] == p.id assert res['short_name'] == p.short_name assert res['p_name'] == p.name assert res['email_addr'] == p.owner.email_addr assert res['owner_id'] == p.owner.id assert res['u_name'] == p.owner.name
def test_format_updated_projects(self): """Test format updated projects works.""" p = ProjectFactory.create() p.name = 'NewNewNew' project_repo = ProjectRepository(db) project_repo.update(p) update_projects_week() res = format_update_projects() day = datetime.utcnow().strftime('%Y-%m-%d') res = res[0] assert res['day'].strftime('%Y-%m-%d') == day, res['day'] assert res['id'] == p.id assert res['short_name'] == p.short_name assert res['p_name'] == p.name assert res['email_addr'] == p.owner.email_addr assert res['owner_id'] == p.owner.id assert res['u_name'] == p.owner.name
class TestProjectRepositoryForProjects(Test): def setUp(self): super(TestProjectRepositoryForProjects, self).setUp() self.project_repo = ProjectRepository(db) @with_context def test_get_return_none_if_no_project(self): """Test get method returns None if there is no project with the specified id""" project = self.project_repo.get(2) assert project is None, project @with_context def test_get_returns_project(self): """Test get method returns a project if exists""" project = ProjectFactory.create() retrieved_project = self.project_repo.get(project.id) assert project == retrieved_project, retrieved_project @with_context def test_get_by_shortname_return_none_if_no_project(self): """Test get_by_shortname returns None when a project with the specified short_name does not exist""" project = self.project_repo.get_by_shortname('thisprojectdoesnotexist') assert project is None, project @with_context def test_get_by_shortname_returns_the_project(self): """Test get_by_shortname returns a project if exists""" project = ProjectFactory.create() retrieved_project = self.project_repo.get_by_shortname( project.short_name) assert project == retrieved_project, retrieved_project @with_context def test_get_by(self): """Test get_by returns a project with the specified attribute""" project = ProjectFactory.create(name='My Project', short_name='myproject') retrieved_project = self.project_repo.get_by(name=project.name) assert project == retrieved_project, retrieved_project @with_context def test_get_by_returns_none_if_no_project(self): """Test get_by returns None if no project matches the query""" ProjectFactory.create(name='My Project', short_name='myproject') project = self.project_repo.get_by(name='no_name') assert project is None, project @with_context def get_all_returns_list_of_all_projects(self): """Test get_all returns a list of all the existing projects""" projects = ProjectFactory.create_batch(3) retrieved_projects = self.project_repo.get_all() assert isinstance(retrieved_projects, list) assert len(retrieved_projects) == len(projects), retrieved_projects for project in retrieved_projects: assert project in projects, project @with_context def test_filter_by_no_matches(self): """Test filter_by returns an empty list if no projects match the query""" ProjectFactory.create(name='My Project', short_name='myproject') retrieved_projects = self.project_repo.filter_by(name='no_name') assert isinstance(retrieved_projects, list) assert len(retrieved_projects) == 0, retrieved_projects @with_context def test_filter_by_one_condition(self): """Test filter_by returns a list of projects that meet the filtering condition""" ProjectFactory.create_batch(3, allow_anonymous_contributors=False) should_be_missing = ProjectFactory.create( allow_anonymous_contributors=True) retrieved_projects = self.project_repo.filter_by( allow_anonymous_contributors=False) assert len(retrieved_projects) == 3, retrieved_projects assert should_be_missing not in retrieved_projects, retrieved_projects @with_context def test_filter_by_multiple_conditions(self): """Test filter_by supports multiple-condition queries""" ProjectFactory.create_batch(2, allow_anonymous_contributors=False, featured=False) project = ProjectFactory.create(allow_anonymous_contributors=False, featured=True) retrieved_projects = self.project_repo.filter_by( allow_anonymous_contributors=False, featured=True) assert len(retrieved_projects) == 1, retrieved_projects assert project in retrieved_projects, retrieved_projects @with_context def test_filter_by_limit_offset(self): """Test that filter_by supports limit and offset options""" ProjectFactory.create_batch(4) all_projects = self.project_repo.filter_by() first_two = self.project_repo.filter_by(limit=2) last_two = self.project_repo.filter_by(limit=2, offset=2) assert len(first_two) == 2, first_two assert len(last_two) == 2, last_two assert first_two == all_projects[:2] assert last_two == all_projects[2:] @with_context def test_save(self): """Test save persist the project""" project = ProjectFactory.build() assert self.project_repo.get(project.id) is None self.project_repo.save(project) assert self.project_repo.get( project.id) == project, "Project not saved" @with_context def test_save_fails_if_integrity_error(self): """Test save raises a DBIntegrityError if the instance to be saved lacks a required value""" project = ProjectFactory.build(name=None) assert_raises(DBIntegrityError, self.project_repo.save, project) @with_context def test_save_only_saves_projects(self): """Test save raises a WrongObjectError when an object which is not a Project instance is saved""" bad_object = dict() assert_raises(WrongObjectError, self.project_repo.save, bad_object) @with_context def test_update(self): """Test update persists the changes made to the project""" project = ProjectFactory.create(description='this is a project') project.description = 'the description has changed' self.project_repo.update(project) updated_project = self.project_repo.get(project.id) assert updated_project.description == 'the description has changed', updated_project @with_context def test_update_fails_if_integrity_error(self): """Test update raises a DBIntegrityError if the instance to be updated lacks a required value""" project = ProjectFactory.create() project.name = None assert_raises(DBIntegrityError, self.project_repo.update, project) @with_context def test_update_only_updates_projects(self): """Test update raises a WrongObjectError when an object which is not a Project instance is updated""" bad_object = dict() assert_raises(WrongObjectError, self.project_repo.update, bad_object) @with_context def test_delete(self): """Test delete removes the project instance""" project = ProjectFactory.create() self.project_repo.delete(project) deleted = self.project_repo.get(project.id) assert deleted is None, deleted @with_context def test_delete_also_removes_dependant_resources(self): """Test delete removes project tasks and taskruns too""" from factories import TaskFactory, TaskRunFactory, BlogpostFactory from pybossa.repositories import TaskRepository, BlogRepository project = ProjectFactory.create() task = TaskFactory.create(project=project) taskrun = TaskRunFactory.create(task=task) blogpost = BlogpostFactory.create(project=project) self.project_repo.delete(project) deleted_task = TaskRepository(db).get_task(task.id) deleted_taskrun = TaskRepository(db).get_task_run(taskrun.id) deleted_blogpost = BlogRepository(db).get(blogpost.id) assert deleted_task is None, deleted_task assert deleted_taskrun is None, deleted_taskrun @with_context def test_delete_only_deletes_projects(self): """Test delete raises a WrongObjectError if is requested to delete other than a project""" bad_object = dict() assert_raises(WrongObjectError, self.project_repo.delete, bad_object)
class TestProjectRepositoryForProjects(Test): def setUp(self): super(TestProjectRepositoryForProjects, self).setUp() self.project_repo = ProjectRepository(db) def test_get_return_none_if_no_project(self): """Test get method returns None if there is no project with the specified id""" project = self.project_repo.get(2) assert project is None, project def test_get_returns_project(self): """Test get method returns a project if exists""" project = ProjectFactory.create() retrieved_project = self.project_repo.get(project.id) assert project == retrieved_project, retrieved_project def test_get_by_shortname_return_none_if_no_project(self): """Test get_by_shortname returns None when a project with the specified short_name does not exist""" project = self.project_repo.get_by_shortname('thisprojectdoesnotexist') assert project is None, project def test_get_by_shortname_returns_the_project(self): """Test get_by_shortname returns a project if exists""" project = ProjectFactory.create() retrieved_project = self.project_repo.get_by_shortname(project.short_name) assert project == retrieved_project, retrieved_project def test_get_by(self): """Test get_by returns a project with the specified attribute""" project = ProjectFactory.create(name='My Project', short_name='myproject') retrieved_project = self.project_repo.get_by(name=project.name) assert project == retrieved_project, retrieved_project def test_get_by_returns_none_if_no_project(self): """Test get_by returns None if no project matches the query""" ProjectFactory.create(name='My Project', short_name='myproject') project = self.project_repo.get_by(name='no_name') assert project is None, project def get_all_returns_list_of_all_projects(self): """Test get_all returns a list of all the existing projects""" projects = ProjectFactory.create_batch(3) retrieved_projects = self.project_repo.get_all() assert isinstance(retrieved_projects, list) assert len(retrieved_projects) == len(projects), retrieved_projects for project in retrieved_projects: assert project in projects, project def test_filter_by_no_matches(self): """Test filter_by returns an empty list if no projects match the query""" ProjectFactory.create(name='My Project', short_name='myproject') retrieved_projects = self.project_repo.filter_by(name='no_name') assert isinstance(retrieved_projects, list) assert len(retrieved_projects) == 0, retrieved_projects def test_filter_by_one_condition(self): """Test filter_by returns a list of projects that meet the filtering condition""" ProjectFactory.create_batch(3, allow_anonymous_contributors=False) should_be_missing = ProjectFactory.create(allow_anonymous_contributors=True) retrieved_projects = self.project_repo.filter_by(allow_anonymous_contributors=False) assert len(retrieved_projects) == 3, retrieved_projects assert should_be_missing not in retrieved_projects, retrieved_projects def test_filter_by_multiple_conditions(self): """Test filter_by supports multiple-condition queries""" ProjectFactory.create_batch(2, allow_anonymous_contributors=False, featured=False) project = ProjectFactory.create(allow_anonymous_contributors=False, featured=True) retrieved_projects = self.project_repo.filter_by( allow_anonymous_contributors=False, featured=True) assert len(retrieved_projects) == 1, retrieved_projects assert project in retrieved_projects, retrieved_projects def test_filter_by_limit_offset(self): """Test that filter_by supports limit and offset options""" ProjectFactory.create_batch(4) all_projects = self.project_repo.filter_by() first_two = self.project_repo.filter_by(limit=2) last_two = self.project_repo.filter_by(limit=2, offset=2) assert len(first_two) == 2, first_two assert len(last_two) == 2, last_two assert first_two == all_projects[:2] assert last_two == all_projects[2:] def test_save(self): """Test save persist the project""" project = ProjectFactory.build() assert self.project_repo.get(project.id) is None self.project_repo.save(project) assert self.project_repo.get(project.id) == project, "Project not saved" def test_save_fails_if_integrity_error(self): """Test save raises a DBIntegrityError if the instance to be saved lacks a required value""" project = ProjectFactory.build(name=None) assert_raises(DBIntegrityError, self.project_repo.save, project) def test_save_only_saves_projects(self): """Test save raises a WrongObjectError when an object which is not a Project instance is saved""" bad_object = dict() assert_raises(WrongObjectError, self.project_repo.save, bad_object) def test_update(self): """Test update persists the changes made to the project""" project = ProjectFactory.create(description='this is a project') project.description = 'the description has changed' self.project_repo.update(project) updated_project = self.project_repo.get(project.id) assert updated_project.description == 'the description has changed', updated_project def test_update_fails_if_integrity_error(self): """Test update raises a DBIntegrityError if the instance to be updated lacks a required value""" project = ProjectFactory.create() project.name = None assert_raises(DBIntegrityError, self.project_repo.update, project) def test_update_only_updates_projects(self): """Test update raises a WrongObjectError when an object which is not a Project instance is updated""" bad_object = dict() assert_raises(WrongObjectError, self.project_repo.update, bad_object) def test_delete(self): """Test delete removes the project instance""" project = ProjectFactory.create() self.project_repo.delete(project) deleted = self.project_repo.get(project.id) assert deleted is None, deleted def test_delete_also_removes_dependant_resources(self): """Test delete removes project tasks and taskruns too""" from factories import TaskFactory, TaskRunFactory, BlogpostFactory from pybossa.repositories import TaskRepository, BlogRepository project = ProjectFactory.create() task = TaskFactory.create(project=project) taskrun = TaskRunFactory.create(task=task) blogpost = BlogpostFactory.create(project=project) self.project_repo.delete(project) deleted_task = TaskRepository(db).get_task(task.id) deleted_taskrun = TaskRepository(db).get_task_run(taskrun.id) deleted_blogpost = BlogRepository(db).get(blogpost.id) assert deleted_task is None, deleted_task assert deleted_taskrun is None, deleted_taskrun def test_delete_only_deletes_projects(self): """Test delete raises a WrongObjectError if is requested to delete other than a project""" bad_object = dict() assert_raises(WrongObjectError, self.project_repo.delete, bad_object)