def setUp(self): super(TestAuditlogRepositoryForProjects, self).setUp() self.auditlog_repo = AuditlogRepository(db)
class TestAuditlogRepositoryForProjects(Test): def setUp(self): super(TestAuditlogRepositoryForProjects, self).setUp() self.auditlog_repo = AuditlogRepository(db) def test_get_return_none_if_no_log(self): """Test get method returns None if there is no log with the specified id""" log = self.auditlog_repo.get(2) assert log is None, log def test_get_returns_log(self): """Test get method returns a log if exists""" project = ProjectFactory.create() log = AuditlogFactory.create( project_id=project.id, project_short_name=project.short_name, user_id=project.owner.id, user_name=project.owner.name, ) retrieved_log = self.auditlog_repo.get(log.id) assert log == retrieved_log, retrieved_log def test_get_by(self): """Test get_by returns a log with the specified attribute""" project = ProjectFactory.create() log = AuditlogFactory.create( project_id=project.id, project_short_name=project.short_name, user_id=project.owner.id, user_name=project.owner.name, ) retrieved_log = self.auditlog_repo.get_by(user_id=project.owner.id) assert log == retrieved_log, retrieved_log def test_get_by_returns_none_if_no_log(self): """Test get_by returns None if no log matches the query""" project = ProjectFactory.create() AuditlogFactory.create( project_id=project.id, project_short_name=project.short_name, user_id=project.owner.id, user_name=project.owner.name, ) retrieved_log = self.auditlog_repo.get_by(user_id=5555) assert retrieved_log is None, retrieved_log def test_filter_by_no_matches(self): """Test filter_by returns an empty list if no log matches the query""" project = ProjectFactory.create() AuditlogFactory.create( project_id=project.id, project_short_name=project.short_name, user_id=project.owner.id, user_name=project.owner.name, ) retrieved_logs = self.auditlog_repo.filter_by(user_name="no_name") assert isinstance(retrieved_logs, list) assert len(retrieved_logs) == 0, retrieved_logs def test_filter_by_one_condition(self): """Test filter_by returns a list of logs that meet the filtering condition""" project = ProjectFactory.create() AuditlogFactory.create_batch( size=3, project_id=project.id, project_short_name=project.short_name, user_id=project.owner.id, user_name=project.owner.name, ) project2 = ProjectFactory.create() should_be_missing = AuditlogFactory.create_batch( size=3, project_id=project2.id, project_short_name=project2.short_name, user_id=project2.owner.id, user_name=project2.owner.name, ) retrieved_logs = self.auditlog_repo.filter_by(user_id=project.owner.id) assert len(retrieved_logs) == 3, retrieved_logs assert should_be_missing not in retrieved_logs, retrieved_logs def test_filter_by_multiple_conditions(self): """Test filter_by supports multiple-condition queries""" project = ProjectFactory.create() user = UserFactory.create() AuditlogFactory.create_batch( size=3, project_id=project.id, project_short_name=project.short_name, user_id=project.owner.id, user_name=project.owner.name, ) log = AuditlogFactory.create( project_id=project.id, project_short_name=project.short_name, user_id=user.id, user_name=user.name ) retrieved_logs = self.auditlog_repo.filter_by(project_id=project.id, user_id=user.id) assert len(retrieved_logs) == 1, retrieved_logs assert log in retrieved_logs, retrieved_logs def test_save(self): """Test save persist the log""" project = ProjectFactory.create() log = AuditlogFactory.build( project_id=project.id, project_short_name=project.short_name, user_id=project.owner.id, user_name=project.owner.name, ) assert self.auditlog_repo.get(log.id) is None self.auditlog_repo.save(log) assert self.auditlog_repo.get(log.id) == log, "Log 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""" log = AuditlogFactory.build(project_id=None) assert_raises(DBIntegrityError, self.auditlog_repo.save, log) def test_save_only_saves_projects(self): """Test save raises a WrongObjectError when an object which is not a Log instance is saved""" bad_object = dict() assert_raises(WrongObjectError, self.auditlog_repo.save, bad_object)
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with PyBossa. If not, see <http://www.gnu.org/licenses/>. import json from default import db, Test, with_context from collections import namedtuple from factories import ProjectFactory, AuditlogFactory, UserFactory, CategoryFactory from helper import web from pybossa.repositories import UserRepository from pybossa.repositories import AuditlogRepository from mock import patch, MagicMock auditlog_repo = AuditlogRepository(db) user_repo = UserRepository(db) FakeRequest = namedtuple('FakeRequest', ['text', 'status_code', 'headers']) class TestAuditlogAPI(Test): @with_context def test_project_create(self): """Test Auditlog API project create works.""" # project = ProjectFactory.create() CategoryFactory.create() user = UserFactory.create() data = { 'name': 'New Name',
class TestAuditlogRepositoryForProjects(Test): def setUp(self): super(TestAuditlogRepositoryForProjects, self).setUp() self.auditlog_repo = AuditlogRepository(db) def test_get_return_none_if_no_log(self): """Test get method returns None if there is no log with the specified id""" log = self.auditlog_repo.get(2) assert log is None, log def test_get_returns_log(self): """Test get method returns a log if exists""" project = ProjectFactory.create() log = AuditlogFactory.create(project_id=project.id, project_short_name=project.short_name, user_id=project.owner.id, user_name=project.owner.name) retrieved_log = self.auditlog_repo.get(log.id) assert log == retrieved_log, retrieved_log def test_get_by(self): """Test get_by returns a log with the specified attribute""" project = ProjectFactory.create() log = AuditlogFactory.create(project_id=project.id, project_short_name=project.short_name, user_id=project.owner.id, user_name=project.owner.name) retrieved_log = self.auditlog_repo.get_by(user_id=project.owner.id) assert log == retrieved_log, retrieved_log def test_get_by_returns_none_if_no_log(self): """Test get_by returns None if no log matches the query""" project = ProjectFactory.create() AuditlogFactory.create(project_id=project.id, project_short_name=project.short_name, user_id=project.owner.id, user_name=project.owner.name) retrieved_log = self.auditlog_repo.get_by(user_id=5555) assert retrieved_log is None, retrieved_log def test_filter_by_no_matches(self): """Test filter_by returns an empty list if no log matches the query""" project = ProjectFactory.create() AuditlogFactory.create(project_id=project.id, project_short_name=project.short_name, user_id=project.owner.id, user_name=project.owner.name) retrieved_logs = self.auditlog_repo.filter_by(user_name='no_name') assert isinstance(retrieved_logs, list) assert len(retrieved_logs) == 0, retrieved_logs def test_filter_by_one_condition(self): """Test filter_by returns a list of logs that meet the filtering condition""" project = ProjectFactory.create() AuditlogFactory.create_batch(size=3, project_id=project.id, project_short_name=project.short_name, user_id=project.owner.id, user_name=project.owner.name) project2 = ProjectFactory.create() should_be_missing = AuditlogFactory.create_batch( size=3, project_id=project2.id, project_short_name=project2.short_name, user_id=project2.owner.id, user_name=project2.owner.name) retrieved_logs = self.auditlog_repo.filter_by(user_id=project.owner.id) assert len(retrieved_logs) == 3, retrieved_logs assert should_be_missing not in retrieved_logs, retrieved_logs def test_filter_by_multiple_conditions(self): """Test filter_by supports multiple-condition queries""" project = ProjectFactory.create() user = UserFactory.create() AuditlogFactory.create_batch(size=3, project_id=project.id, project_short_name=project.short_name, user_id=project.owner.id, user_name=project.owner.name) log = AuditlogFactory.create(project_id=project.id, project_short_name=project.short_name, user_id=user.id, user_name=user.name) retrieved_logs = self.auditlog_repo.filter_by(project_id=project.id, user_id=user.id) assert len(retrieved_logs) == 1, retrieved_logs assert log in retrieved_logs, retrieved_logs def test_save(self): """Test save persist the log""" project = ProjectFactory.create() log = AuditlogFactory.build(project_id=project.id, project_short_name=project.short_name, user_id=project.owner.id, user_name=project.owner.name) assert self.auditlog_repo.get(log.id) is None self.auditlog_repo.save(log) assert self.auditlog_repo.get(log.id) == log, "Log 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""" log = AuditlogFactory.build(project_id=None) assert_raises(DBIntegrityError, self.auditlog_repo.save, log) def test_save_only_saves_projects(self): """Test save raises a WrongObjectError when an object which is not a Log instance is saved""" bad_object = dict() assert_raises(WrongObjectError, self.auditlog_repo.save, bad_object)