示例#1
0
    def setUp(self):
        super().setUp()
        self.user1 = factories.UserFactory()
        self.user2 = factories.UserFactory()
        self.service_env = ServiceEnvironmentFactory()
        self.model = BackOfficeAssetModelFactory()
        self.warehouse = WarehouseFactory()
        self.warehouse.stocktaking_enabled = True
        self.warehouse.save()
        self.asset = BackOfficeAssetFactory(
            warehouse=self.warehouse,
            model=self.model,
        )
        self.asset.user = self.user1
        self.asset.save()

        self.base_tag = settings.INVENTORY_TAG
        if self.asset.warehouse.stocktaking_tag_suffix != '':
            self.base_tag = '{prefix}-{warehouse}'.format(
                prefix=self.base_tag,
                warehouse=self.asset.warehouse.stocktaking_tag_suffix,
            )
        self.date_tag = None
        if settings.INVENTORY_TAG_APPEND_DATE:
            self.date_tag = '{base}_{date}'.format(
                base=self.base_tag,
                date=date.today().isoformat(),
            )
        self.tags = [
            self.base_tag,
            settings.INVENTORY_TAG_USER,
            self.date_tag,
        ]
示例#2
0
class StockTakingTests(TestCase, ClientMixin):
    def setUp(self):
        super().setUp()
        self.user1 = factories.UserFactory()
        self.user2 = factories.UserFactory()
        self.service_env = ServiceEnvironmentFactory()
        self.model = BackOfficeAssetModelFactory()
        self.warehouse = WarehouseFactory()
        self.warehouse.stocktaking_enabled = True
        self.warehouse.save()
        self.asset = BackOfficeAssetFactory(
            warehouse=self.warehouse,
            model=self.model,
        )
        self.asset.user = self.user1
        self.asset.save()

        self.base_tag = settings.INVENTORY_TAG
        if self.asset.warehouse.stocktaking_tag_suffix != '':
            self.base_tag = '{prefix}-{warehouse}'.format(
                prefix=self.base_tag,
                warehouse=self.asset.warehouse.stocktaking_tag_suffix,
            )
        self.date_tag = None
        if settings.INVENTORY_TAG_APPEND_DATE:
            self.date_tag = '{base}_{date}'.format(
                base=self.base_tag,
                date=date.today().isoformat(),
            )
        self.tags = [
            self.base_tag,
            settings.INVENTORY_TAG_USER,
            self.date_tag,
        ]

    def test_tag_asset(self):
        self.assertTrue(self.login_as_user(self.user1))
        response = self.client.post(reverse('inventory_tag'), {
            'asset_id': self.asset.id,
            'confirm_button': 'Yes',
            'answer': 'yes'
        },
                                    follow=True)

        self.assertEquals(response.status_code, 200)
        for t in self.tags:
            self.assertIn(t, self.asset.tags.names())

    def test_ownership_verification(self):
        self.assertTrue(self.login_as_user(self.user2))
        response = self.client.post(reverse('inventory_tag'), {
            'asset_id': self.asset.id,
            'confirm_button': 'Yes',
            'answer': 'yes'
        },
                                    follow=True)
        self.assertEquals(response.status_code, 403)
示例#3
0
    def setUp(self):
        super().setUp()
        self.warehouse_1 = WarehouseFactory(name='api_test')
        self.user = UserFactory()
        self.officeinfrastructure = OfficeInfrastructureFactory()
        self.bo = BackOfficeAssetFactory(status=BackOfficeAssetStatus.new,
                                         user=UserFactory(),
                                         owner=UserFactory())
        self.licence_1 = LicenceFactory()
        self.licence_2 = LicenceFactory()
        actions = [
            'assign_user', 'assign_licence', 'assign_owner',
            'assign_loan_end_date', 'assign_warehouse',
            'assign_office_infrastructure', 'add_remarks', 'assign_task_url',
            'change_hostname'
        ]
        self.transition_1 = self._create_transition(
            BackOfficeAsset, 'BackOffice', actions, 'status',
            [BackOfficeAssetStatus.new.id],
            BackOfficeAssetStatus.in_progress.id)[1]
        self.transition_2 = self._create_transition(
            BackOfficeAsset,
            'BackOffice_Async',
            actions,
            'status', [BackOfficeAssetStatus.new.id],
            BackOfficeAssetStatus.in_progress.id,
            run_asynchronously=True)[1]
        self.superuser = get_user_model().objects.create_superuser(
            'test', '*****@*****.**', 'test')
        self.api_client = APIClient()
        self.api_client.login(username='******', password='******')

        self.client = Client()
        self.client.login(username='******', password='******')
示例#4
0
    def test_create_incorrect_data(self):
        carrier = CellularCarrierFactory()

        warehouse = WarehouseFactory()

        user = UserFactory()

        owner = UserFactory()

        sim_card_data = {
            'status': BackOfficeAssetStatus.new,
            'pin1': '12343777448484',
            'pin2': '568fg458',
            'puk1': '123456789123456',
            'puk2': '567hdj8',
            'card_number': '1938462hdhd98',
            'phone_number': '481234568911',
            'warehouse': warehouse.pk,
            'user': user.pk,
            'owner': owner.pk,
            'carrier': carrier.pk,
        }
        url = reverse('admin:sim_cards_simcard_add')

        response = self.client.post(url, sim_card_data, follow=True)
        self.assertIn('errors', response.context_data)
        self.assertEqual(6, len(response.context_data['errors']))
