class TestAdapter(BaseTest): """ Test that collective.outputfilters.enhancelinks is properly installed. """ layer = COLLECTIVE_OUTPUTFILTERS_enhancelinks_FUNCTIONAL_TESTING def setUp(self): """Custom shared utility setup for tests.""" self.portal = self.layer['portal'] setRoles(self.portal, TEST_USER_ID, ['Manager']) login(self.portal, TEST_USER_NAME) self.file = api.content.create( type='File', title='file', container=self.portal, file=self.get_attachment(u'file.pdf', type='file'), ) self.csv = api.content.create( type='File', title='csv file', container=self.portal, file=self.get_attachment(u'file_csv.csv', type='file'), ) self.image = api.content.create( type='Image', title='image', container=self.portal, image=self.get_attachment(u'image.jpg', type='image'), ) self.document = api.content.create(type='Document', title='A page', container=self.portal) self.file_provider = ILinkEnhancerProvider(self.file, None) self.csv_provider = ILinkEnhancerProvider(self.csv, None) self.img_provider = ILinkEnhancerProvider(self.image, None) def test_adapter_guess_mimetype(self): """Test if the method find the correct mimetype""" # I pass False because it isn't a DX content file_item = self.get_right_file(item=self.file, type='file') csv_item = self.get_right_file(item=self.csv, type='file') image_item = self.get_right_file(item=self.image, type='image') # File PDF mimetype = self.extract_mimetype(file_item) self.assertEqual(len(mimetype), 1) self.assertEqual(mimetype[0].id, 'PDF document') # Csv mimetype = self.extract_mimetype(csv_item) self.assertEqual(len(mimetype), 1) # ===================== WARNING ================================== # ATTENZIONE: questo singolo test è 'sbagliato': il vero risultato # dovrebbe essere `CSV document` ma il prodotto # `Products.MimetypesRegistry` ha il mimetype sbagliato e ho aperto # anche una issue su questo argomento # https://github.com/plone/Products.MimetypesRegistry/issues/17 # Quando questo test fallirà, probabilmente sarà stato aggiornato # e sarà da sistemare anche questo test. self.assertEqual(mimetype[0].id, 'text/comma-separated-values') # Image img_mimetype = self.extract_mimetype(image_item) self.assertEqual(len(img_mimetype), 1) self.assertEqual(img_mimetype[0].id, 'JPEG image') def test_adapter_format_obj_size(self): """Test if the method returns a correct obj size""" # File PDF self.assertEqual(self.file_provider.get_formatted_size(self.file.file), '8.56 KB') # CSV self.assertEqual(self.csv_provider.get_formatted_size(self.csv.file), '39 bytes') # Image self.assertEqual( self.img_provider.get_formatted_size(self.image.image), '5.13 KB') def test_adapter_extract_infos_from_mime(self): """" Test if the method returns the correct infos """ file_item = self.get_right_file(item=self.file, type='file') csv_item = self.get_right_file(item=self.csv, type='file') image_item = self.get_right_file(item=self.image, type='image') # File PDF mimetype = self.extract_mimetype(file_item) infos = self.file_provider.extract_infos(file_item, mimetype) self.assertIn(infos.get('icon_url'), FILE_ICON_URLS) self.assertEqual(infos.get('extension'), 'pdf') self.assertEqual(infos.get('size'), '8.56 KB') self.assertIn(infos.get('url_suffix'), FILE_DOWNLOAD_URLS) # CSV mimetype = self.extract_mimetype(csv_item) infos = self.csv_provider.extract_infos(csv_item, mimetype) # La successiva assertIn è strana per lo stesso motivo del WARNING che # potete trovare nei commenti più su. Il rilevamento del csv è buggato # e quindi l'icona restituita è 'text.png' che non è necessariamente # sbagliata però si potrebbe fare di meglio. self.assertIn(infos.get('icon_url'), CSV_ICON_URLS) self.assertEqual(infos.get('extension'), 'csv') self.assertEqual(infos.get('size'), '39 bytes') self.assertIn(infos.get('url_suffix'), CSV_DOWNLOAD_URLS) # Image img_mimetype = self.extract_mimetype(image_item) infos = self.img_provider.extract_infos(image_item, img_mimetype) self.assertIn(infos.get('icon_url'), IMAGE_ICON_URLS) self.assertEqual(infos.get('extension'), 'jpg') self.assertEqual(infos.get('size'), '5.13 KB') self.assertEqual(infos.get('url_suffix'), '') def test_adapter_for_file(self): """Test if the view returns the correct infos for a file""" infos = self.file_provider.get_link_details() self.assertIn(infos.get('icon_url'), FILE_ICON_URLS) self.assertEqual(infos.get('extension'), 'pdf') self.assertEqual(infos.get('size'), '8.56 KB') self.assertIn(infos.get('url_suffix'), FILE_DOWNLOAD_URLS) def test_adapter_for_csv(self): """Test if the view returns the correct infos for a file""" infos = self.csv_provider.get_link_details() self.assertIn(infos.get('icon_url'), CSV_ICON_URLS) self.assertEqual(infos.get('extension'), 'csv') self.assertEqual(infos.get('size'), '39 bytes') self.assertIn(infos.get('url_suffix'), CSV_DOWNLOAD_URLS) def test_adapter_for_image(self): """Test if the view returns the correct infos for an image""" infos = self.img_provider.get_link_details() self.assertIn(infos.get('icon_url'), IMAGE_ICON_URLS) self.assertEqual(infos.get('extension'), 'jpg') self.assertEqual(infos.get('size'), '5.13 KB') self.assertEqual(infos.get('url_suffix'), '')
class TestAdapter(unittest.TestCase): """ Test that collective.outputfilters.enhancelinks is properly installed. """ layer = COLLECTIVE_OUTPUTFILTERS_enhancelinks_FUNCTIONAL_TESTING def setUp(self): """Custom shared utility setup for tests.""" self.portal = self.layer['portal'] setRoles(self.portal, TEST_USER_ID, ['Manager']) login(self.portal, TEST_USER_NAME) file_path = os.path.join(os.path.dirname(__file__), "file.pdf") image_path = os.path.join(os.path.dirname(__file__), "image.jpg") self.file = api.content.create( type='File', title='file', container=self.portal, file=open(file_path)) self.image = api.content.create( type='Image', title='image', container=self.portal, image=open(image_path)) self.document = api.content.create( type='Document', title='A page', container=self.portal) self.file_provider = ILinkEnhancerProvider(self.file, None) self.img_provider = ILinkEnhancerProvider(self.image, None) def test_adapter_guess_mimetype(self): """Test if the method find the correct mimetype""" # I pass False because it isn't a DX content mimetype = self.file_provider.guess_mimetype( self.file.getFile().getContentType(), self.file.getFile().filename) self.assertEqual(len(mimetype), 1) self.assertEqual(mimetype[0].id, 'PDF document') img_mimetype = self.img_provider.guess_mimetype( self.image.getFile().getContentType(), self.image.getFile().filename) self.assertEqual(len(img_mimetype), 1) self.assertEqual(img_mimetype[0].id, 'JPEG image') def test_adapter_format_obj_size(self): """Test if the method returns a correct obj size""" self.assertEqual( self.file_provider.get_formatted_size(self.file.getFile()), '8.4 KB') self.assertEqual( self.img_provider.get_formatted_size(self.image.getFile()), '5.0 KB') def test_adapter_extract_infos_from_mime(self): """ Test if the method returns the correct infos """ mimetype = self.file_provider.guess_mimetype( self.file.getFile().getContentType(), self.file.getFile().filename) infos = self.file_provider.extract_infos( self.file.getFile(), mimetype) self.assertEqual(infos.get('icon_url'), 'http://nohost/plone/pdf.png') self.assertEqual(infos.get('extension'), 'pdf') self.assertEqual(infos.get('size'), '8.4 KB') self.assertEqual(infos.get('url_suffix'), '/at_download/file/file.pdf') mimetype = self.img_provider.guess_mimetype( self.image.getFile().getContentType(), self.image.getFile().filename) infos = self.img_provider.extract_infos( self.image.getFile(), mimetype) self.assertEqual(infos.get('icon_url'), 'http://nohost/plone/image.png') self.assertEqual(infos.get('extension'), 'jpg') self.assertEqual(infos.get('size'), '5.0 KB') self.assertEqual(infos.get('url_suffix'), '') def test_adapter_for_file(self): """Test if the view returns the correct infos for a file""" infos = self.file_provider.get_link_details() self.assertEqual(infos.get('icon_url'), 'http://nohost/plone/pdf.png') self.assertEqual(infos.get('extension'), 'pdf') self.assertEqual(infos.get('size'), '8.4 KB') self.assertEqual(infos.get('url_suffix'), '/at_download/file/file.pdf') def test_adapter_for_image(self): """Test if the view returns the correct infos for an image""" infos = self.img_provider.get_link_details() self.assertEqual(infos.get('icon_url'), 'http://nohost/plone/image.png') self.assertEqual(infos.get('extension'), 'jpg') self.assertEqual(infos.get('size'), '5.0 KB') self.assertEqual(infos.get('url_suffix'), '')