def test_should_find_inconsistent_derived_image_metadatas(self): for i in range(1, 15): original_image_metadata = domain.OriginalImageMetadata( 'MYID%s' % i, domain.STATUS_INCONSISTENT, (800, 600), domain.IMAGE_FORMAT_JPEG) self._itemRepository.add(original_image_metadata) item = domain.DerivedImageMetadata(domain.STATUS_INCONSISTENT, (100, 100), domain.IMAGE_FORMAT_JPEG, original_image_metadata) self._itemRepository.add(item) for i in range(16, 20): original_image_metadata = domain.OriginalImageMetadata( 'MYID%s' % i, domain.STATUS_OK, (900, 400), domain.IMAGE_FORMAT_JPEG) self._itemRepository.add(original_image_metadata) item = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100), domain.IMAGE_FORMAT_JPEG, original_image_metadata) self._itemRepository.add(item) items = self._itemRepository.find_inconsistent_derived_image_metadatas( 10) assert len(items) == 10 for i in items: assert i.id in ['MYID%s-100x100-JPEG' % n for n in range(1, 15)] assert i.status == domain.STATUS_INCONSISTENT assert i.width == 100 assert i.height == 100 assert i.format == domain.IMAGE_FORMAT_JPEG
def test_should_find_derived_image_metadata_by_original_image_metadata_id_size_and_format( self): original_image_metadata = domain.OriginalImageMetadata( 'MYID12435', domain.STATUS_OK, (800, 600), domain.IMAGE_FORMAT_JPEG) self._itemRepository.add(original_image_metadata) item = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100), domain.IMAGE_FORMAT_JPEG, original_image_metadata) self._itemRepository.add(item) found_item = self._itemRepository.find_derived_image_metadata_by_original_image_metadata_id_size_and_format( 'MYID12435', (100, 100), domain.IMAGE_FORMAT_JPEG) assert found_item is not None assert found_item.status == domain.STATUS_OK assert found_item.width == 100 assert found_item.height == 100 assert found_item.format == domain.IMAGE_FORMAT_JPEG assert found_item.original_image_metadata.id == 'MYID12435' assert found_item.original_image_metadata.status == domain.STATUS_OK assert found_item.original_image_metadata.width == 800 assert found_item.original_image_metadata.height == 600 assert found_item.original_image_metadata.format == domain.IMAGE_FORMAT_JPEG _datetimes_should_be_equal(item.last_status_change_date, found_item.last_status_change_date)
def test_format_should_be_mandatoy_at_creation_time(self): try: domain.DerivedImageMetadata(domain.STATUS_OK, (800, 600), None, self.original_image_metadata) except Exception: pass else: self.fail()
def test_original_image_metadata_should_be_mandatoy_at_creation_time(self): try: domain.DerivedImageMetadata(domain.STATUS_OK, (800, 600), domain.IMAGE_FORMAT_JPEG, None) except Exception: pass else: self.fail()
def test_status_should_be_mandatory_at_creation_time(self): try: domain.DerivedImageMetadata(None, (800, 600), domain.IMAGE_FORMAT_JPEG, self.original_image_metadata) except Exception: pass else: self.fail()
def test_setting_status_should_update_last_status_change_date(self): item = domain.DerivedImageMetadata(domain.STATUS_INCONSISTENT, (100, 100), domain.IMAGE_FORMAT_JPEG, self.original_image_metadata) # f**k date by breaking encapsulation item._last_status_change_date = datetime.utcnow() - timedelta(1) item.status = domain.STATUS_OK assertionutils.last_status_date_should_be_now(item)
def test_should_not_save_two_derived_image_metadatas_with_same_id(self): original_image_metadata = domain.OriginalImageMetadata( 'MYID12435', domain.STATUS_OK, (800, 600), domain.IMAGE_FORMAT_JPEG) self._itemRepository.add(original_image_metadata) item = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100), domain.IMAGE_FORMAT_JPEG, original_image_metadata) self._itemRepository.add(item) try: item2 = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100), domain.IMAGE_FORMAT_JPEG, original_image_metadata) self._itemRepository.add(item2) except domain.DuplicateEntryException as ex: assert 'MYID12435-100x100-JPEG' == ex.duplicate_id except Exception as e: print e else: self.fail()
def test_should_not_find_derived_image_metadata_because_of_format(self): original_image_metadata = domain.OriginalImageMetadata( 'MYID12435', domain.STATUS_OK, (800, 600), domain.IMAGE_FORMAT_JPEG) self._itemRepository.add(original_image_metadata) item = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100), domain.IMAGE_FORMAT_JPEG, original_image_metadata) self._itemRepository.add(item) found_item = self._itemRepository.find_derived_image_metadata_by_original_image_metadata_id_size_and_format( 'MYID12435', (100, 100), 'JPEG2') assert found_item is None
def prepare_transformation(self, transformationRequest): logging.debug("prepare transformation: %s" % (transformationRequest, )) original_image_metadata = self._image_metadata_repository.find_original_image_metadata_by_id( transformationRequest.image_id) self._required_original_image_metadata(transformationRequest.image_id, original_image_metadata) self._wait_for_original_image_metadata(transformationRequest.image_id) derived_image_metadata = domain.DerivedImageMetadata( domain.STATUS_INCONSISTENT, transformationRequest.size, transformationRequest.target_format, original_image_metadata) cached_filename = self._path_generator.derived_path( derived_image_metadata).absolute() relative_cached_filename = self._path_generator.derived_path( derived_image_metadata).relative() logger.debug("Checks cache for existing image") if os.path.exists(cached_filename): logger.debug("Already exists in cache: %s " % (relative_cached_filename, )) def expunge_callback(session): session.expunge_all() self._session_template.do_with_session(expunge_callback) return relative_cached_filename logger.debug("Add repo metadata for derived image") try: self._image_metadata_repository.add(derived_image_metadata) except domain.DuplicateEntryException: def find(): return self._image_metadata_repository.find_derived_image_metadata_by_original_image_metadata_id_size_and_format( transformationRequest.image_id, transformationRequest.size, transformationRequest.target_format) self._wait_for_item_status_ok(find) derived_image_metadata = find() logger.debug("Checks that image format is supported") try: img = Image.open( self._path_generator.original_path( original_image_metadata).absolute()) except IOError, ex: raise imgengine.ImageProcessingException(ex)
def test_should_navigate_to_derived_image_metadatas_from_original_image_metadata( self): original_image_metadata = domain.OriginalImageMetadata( 'MYID12435', domain.STATUS_OK, (800, 600), domain.IMAGE_FORMAT_JPEG) self._itemRepository.add(original_image_metadata) item = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100), domain.IMAGE_FORMAT_JPEG, original_image_metadata) self._itemRepository.add(item) found_item = self._itemRepository.find_original_image_metadata_by_id( 'MYID12435') assert found_item is not None assert found_item.derived_image_metadatas is not None assert len(found_item.derived_image_metadatas) == 1 assert found_item.derived_image_metadatas[0].id == item.id
def test_deletion_of_original_image_metadata_should_delete_associated_derived_image_metadatas( self): original_image_metadata = domain.OriginalImageMetadata( 'MYID12435', domain.STATUS_OK, (800, 600), domain.IMAGE_FORMAT_JPEG) self._itemRepository.add(original_image_metadata) item = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100), domain.IMAGE_FORMAT_JPEG, original_image_metadata) self._itemRepository.add(item) self._session.delete( self._itemRepository.find_original_image_metadata_by_id( 'MYID12435')) found_derived_image_metadata = self._itemRepository.find_derived_image_metadata_by_original_image_metadata_id_size_and_format( 'MYID12435', (100, 100), domain.IMAGE_FORMAT_JPEG) assert found_derived_image_metadata is None found_original_image_metadata = self._itemRepository.find_original_image_metadata_by_id( 'MYID12435') assert found_original_image_metadata is None
def derived_100x100_yemmagouraya_metadata(): return domain.DerivedImageMetadata(domain.STATUS_OK, ('100', '100'), domain.IMAGE_FORMAT_JPEG, original_yemmagouraya_metadata())
def test_should_create_item_using_width_and_height_expressed_as_int(self): item = domain.DerivedImageMetadata(domain.STATUS_OK, (100, 100), domain.IMAGE_FORMAT_JPEG, self.original_image_metadata) _item_should_match(item)
def test_id_should_be_autogenerated_from_characteristics(self): item = domain.DerivedImageMetadata(domain.STATUS_OK, ('100', '100'), domain.IMAGE_FORMAT_JPEG, self.original_image_metadata) assert item.id == 'MYID12435-100x100-JPEG'