def test_field_info03(self): "Invalid fields." with self.assertRaises(FieldDoesNotExist): meta.FieldInfo(FakeContact, 'invalid') with self.assertRaises(FieldDoesNotExist): meta.FieldInfo(FakeContact, 'image__invalid') with self.assertRaises(FieldDoesNotExist): meta.FieldInfo(FakeContact, 'invalid__invalidtoo')
def test_field_info_slice06(self): "Step is forbidden" fi = meta.FieldInfo(FakeContact, 'image__user') with self.assertRaises(ValueError): _ = fi[::0] with self.assertRaises(ValueError): _ = fi[::2]
def test_field_info_slice05(self): "Big start" fi = meta.FieldInfo(FakeContact, 'image__user') with self.assertNoException(): sub_fi = fi[5:] # Empty self.assertEqual(FakeContact, sub_fi.model) self.assertFalse(sub_fi)
def test_field_info01(self): "Simple field" fi = meta.FieldInfo(FakeContact, 'first_name') self.assertEqual(FakeContact, fi.model) self.assertEqual(1, len(fi)) self.assertIs(True, bool(fi)) with self.assertNoException(): base_field = fi[0] self.assertEqual(FakeContact._meta.get_field('first_name'), base_field) self.assertEqual(FakeOrganisation._meta.get_field('name'), meta.FieldInfo(FakeOrganisation, 'name')[0]) # FK self.assertEqual(FakeContact._meta.get_field('image'), meta.FieldInfo(FakeContact, 'image')[0])
def test_field_info02(self): "depth > 1" fi = meta.FieldInfo(FakeContact, 'image__name') self.assertEqual(2, len(fi)) self.assertEqual(FakeContact._meta.get_field('image'), fi[0]) self.assertEqual(FakeImage._meta.get_field('name'), fi[1]) self.assertEqual(f'{_("Photograph")} - {_("Name")}', fi.verbose_name) with self.assertNoException(): fi_as_list = [ *meta.FieldInfo(FakeContact, 'image__user__username') ] self.assertListEqual([ FakeContact._meta.get_field('image'), FakeImage._meta.get_field('user'), get_user_model()._meta.get_field('username'), ], fi_as_list)
def test_field_info_slice03(self): "Negative start." fi = meta.FieldInfo(FakeContact, 'image__user__username') with self.assertNoException(): sub_fi = fi[-1:] # User.username User = get_user_model() self.assertEqual(User, sub_fi.model) self.assertEqual(1, len(sub_fi)) self.assertEqual(User._meta.get_field('username'), sub_fi[0])
def test_field_info02(self): "depth > 1" fi = meta.FieldInfo(FakeContact, 'image__name') self.assertEqual(2, len(fi)) self.assertEqual(FakeContact._meta.get_field('image'), fi[0]) self.assertEqual(FakeImage._meta.get_field('name'), fi[1]) self.assertEqual( _(u'Photograph') + ' - ' + _(u'Name'), fi.verbose_name) with self.assertNoException(): fi_as_list = list( meta.FieldInfo(FakeContact, 'image__user__username')) self.assertEqual([ FakeContact._meta.get_field('image'), FakeImage._meta.get_field('user'), get_user_model()._meta.get_field('username'), ], fi_as_list)
def test_field_info_slice02(self): "Stop (no start)." fi = meta.FieldInfo(FakeContact, 'image__user__username') with self.assertNoException(): sub_fi = fi[:2] # Contact.image__user__username self.assertIsInstance(sub_fi, meta.FieldInfo) self.assertEqual(FakeContact, sub_fi.model) self.assertEqual(2, len(sub_fi)) self.assertEqual(FakeContact._meta.get_field('image'), sub_fi[0]) self.assertEqual(FakeImage._meta.get_field('user'), sub_fi[1])
def test_field_info_slice04(self): "'very' negative start." fi = meta.FieldInfo(FakeContact, 'image__user__username') with self.assertNoException(): sub_fi = fi[-4:] # No change (Contact.image__user__username) self.assertEqual(FakeContact, sub_fi.model) self.assertEqual(3, len(sub_fi)) self.assertEqual(FakeContact._meta.get_field('image'), sub_fi[0]) self.assertEqual(FakeImage._meta.get_field('user'), sub_fi[1]) self.assertEqual(get_user_model()._meta.get_field('username'), sub_fi[2])
def test_field_info_slice01(self): "Start" fi = meta.FieldInfo(FakeContact, 'image__user__username') with self.assertNoException(): sub_fi = fi[1:] # Image.user__username self.assertIsInstance(sub_fi, meta.FieldInfo) self.assertEqual(FakeImage, sub_fi.model) self.assertEqual(2, len(sub_fi)) self.assertEqual(FakeImage._meta.get_field('user'), sub_fi[0]) self.assertEqual(get_user_model()._meta.get_field('username'), sub_fi[1]) empty_sub_fi = fi[3:] self.assertEqual(FakeContact, empty_sub_fi.model) self.assertEqual(0, len(empty_sub_fi)) self.assertIs(False, bool(empty_sub_fi))