示例#5
0
 def test_convert_to_backoffice_asset_uses_default_from_transition(self):
     target_status_id = BackOfficeAssetStatus.from_name(
         "new"  # status name common for dc_asset and bo_asset
     ).id
     dc_asset = DataCenterAssetFactory(
         status=DataCenterAssetStatus.from_name('damaged'))
     transition = Transition.objects.create(
         name='transition',
         model=TransitionModel.get_for_field(dc_asset, 'status'),
         source=0,
         target=target_status_id,
     )
     dc_asset_pk = dc_asset.pk
     target_status_name = DataCenterAssetStatus.from_id(
         target_status_id).name
     DataCenterAsset.convert_to_backoffice_asset(
         instances=[dc_asset],
         region=RegionFactory().id,
         warehouse=WarehouseFactory().id,
         request=None,
         transition_id=transition.pk)
     bo_asset = BackOfficeAsset.objects.get(pk=dc_asset_pk)
     bo_asset_status_name = BackOfficeAssetStatus.from_id(
         bo_asset.status).name
     self.assertEqual(target_status_name, bo_asset_status_name)
示例#6
0
 def setUp(self):
     super().setUp()
     self.service_env = ServiceEnvironmentFactory()
     self.model = BackOfficeAssetModelFactory()
     self.warehouse = WarehouseFactory()
     self.bo_asset = BackOfficeAssetFactory(
         warehouse=self.warehouse,
         model=self.model,
     )
     self.bo_asset.user = self.user1
     self.bo_asset.owner = self.user2
     self.bo_asset.save()
示例#7
0
 def test_convert_to_backoffice_asset(self):
     dc_asset = DataCenterAssetFactory()
     dc_asset_pk = dc_asset.pk
     hostname = dc_asset.hostname
     DataCenterAsset.convert_to_backoffice_asset(
         instances=[dc_asset],
         region=RegionFactory().id,
         warehouse=WarehouseFactory().id,
         request=None
     )
     bo_asset = BackOfficeAsset.objects.get(pk=dc_asset_pk)
     self.assertFalse(
         DataCenterAsset.objects.filter(pk=dc_asset_pk).exists()
     )
     self.assertEqual(bo_asset.hostname, hostname)
示例#8
0
 def test_convert_to_backoffice_asset(self):
     dc_asset = DataCenterAssetFactory()
     transition = Transition.objects.create(
         name='transition',
         model=TransitionModel.get_for_field(dc_asset, 'status'),
         source=0,
         target=0,
     )
     dc_asset_pk = dc_asset.pk
     hostname = dc_asset.hostname
     DataCenterAsset.convert_to_backoffice_asset(
         instances=[dc_asset],
         region=RegionFactory().id,
         warehouse=WarehouseFactory().id,
         request=None,
         transition_id=transition.pk)
     bo_asset = BackOfficeAsset.objects.get(pk=dc_asset_pk)
     self.assertFalse(
         DataCenterAsset.objects.filter(pk=dc_asset_pk).exists())
     self.assertEqual(bo_asset.hostname, hostname)
示例#9
0
    def test_create_correct_data(self):
        carrier = CellularCarrierFactory()

        warehouse = WarehouseFactory()

        user = UserFactory()
        owner = UserFactory()

        features = [SIMCardFeatureFactory() for _ in range(2)]
        expected_features_id = sorted(f.pk for f in features)

        sim_card_data = {
            'status': BackOfficeAssetStatus.new.id,
            'pin1': '1234',
            'pin2': '5678',
            'puk1': '12346',
            'puk2': '56786',
            'card_number': '1938462528298',
            'phone_number': '+4812345678911',
            'warehouse': warehouse.pk,
            'user': user.pk,
            'owner': owner.pk,
            'carrier': carrier.pk,
            'features': expected_features_id
        }

        url = reverse('admin:sim_cards_simcard_add')

        response = self.client.post(url, sim_card_data, follow=True)
        self.assertNotIn('errors', response.context_data)

        sim_card_qs = SIMCard.objects.filter(
            card_number=sim_card_data['card_number'])
        self.assertTrue(sim_card_qs.exists())

        created_sim_card = sim_card_qs.first()
        assigned_features = sorted(f.pk
                                   for f in created_sim_card.features.all())

        self.assertEqual(expected_features_id, assigned_features)
示例#10
0
 def test_convert_to_backoffice_asset_uses_default_from_settings(self):
     target_status_id = BackOfficeAssetStatus.from_id(
         settings.CONVERT_TO_BACKOFFICE_ASSET_DEFAULT_STATUS_ID).id
     dc_asset = DataCenterAssetFactory(
         status=DataCenterAssetStatus.from_name('pre_liquidated'))
     transition = Transition.objects.create(
         name='transition',
         model=TransitionModel.get_for_field(dc_asset, 'status'),
         source=0,
         target=0,
     )
     dc_asset_pk = dc_asset.pk
     target_status_name = DataCenterAssetStatus.from_id(
         target_status_id).name
     DataCenterAsset.convert_to_backoffice_asset(
         instances=[dc_asset],
         region=RegionFactory().id,
         warehouse=WarehouseFactory().id,
         request=None,
         transition_id=transition.pk)
     bo_asset = BackOfficeAsset.objects.get(pk=dc_asset_pk)
     bo_asset_status_name = BackOfficeAssetStatus.from_id(
         bo_asset.status).name
     self.assertEqual(target_status_name, bo_asset_status_name)