def setUpClass(cls) -> None:
        super().setUpClass()
        cls.user = cls.create_superuser('first', '*****@*****.**', 'p', tenant=0)

        factory = TenantsAPIRequestFactory(force_authenticate=cls.user)
        request = factory.patch('', data=dict())

        view = MagicMock()
        view.request.return_value = request
        cls.serializer_context = dict(
            view=view,
            request=request,
        )
    def test_steps_validation_during_patching(self) -> None:
        self.set_tenant(0)
        user = self.users[0]
        campaign = Campaign.objects.create(name='start/stop validation', owner=user)
        step = Step.objects.create(campaign=campaign, start=datetime.time(9, 45), end=datetime.time(18, 30))

        factory = TenantsAPIRequestFactory(force_authenticate=user)
        request = factory.patch('', data=dict(timezone='UTC-0300'))
        response = StepViewSet.as_view({'patch': 'partial_update'})(request, **{
            compose_parent_pk_kwarg_name('campaign'): campaign.id,
            'pk': step.pk
        })

        self.assertEqual(response.status_code, status.HTTP_200_OK, str(response.data))
        step_data = response.data
        self.assertEqual(step.id, step_data['id'])
        self.assertEqual('UTC-0300', step_data['timezone'])
    def test_unable_to_set_different_tenant_user_as_campaign_owner(self) -> None:
        self.set_tenant(0)
        user = self.users[0]
        campaign = Campaign.objects.create(name='this gonna be great', owner=user)

        factory = TenantsAPIRequestFactory(force_authenticate=user)
        request = factory.get('')
        response = CampaignsViewSet.as_view({'get': 'retrieve'})(request, pk=campaign.pk)
        self.assertEqual(response.status_code, status.HTTP_200_OK, str(response.data))

        other_user = self.users[2]
        self.assertNotEqual(other_user.profile.tenant, user.profile.tenant)
        factory = TenantsAPIRequestFactory(force_authenticate=user)
        request = factory.patch('', data=dict(owner=other_user.pk))
        response = CampaignsViewSet.as_view({'patch': 'partial_update'})(request, pk=campaign.pk)

        self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code, str(response.data))
        self.assertDictEqual({'owner': [
            'Invalid pk "%s" - object does not exist.' % other_user.pk
        ]}, response.data)