def test_convert_to_data_center_asset_uses_default_from_settings(self): target_status_id = DataCenterAssetStatus.from_id( settings.CONVERT_TO_DATACENTER_ASSET_DEFAULT_STATUS_ID).id bo_asset = BackOfficeAssetFactory( status=BackOfficeAssetStatus.from_name('damaged')) transition = Transition.objects.create( name='transition', model=TransitionModel.get_for_field(bo_asset, 'status'), source=0, target=target_status_id, ) bo_asset_pk = bo_asset.pk target_status_name = BackOfficeAssetStatus.from_id( target_status_id).name rack = RackFactory() BackOfficeAsset.convert_to_data_center_asset( instances=[bo_asset], rack=rack.id, service_env=ServiceEnvironmentFactory().id, position=1, model=DataCenterAssetModelFactory().id, request=None, transition_id=transition.pk, ) dc_asset = DataCenterAsset.objects.get(pk=bo_asset_pk) dc_asset_status_name = DataCenterAssetStatus.from_id( dc_asset.status).name self.assertEqual(target_status_name, dc_asset_status_name)
def test_convert_to_data_center_asset(self): bo_asset = BackOfficeAssetFactory() transition = Transition.objects.create( name='transition', model=TransitionModel.get_for_field(bo_asset, 'status'), source=0, target=0, ) bo_asset_pk = bo_asset.pk hostname = bo_asset.hostname rack = RackFactory() BackOfficeAsset.convert_to_data_center_asset( instances=[bo_asset], rack=rack.id, service_env=ServiceEnvironmentFactory().id, position=1, model=DataCenterAssetModelFactory().id, request=None, transition_id=transition.pk, ) dc_asset = DataCenterAsset.objects.get(pk=bo_asset_pk) self.assertEqual(dc_asset.rack.id, rack.id) self.assertFalse( BackOfficeAsset.objects.filter(pk=bo_asset_pk).exists()) self.assertEqual(dc_asset.hostname, hostname)
def test_convert_to_data_center_asset_preserves_status_name(self): bo_asset = BackOfficeAssetFactory( status=BackOfficeAssetStatus.from_name('damaged')) transition = Transition.objects.create( name='transition', model=TransitionModel.get_for_field(bo_asset, 'status'), source=0, target=0, ) bo_asset_pk = bo_asset.pk bo_asset_status_name = BackOfficeAssetStatus.from_id( bo_asset.status).name rack = RackFactory() BackOfficeAsset.convert_to_data_center_asset( instances=[bo_asset], rack=rack.id, service_env=ServiceEnvironmentFactory().id, position=1, model=DataCenterAssetModelFactory().id, request=None, transition_id=transition.pk, ) dc_asset = DataCenterAsset.objects.get(pk=bo_asset_pk) dc_asset_status_name = DataCenterAssetStatus.from_id( dc_asset.status).name self.assertEqual(bo_asset_status_name, dc_asset_status_name)
def test_assign_many_licences(self): asset = BackOfficeAssetFactory() licences = [LicenceFactory() for i in range(2)] self.assertFalse(asset.licences.all()) BackOfficeAsset.assign_licence( instances=[asset], request=None, licences=licences, ) self.assertCountEqual( [base_obj_lic.licence.id for base_obj_lic in asset.licences.all()], [licence.id for licence in licences], )
def convert_to_backoffice_asset(cls, instances, **kwargs): with transaction.atomic(): for i, instance in enumerate(instances): back_office_asset = BackOfficeAsset() back_office_asset.region = Region.objects.get( pk=kwargs['region']) back_office_asset.warehouse = Warehouse.objects.get( pk=kwargs['warehouse']) target_status = int( Transition.objects.values_list('target', flat=True).get( pk=kwargs['transition_id']) # noqa ) back_office_asset.status = dc_asset_to_bo_asset_status_converter( # noqa instance.status, target_status) move_parents_models(instance, back_office_asset, exclude_copy_fields=['status']) # Save new asset to list, required to redirect url. # RunTransitionView.get_success_url() instances[i] = back_office_asset
def test_a_report_is_generated(self, mock_method): GENERATED_FILE_CONTENT = REPORT_TEMPLATE = b'some-content' mock_method.return_value = GENERATED_FILE_CONTENT report_template = ReportTemplateFactory(template__data=REPORT_TEMPLATE) user = UserFactory() instances = [ BackOfficeAssetFactory( user=UserFactory(first_name="James", last_name="Bond") ) ] context = BackOfficeAsset._get_report_context(instances) attachment = generate_report( report_template.name, user, instances, report_template.language, context=context) correct_filename = '{}_{}-{}_{}.pdf'.format( timezone.now().isoformat()[:10], 'james', 'bond', report_template.report.name, ) self.assertEqual(attachment.original_filename, correct_filename) self.assertEqual(attachment.file.read(), GENERATED_FILE_CONTENT)
def test_get_autocomplete_queryset(self): queryset = BackOfficeAsset.get_autocomplete_queryset() self.assertEquals(1, queryset.count())
def release_report(cls, instances, requester, transition_id, **kwargs): report_name = get_report_name_for_transition_id(transition_id) return BackOfficeAsset._generate_report( instances=instances, name=report_name, requester=requester, language=kwargs['report_language'] )