def test_reload_home(self): self.login() class FoobarBrick1(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_home_1') class FoobarBrick2(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_home_2') brick_registry.register(FoobarBrick1, FoobarBrick2) response = self.assertGET200( reverse('creme_core__reload_home_bricks'), # data={'brick_id': FoobarBrick1.id_, # 'brick_deps': ','.join([FoobarBrick2.id_, 'silly_id']) # } data={ 'brick_id': [FoobarBrick1.id_, FoobarBrick2.id_, 'silly_id'] }, ) # self.assertEqual('text/javascript', response['Content-Type']) self.assertEqual('application/json', response['Content-Type']) self.assertEqual( [ [ FoobarBrick1.id_, self.TestBrick.string_format_home(FoobarBrick1.id_) ], [ FoobarBrick2.id_, self.TestBrick.string_format_home(FoobarBrick2.id_) ], ], # load_json(response.content) response.json())
def test_reload_detailview01(self): user = self.login() atom = FakeContact.objects.create(user=user, first_name='Atom', last_name='Tenma') class FoobarBrick(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_detailview01') contact = None def detailview_display(self, context): FoobarBrick.contact = context.get('object') # return super(FoobarBrick, self).detailview_display(context) return super().detailview_display(context) brick_registry.register(FoobarBrick) response = self.assertGET200( reverse('creme_core__reload_detailview_bricks', args=(atom.id, )), data={'brick_id': FoobarBrick.id_}, ) # self.assertEqual('text/javascript', response['Content-Type']) self.assertEqual('application/json', response['Content-Type']) self.assertEqual( [[ FoobarBrick.id_, self.TestBrick.string_format_detail(FoobarBrick.id_) ]], # load_json(response.content) response.json()) self.assertEqual(atom, FoobarBrick.contact)
def test_reload_detailview04(self): "Not superuser" self.login(is_superuser=False) SetCredentials.objects.create(role=self.role, value=EntityCredentials.VIEW, set_type=SetCredentials.ESET_ALL) atom = FakeContact.objects.create(user=self.other_user, first_name='Atom', last_name='Tenma') self.assertTrue(self.user.has_perm_to_view(atom)) class FoobarBrick(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_detailview04') brick_registry.register(FoobarBrick) response = self.assertGET200( reverse('creme_core__reload_detailview_bricks', args=(atom.id, )), data={'brick_id': FoobarBrick.id_}, ) self.assertEqual( [[ FoobarBrick.id_, self.TestBrick.string_format_detail(FoobarBrick.id_) ]], # load_json(response.content) response.json())
def test_reload_basic04(self): "Extra data" self.login() extra_data = [1, 2] # errors = [] received_extra_data = None class FoobarBrick(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_basic04') @self.TestBrick.reloading_info.setter def reloading_info(self, info): nonlocal received_extra_data received_extra_data = info brick_registry.register(FoobarBrick) response = self.assertGET200( reverse('creme_core__reload_bricks'), data={ 'brick_id': FoobarBrick.id_, 'extra_data': json_dump({FoobarBrick.id_: extra_data}), }, ) self.assertEqual( [[ FoobarBrick.id_, self.TestBrick.string_format_detail(FoobarBrick.id_) ]], # load_json(response.content) response.json()) self.assertEqual(extra_data, received_extra_data)
def test_reload_basic05(self): "Invalid extra data" self.login() error = None received_extra_data = None class FoobarBrick(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_basic05') def detailview_display(self, context): nonlocal error, received_extra_data try: received_extra_data = BricksManager.get( context).get_reloading_info(self) except Exception as e: error = e # return super(FoobarBrick, self).detailview_display(context) return super().detailview_display(context) brick_registry.register(FoobarBrick) self.assertGET200( reverse('creme_core__reload_bricks'), data={ 'brick_id': FoobarBrick.id_, 'extra_data': '{%s: ' % FoobarBrick.id_, }, ) self.assertIsNone(received_extra_data) self.assertIsNotNone(error)
def test_reload_basic01(self): self.login(is_superuser=False, creatable_models=[FakeContact]) class FoobarBrick1(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_basic01_1') permissions = 'creme_core' class FoobarBrick2(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_basic01_2') permissions = ['creme_core', 'creme_core.add_fakecontact'] brick_registry.register(FoobarBrick1, FoobarBrick2) response = self.assertGET200( reverse('creme_core__reload_bricks'), data={ 'brick_id': [FoobarBrick1.id_, FoobarBrick2.id_, 'silly_id'] }, ) self.assertEqual('application/json', response['Content-Type']) fmt = self.TestBrick.string_format_detail self.assertListEqual( [ [FoobarBrick1.id_, fmt(FoobarBrick1.id_)], [FoobarBrick2.id_, fmt(FoobarBrick2.id_)], ], response.json(), )
def test_reload_detailview06(self): "Extra data" user = self.login() atom = FakeContact.objects.create(user=user, first_name='Atom', last_name='Tenma') extra_data = [1, 2] received_extra_data = [] # TODO: nonlocal in Py3K class FoobarBrick(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_detailview06') @self.TestBrick.reloading_info.setter def reloading_info(self, info): received_extra_data.append(info) brick_registry.register(FoobarBrick) response = self.assertGET200( reverse('creme_core__reload_detailview_bricks', args=(atom.id, )), data={ 'brick_id': FoobarBrick.id_, 'extra_data': json_dump({FoobarBrick.id_: extra_data}), }, ) self.assertEqual([[ FoobarBrick.id_, self.TestBrick.string_format_detail(FoobarBrick.id_) ]], response.json()) self.assertTrue(received_extra_data) self.assertEqual(extra_data, received_extra_data[0])
def test_reload_basic01(self): self.login() class FoobarBrick1(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_basic01_1') permission = 'persons' class FoobarBrick2(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_basic01_2') permission = 'persons' brick_registry.register(FoobarBrick1, FoobarBrick2) response = self.assertGET200( reverse('creme_core__reload_bricks'), data={ 'brick_id': [FoobarBrick1.id_, FoobarBrick2.id_, 'silly_id'] }, ) self.assertEqual('application/json', response['Content-Type']) self.assertEqual([ [ FoobarBrick1.id_, self.TestBrick.string_format_detail(FoobarBrick1.id_) ], [ FoobarBrick2.id_, self.TestBrick.string_format_detail(FoobarBrick2.id_) ], ], response.json())
def test_reload_detailview02(self): "With dependencies" user = self.login() atom = FakeContact.objects.create(user=user, first_name='Atom', last_name='Tenma') class FoobarBrick1(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_detailview02_1') contact = None def detailview_display(self, context): FoobarBrick1.contact = context.get('object') # return super(FoobarBrick1, self).detailview_display(context) return super().detailview_display(context) class FoobarBrick2(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_detailview02_2') contact = None def detailview_display(self, context): FoobarBrick2.contact = context.get('object') # return super(FoobarBrick2, self).detailview_display(context) return super().detailview_display(context) class FoobarBrick3(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_detailview02_3') contact = None def detailview_display(self, context): FoobarBrick3.contact = context.get('object') # return super(FoobarBrick3, self).detailview_display(context) return super().detailview_display(context) brick_registry.register(FoobarBrick1, FoobarBrick2, FoobarBrick3) response = self.assertGET200( reverse('creme_core__reload_detailview_bricks', args=(atom.id, )), data={ 'brick_id': [FoobarBrick1.id_, FoobarBrick2.id_, FoobarBrick3.id_] }, ) fmt = self.TestBrick.string_format_detail self.assertEqual( [ [FoobarBrick1.id_, fmt(FoobarBrick1.id_)], [FoobarBrick2.id_, fmt(FoobarBrick2.id_)], [FoobarBrick3.id_, fmt(FoobarBrick3.id_)], ], # load_json(response.content) response.json()) self.assertEqual(atom, FoobarBrick1.contact) self.assertEqual(atom, FoobarBrick2.contact) self.assertEqual(atom, FoobarBrick3.contact)
def test_reload_basic02(self): "Do not have the credentials" self.login(is_superuser=False) class FoobarBrick1(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_basic02') permission = 'persons' brick_registry.register(FoobarBrick1) self.assertGET403(reverse('creme_core__reload_bricks'), data={'brick_id': FoobarBrick1.id_})
def test_reload_basic03(self): "Not superuser" app_name = 'persons' self.login(is_superuser=False, allowed_apps=[app_name]) class FoobarBrick1(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_basic03') permission = app_name brick_registry.register(FoobarBrick1) response = self.assertGET200(reverse('creme_core__reload_bricks'), data={'brick_id': FoobarBrick1.id_}) self.assertEqual([[ FoobarBrick1.id_, self.TestBrick.string_format_detail(FoobarBrick1.id_) ]], response.json())
def test_reload_detailview03(self): "Do not have the credentials" self.login(is_superuser=False) atom = FakeContact.objects.create(user=self.other_user, first_name='Atom', last_name='Tenma') class FoobarBrick(self.TestBrick): id_ = Brick.generate_id('creme_core', 'test_bricks_reload_detailview03') brick_registry.register(FoobarBrick) self.assertGET403( reverse('creme_core__reload_detailview_bricks', args=(atom.id, )), data={'brick_id': FoobarBrick.id_}, )
def test_brick_import_n_display01(self): "Named Brick." self.login() brick_str = '<div>FOOBAR</div>' name = 'CremeBricksTagsTestCase__test_brick_import_n_display01' class FooBrick(Brick): id_ = Brick.generate_id('creme_core', name) verbose_name = 'Testing purpose' def detailview_display(self, context): return brick_str brick_registry.register(FooBrick) with self.assertNoException(): template = Template( f"{{% load creme_bricks %}}" f"{{% brick_import app='creme_core' name='{name}' as my_brick %}}" f"{{% brick_display my_brick %}}") render = template.render(RequestContext(self.build_request())) self.assertEqual(brick_str, render.strip())