def test_mocked_relations_context_manager(self): m = Manufacturer() with mocked_relations(Manufacturer): self.assertEqual(0, m.car_set.count()) m.car_set.add(Car()) self.assertEqual(1, m.car_set.count())
def create_client(self): patcher = mocked_relations(User, Session) patcher.start() self.addCleanup(patcher.stop) user = User(pk=users.KIVE_USER_PK) User.objects.add(user) User.objects.model = User # noinspection PyUnresolvedReferences patcher = patch.object(User._meta, 'default_manager', User.objects) patcher.start() self.addCleanup(patcher.stop) dummy_session_key = 'dummysession' dummy_session = Session( session_key=dummy_session_key, expire_date=now() + timedelta(days=1), session_data=SessionStore().encode({ SESSION_KEY: users.KIVE_USER_PK, HASH_SESSION_KEY: user.get_session_auth_hash(), BACKEND_SESSION_KEY: 'django.contrib.auth.backends.ModelBackend'})) Session.objects.add(dummy_session) client = Client() client.cookies[settings.SESSION_COOKIE_NAME] = dummy_session_key client.force_login(kive_user()) return client
def setUp(self): super(DockerImageViewMockTests, self).setUp() patcher = mocked_relations(KiveUser, DockerImage, User, Group) patcher.start() self.addCleanup(patcher.stop) self.client = self.create_client() self.dev_group = Group(pk=groups.DEVELOPERS_PK) self.everyone = Group(pk=groups.EVERYONE_PK) Group.objects.add(self.dev_group, self.everyone) self.user = kive_user() self.user.groups.add(self.dev_group) self.other_user = User(pk=5) self.docker_image = DockerImage(pk='99', name='git/joe/hello', tag='v1', git='http://server1.com/joe/hello.git', user=self.user) DockerImage.objects.add(self.docker_image) KiveUser.objects.add(KiveUser(pk=users.KIVE_USER_PK))
def test_context_manager(self): m = Manufacturer() with mocked_relations(Manufacturer): self.assertEqual(0, m.car_set.count()) m.car_set.add(Car()) self.assertEqual(1, m.car_set.count())
def create_client(self): patcher = mocked_relations(User, Session) patcher.start() self.addCleanup(patcher.stop) user = User(pk=users.KIVE_USER_PK) User.objects.add(user) User.objects.model = User # noinspection PyUnresolvedReferences patcher = patch.object(User._meta, 'default_manager', User.objects) patcher.start() self.addCleanup(patcher.stop) dummy_session_key = 'dummysession' dummy_session = Session(session_key=dummy_session_key, expire_date=now() + timedelta(days=1), session_data=SessionStore().encode({ SESSION_KEY: users.KIVE_USER_PK, HASH_SESSION_KEY: user.get_session_auth_hash(), BACKEND_SESSION_KEY: 'django.contrib.auth.backends.ModelBackend' })) Session.objects.add(dummy_session) client = Client() client.cookies[settings.SESSION_COOKIE_NAME] = dummy_session_key client.force_login(kive_user()) return client
def test_query_values_of_nested_field(self): with mocked_relations(Manufacturer, Car): make = Manufacturer(name='vw') self.mock_set.add(make) polo = Car(make=make, model='polo', speed=240) golf = Car(make=make, model='golf', speed=260) polo_white = CarVariation(car=polo, color='white') golf_white = CarVariation(car=golf, color='white') golf_black = CarVariation(car=golf, color='black') make.car_set = MockSet(polo, golf) polo.variations = MockSet(polo_white) golf.variations = MockSet(golf_white, golf_black) data = list( self.mock_set.values('car__model', 'car__variations__color', 'name')) assert { 'name': make.name, 'car__model': polo.model, 'car__variations__color': polo_white.color } in data assert { 'name': make.name, 'car__model': golf.model, 'car__variations__color': golf_white.color } in data assert { 'name': make.name, 'car__model': golf.model, 'car__variations__color': golf_black.color } in data
def setUp(self): super(CodeResourceViewMockTests, self).setUp() patcher = mocked_relations(KiveUser, CodeResource, CodeResourceRevision, User, Group) patcher.start() self.addCleanup(patcher.stop) # noinspection PyUnresolvedReferences patchers = [patch.object(CodeResource._meta, 'default_manager', CodeResource.objects), patch.object(CodeResourceRevision._meta, 'default_manager', CodeResource.objects)] def dummy_save(r): r.id = id(r) # noinspection PyUnresolvedReferences patchers.append(patch.object(CodeResource, 'save', dummy_save)) patcher = PatcherChain(patchers) patcher.start() self.addCleanup(patcher.stop) self.client = self.create_client() self.dev_group = Group(pk=groups.DEVELOPERS_PK) self.everyone = Group(pk=groups.EVERYONE_PK) Group.objects.add(self.dev_group, self.everyone) self.user = kive_user() self.user.groups.add(self.dev_group) self.content_file = ContentFile('some text', 'existing.txt') self.code_resource = CodeResource(pk='99', user=self.user, name='existing', filename='existing.txt') self.code_resource._state.adding = False self.other_user = User(pk=5) self.other_code_resource = CodeResource(pk='150', user=self.other_user) CodeResource.objects.add(self.code_resource, self.other_code_resource) self.code_resource_revision = CodeResourceRevision( pk='199', user=self.user, content_file=self.content_file) self.code_resource_revision.coderesource = self.code_resource self.other_code_resource_revision = CodeResourceRevision( pk='200', user=self.other_user) self.other_code_resource_revision.coderesource = self.other_code_resource self.other_code_resource.revisions.add(self.other_code_resource_revision) CodeResourceRevision.objects.add(self.code_resource_revision, self.other_code_resource_revision) k = KiveUser(pk=users.KIVE_USER_PK) k.groups.add(self.dev_group) KiveUser.objects.add(k)
def setUp(self): patcher = mocked_relations(Method, MethodDependency, Transformation) patcher.start() self.addCleanup(patcher.stop) driver = CodeResourceRevision( coderesource=CodeResource(filename='driver.py')) self.method = Method(driver=driver, family=MethodFamily()) self.dependency = self.add_dependency('helper.py')
def test_replaces_other_mocks(self): original_type = type(Manufacturer.car_set) self.assertIsInstance(Manufacturer.car_set, original_type) with mocked_relations(Manufacturer): Manufacturer.car_set = PropertyMock('Manufacturer.car_set') self.assertIsInstance(Manufacturer.car_set, original_type)
def test_mocked_relations_replaces_other_mocks(self): original_type = type(Manufacturer.car_set) self.assertIsInstance(Manufacturer.car_set, original_type) with mocked_relations(Manufacturer): Manufacturer.car_set = PropertyMock('Manufacturer.car_set') self.assertIsInstance(Manufacturer.car_set, original_type)
def test_mock_twice(self): """ Don't reset the mocking if a class is mocked twice. Could happen where Sedan is mocked on the class, and Car (the base class) is mocked on a method. """ Car.objects.add(Car(speed=95)) self.assertEqual(1, Car.objects.count()) with mocked_relations(Car): self.assertEqual(1, Car.objects.count())
def test_reusing_patcher(self): patcher = mocked_relations(Manufacturer) with patcher: self.assertEqual(0, Manufacturer.objects.count()) Manufacturer.objects.add(Manufacturer()) self.assertEqual(1, Manufacturer.objects.count()) with patcher: self.assertEqual(0, Manufacturer.objects.count()) Manufacturer.objects.add(Manufacturer()) self.assertEqual(1, Manufacturer.objects.count())
def test_mocked_relations_mock_twice(self): """ Don't reset the mocking if a class is mocked twice. Could happen where Sedan is mocked on the class, and Car (the base class) is mocked on a method. """ Car.objects.add(Car(speed=95)) self.assertEqual(1, Car.objects.count()) with mocked_relations(Car): self.assertEqual(1, Car.objects.count())
def test_query_aggregate_on_related_field(self): with mocked_relations(Manufacturer): cars = [Car(speed=1), Car(speed=2), Car(speed=3)] make = Manufacturer() make.car_set = MockSet(*cars) self.mock_set.add(make) result = self.mock_set.aggregate(Avg('car__speed')) assert result['car__speed__avg'] == sum([c.speed for c in cars]) / len(cars)
def test_mocked_relations_reusing_patcher(self): patcher = mocked_relations(Manufacturer) with patcher: self.assertEqual(0, Manufacturer.objects.count()) Manufacturer.objects.add(Manufacturer()) self.assertEqual(1, Manufacturer.objects.count()) with patcher: self.assertEqual(0, Manufacturer.objects.count()) Manufacturer.objects.add(Manufacturer()) self.assertEqual(1, Manufacturer.objects.count())
def test_query_aggregate_on_related_field(self): with mocked_relations(Manufacturer): cars = [Car(speed=1), Car(speed=2), Car(speed=3)] make = Manufacturer() make.car_set = MockSet(*cars) self.mock_set.add(make) result = self.mock_set.aggregate(Avg('car__speed')) assert result['car__speed__avg'] == sum([c.speed for c in cars]) / len(cars)
def setUp(self): patcher = mocked_relations(Method, MethodFamily, Transformation) patcher.start() self.addCleanup(patcher.stop) self.family = MethodFamily() self.old_method = self.family.members.create(family=self.family, revision_number=1, id=101) self.old_method.method = self.old_method self.new_method = self.family.members.create(family=self.family, revision_number=2, id=102) self.new_method.method = self.new_method
def mock_viewset(self, viewset_class): model = viewset_class.queryset.model patcher = mocked_relations(model, User, KiveUser) patcher.start() self.addCleanup(patcher.stop) user = User(pk=users.KIVE_USER_PK) User.objects.add(user) self.kive_kive_user = KiveUser(pk=users.KIVE_USER_PK, username="******") KiveUser.objects.add(self.kive_kive_user) # noinspection PyUnresolvedReferences patcher2 = patch.object(viewset_class, 'queryset', model.objects) patcher2.start() self.addCleanup(patcher2.stop)
def setUp(self): super(MethodViewMockTests, self).setUp() patcher = mocked_relations(KiveUser, MethodFamily, Method, CodeResource, CodeResourceRevision, CompoundDatatype, ContainerFamily, Container, Transformation, TransformationInput, TransformationOutput, User, Group) patcher.start() self.addCleanup(patcher.stop) # noinspection PyUnresolvedReferences patcher = patch.object(MethodFamily._meta, 'default_manager', MethodFamily.objects) patcher.start() self.addCleanup(patcher.stop) self.client = self.create_client() self.dev_group = Group(pk=groups.DEVELOPERS_PK) self.everyone = Group(pk=groups.EVERYONE_PK) Group.objects.add(self.dev_group, self.everyone) self.user = kive_user() self.user.groups.add(self.dev_group) self.other_user = User(pk=5) self.method_family = MethodFamily(pk='99', user=self.user) MethodFamily.objects.add(self.method_family) self.driver = CodeResourceRevision(user=self.user) self.driver.pk = 1337 # needed for viewing a method self.driver.coderesource = CodeResource() self.method = Method(pk='199', user=self.user) self.method.driver = self.driver self.method.family = self.method_family Method.objects.add(self.method) KiveUser.objects.add(KiveUser(pk=users.KIVE_USER_PK))
def mock_viewset(self, viewset_class): model = viewset_class.queryset.model patcher = mocked_relations(model, User, KiveUser) patcher.start() self.addCleanup(patcher.stop) user = User(pk=users.KIVE_USER_PK) User.objects.add(user) self.kive_kive_user = KiveUser(pk=users.KIVE_USER_PK, username="******") KiveUser.objects.add(self.kive_kive_user) # noinspection PyUnresolvedReferences patcher2 = patch.object(viewset_class, 'queryset', model.objects) patcher2.start() self.addCleanup(patcher2.stop)
def test_query_values_of_nested_field(self): with mocked_relations(Manufacturer, Car): make = Manufacturer(name='vw') self.mock_set.add(make) polo = Car(make=make, model='polo', speed=240) golf = Car(make=make, model='golf', speed=260) polo_white = CarVariation(car=polo, color='white') golf_white = CarVariation(car=golf, color='white') golf_black = CarVariation(car=golf, color='black') make.car_set = MockSet(polo, golf) polo.variations = MockSet(polo_white) golf.variations = MockSet(golf_white, golf_black) data = list(self.mock_set.values('car__model', 'car__variations__color', 'name')) assert {'name': make.name, 'car__model': polo.model, 'car__variations__color': polo_white.color} in data assert {'name': make.name, 'car__model': golf.model, 'car__variations__color': golf_white.color} in data assert {'name': make.name, 'car__model': golf.model, 'car__variations__color': golf_black.color} in data
def setUp(self): self.mock_viewset(ContainerAppViewSet) super(ContainerAppApiMockTests, self).setUp() patcher = mocked_relations(Container, ContainerFamily) patcher.start() self.addCleanup(patcher.stop) self.list_path = reverse("containerapp-list") self.list_view, _, _ = resolve(self.list_path) self.detail_pk = 43 self.detail_path = reverse("containerapp-detail", kwargs={'pk': self.detail_pk}) self.detail_view, _, _ = resolve(self.detail_path) self.my_user = User(pk=1000) User.objects.add(self.my_user) my_kive_user = KiveUser(pk=self.my_user.pk, username='******') KiveUser.objects.add(my_kive_user) other_user = User(pk=1001) User.objects.add(other_user) other_kive_user = KiveUser(pk=other_user.pk) KiveUser.objects.add(other_kive_user) my_container = Container.objects.create(id=100, user=my_kive_user) my_container.family = ContainerFamily.objects.create() other_container = Container.objects.create(id=101, user=other_kive_user) archive = ContainerApp(pk=42, name='archive', description='impressive') compress = ContainerApp(pk=43, name='compress') backup = ContainerApp(pk=44, name='backup') distribute = ContainerApp(pk=45, name='distribute') archive.container = compress.container = backup.container = my_container distribute.container = other_container ContainerApp.objects.add(archive, compress, backup, distribute)
def setUp(self): self.mock_viewset(ContainerAppViewSet) super(ContainerAppApiMockTests, self).setUp() patcher = mocked_relations(Container, ContainerFamily) patcher.start() self.addCleanup(patcher.stop) self.list_path = reverse("containerapp-list") self.list_view, _, _ = resolve(self.list_path) self.detail_pk = 43 self.detail_path = reverse("containerapp-detail", kwargs={'pk': self.detail_pk}) self.detail_view, _, _ = resolve(self.detail_path) self.my_user = User(pk=1000) User.objects.add(self.my_user) my_kive_user = KiveUser(pk=self.my_user.pk, username='******') KiveUser.objects.add(my_kive_user) other_user = User(pk=1001) User.objects.add(other_user) other_kive_user = KiveUser(pk=other_user.pk) KiveUser.objects.add(other_kive_user) my_container = Container.objects.create(id=100, user=my_kive_user) my_container.family = ContainerFamily.objects.create() other_container = Container.objects.create(id=101, user=other_kive_user) archive = ContainerApp(pk=42, name='archive', description='impressive') compress = ContainerApp(pk=43, name='compress') backup = ContainerApp(pk=44, name='backup') distribute = ContainerApp(pk=45, name='distribute') archive.container = compress.container = backup.container = my_container distribute.container = other_container ContainerApp.objects.add(archive, compress, backup, distribute)