Exemple #1
0
    def generate_back_office(self):
        self.stdout.write('Generating Back Office assets')
        back_office_status = BackOfficeAssetStatus()
        status_count = len(back_office_status)
        per_page = self.object_limit / status_count
        parent_category = CategoryFactory(name='BACK OFFICE',
                                          imei_required=False)
        for i in range(3):
            ProfitCenterFactory()

        for status_id, name in back_office_status:
            for i in range(int(per_page)):
                BackOfficeAssetFactory(
                    status=status_id,
                    user=self.get_user(),
                    owner=self.get_user(),
                    model=BackOfficeAssetModelFactory(category=CategoryFactory(
                        parent=parent_category)))
                BackOfficeAssetFactory(status=status_id,
                                       user=self.get_user(),
                                       owner=self.get_user(),
                                       model=BackOfficeAssetModelFactory(
                                           category=CategoryFactory(
                                               name='Mobile Phone',
                                               imei_required=True,
                                               parent=parent_category),
                                           name='Phone'),
                                       imei=get_imei(15))
Exemple #2
0
class CategoryAPITests(RalphAPITestCase):
    def setUp(self):
        super().setUp()
        self.category = CategoryFactory(name='rack-servers')

    def test_get_category_list(self):
        url = reverse('category-list')
        response = self.client.get(url, format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data['count'], 1)
        self.assertEqual(
            response.data['results'][0]['name'], self.category.name
        )

    def test_get_category_details(self):
        url = reverse('category-detail', args=(self.category.id,))
        response = self.client.get(url, format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data['name'], self.category.name)

    def test_create_category(self):
        url = reverse('category-list')
        data = {
            'name': 'cell-phones',
            'code': 'cp'
        }
        response = self.client.post(url, data, format='json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertEqual(response.data['name'], 'cell-phones')
        self.assertEqual(Category.objects.count(), 2)
        category = Category.objects.get(pk=response.data['id'])
        self.assertEqual(category.name, 'cell-phones')
        self.assertEqual(category.code, 'cp')
        self.assertIsNone(category.parent)

    def test_create_category_with_parent(self):
        url = reverse('category-list')
        data = {
            'name': 'cell-phones',
            'parent': self.category.id,
        }
        response = self.client.post(url, data, format='json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertEqual(response.data['name'], 'cell-phones')
        self.assertEqual(Category.objects.count(), 2)
        category = Category.objects.get(pk=response.data['id'])
        self.assertEqual(category.name, 'cell-phones')
        self.assertEqual(category.parent, self.category)

    def test_patch_category(self):
        url = reverse('category-detail', args=(self.category.id,))
        data = {
            'name': 'cell-phones'
        }
        response = self.client.patch(url, data, format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.category.refresh_from_db()
        self.assertEqual(self.category.name, 'cell-phones')
Exemple #3
0
 def setUpClass(cls):
     super().setUpClass()
     cls.region_pl = RegionFactory(name='PL', country=Country.pl)
     cls.region_us = RegionFactory(name='US', country=Country.us)
     cls.category = CategoryFactory(code='PC')
     cls.category_without_code = CategoryFactory()
     cls.model = BackOfficeAssetModelFactory(category=cls.category)
     cls.model_without_code = BackOfficeAssetModelFactory(
         category=cls.category_without_code)
Exemple #4
0
 def setUp(self):
     super().setUp()
     AssetLastHostname.objects.create(prefix='POLPC', counter=1000)
     self.bo_asset = BackOfficeAssetFactory(
         model=self.model,
         hostname='abc',
         region=self.region_pl,
     )
     self.bo_asset_2 = BackOfficeAssetFactory(
         model=self.model,
         hostname='abc2',
         region=self.region_pl,
         status=BackOfficeAssetStatus.liquidated.id,
         invoice_date=None
     )
     self.bo_asset_3 = BackOfficeAssetFactory(
         model=self.model,
         hostname='abc3',
         region=self.region_pl,
         status=BackOfficeAssetStatus.liquidated.id,
         invoice_date=datetime(2016, 1, 11).date(),
         depreciation_rate=50
     )
     self.bo_asset_4 = BackOfficeAssetFactory(
         model=self.model,
         hostname='abc3',
         region=self.region_pl,
         status=BackOfficeAssetStatus.liquidated.id,
         invoice_date=datetime(2016, 1, 11).date(),
         depreciation_end_date=datetime(2015, 1, 11).date(),
         depreciation_rate=50
     )
     self.category_parent = CategoryFactory(
         code='Mob1', default_depreciation_rate=30
     )
     self.category_2 = CategoryFactory(
         code='Mob2', default_depreciation_rate=25
     )
     self.category_3 = CategoryFactory(
         code='Mob3', parent=self.category_parent,
         default_depreciation_rate=0
     )
Exemple #5
0
 def test_generate_next_hostname_out_of_range(self):
     category = CategoryFactory(code='PC')
     model = BackOfficeAssetModelFactory(category=category)
     asset = BackOfficeAssetFactory(model=model,
                                    region=self.region_pl,
                                    hostname='')
     AssetLastHostname.objects.create(prefix='POLPC', counter=99999)
     template_vars = {
         'code': asset.model.category.code,
         'country_code': asset.country_code,
     }
     asset.generate_hostname(template_vars=template_vars)
     self.assertEqual(asset.hostname, 'POLPC100000')
Exemple #6
0
 def test_generate_first_hostname(self):
     """Scenario:
      - none of assets has hostname
      - after generate first of asset have XXXYY00001 in hostname field
     """
     category = CategoryFactory(code='PC')
     model = BackOfficeAssetModelFactory(category=category)
     asset = BackOfficeAssetFactory(model=model, hostname='')
     template_vars = {
         'code': asset.model.category.code,
         'country_code': asset.country_code,
     }
     asset.generate_hostname(template_vars=template_vars)
     self.assertEqual(asset.hostname, 'POLPC00001')
Exemple #7
0
 def test_generate_next_hostname(self):
     category = CategoryFactory(code='PC')
     model = BackOfficeAssetModelFactory(category=category)
     asset = BackOfficeAssetFactory(model=model,
                                    region=self.region_pl,
                                    hostname='')
     BackOfficeAssetFactory(region=self.region_pl, hostname='POLSW00003')
     AssetLastHostname.increment_hostname(prefix='POLPC')
     AssetLastHostname.increment_hostname(prefix='POLPC')
     template_vars = {
         'code': asset.model.category.code,
         'country_code': asset.country_code,
     }
     asset.generate_hostname(template_vars=template_vars)
     self.assertEqual(asset.hostname, 'POLPC00003')
Exemple #8
0
 def setUp(self):
     self.model = DataCenterAssetModelFactory(
         category=CategoryFactory(name="Keyboard"),
         type=ObjectModelType.data_center,
         name='Keyboard1',
         manufacturer=ManufacturerFactory(name='M1'))
     self.dc_1 = DataCenterAssetFactory(
         force_depreciation=False,
         model=self.model,
     )
     self.dc_1.tags.add('tag1', 'tag2')
     self.licence = LicenceFactory(
         number_bought=1,
         niw='N/A',
         software__name='Project Info',
         software__asset_type=ObjectModelType.data_center,
         region__name='US',
     )
     BaseObjectLicence.objects.create(licence=self.licence,
                                      base_object=self.dc_1.baseobject_ptr)
Exemple #9
0
    def _create_models(self):
        self.keyboard_model = DataCenterAssetModelFactory(
            category=CategoryFactory(name="Keyboard"),
            type=ObjectModelType.data_center,
            name='Keyboard1',
        )
        self.mouse_model = DataCenterAssetModelFactory(
            category=CategoryFactory(name="Mouse"),
            type=ObjectModelType.data_center,
            name='Mouse1',
        )
        self.pendrive_model = DataCenterAssetModelFactory(
            category=CategoryFactory(name="Pendrive"),
            type=ObjectModelType.data_center,
            name='Pendrive1',
        )

        self.model_monitor = DataCenterAssetModelFactory(
            category=CategoryFactory(name="Monitor"),
            type=ObjectModelType.data_center,
            name='Monitor1',
        )
        self.navigation_model = DataCenterAssetModelFactory(
            category=CategoryFactory(name="Navigation"),
            type=ObjectModelType.data_center,
            name='Navigation1',
        )
        self.scanner_model = DataCenterAssetModelFactory(
            category=CategoryFactory(name="Scanner"),
            type=ObjectModelType.data_center,
            name='Scanner1',
        )
        self.shredder_model = DataCenterAssetModelFactory(
            category=CategoryFactory(name="Shredder"),
            type=ObjectModelType.data_center,
            name='Shredder1',
        )
Exemple #10
0
 def setUp(self):
     super().setUp()
     self.category = CategoryFactory(name='rack-servers')
Exemple #11
0
 def test_can_generate_hostname_for_model_with_hostname(self):
     category = CategoryFactory(code='PC')
     model = BackOfficeAssetModelFactory(category=category)
     asset = BackOfficeAssetFactory(model=model, region=self.region_pl)
     self._check_hostname_is_generated(asset)
Exemple #12
0
class TestBackOfficeAsset(RalphTestCase):
    @classmethod
    def setUpClass(cls):
        super().setUpClass()
        cls.region_pl = RegionFactory(name='PL', country=Country.pl)
        cls.region_us = RegionFactory(name='US', country=Country.us)
        cls.category = CategoryFactory(code='PC')
        cls.category_without_code = CategoryFactory()
        cls.model = BackOfficeAssetModelFactory(category=cls.category)
        cls.model_without_code = BackOfficeAssetModelFactory(
            category=cls.category_without_code)

    def setUp(self):
        super().setUp()
        AssetLastHostname.objects.create(prefix='POLPC', counter=1000)
        self.bo_asset = BackOfficeAssetFactory(
            model=self.model,
            hostname='abc',
            region=self.region_pl,
        )
        self.bo_asset_2 = BackOfficeAssetFactory(
            model=self.model,
            hostname='abc2',
            region=self.region_pl,
            status=BackOfficeAssetStatus.liquidated.id,
            invoice_date=None)
        self.bo_asset_3 = BackOfficeAssetFactory(
            model=self.model,
            hostname='abc3',
            region=self.region_pl,
            status=BackOfficeAssetStatus.liquidated.id,
            invoice_date=datetime(2016, 1, 11).date(),
            depreciation_rate=50)
        self.bo_asset_4 = BackOfficeAssetFactory(
            model=self.model,
            hostname='abc3',
            region=self.region_pl,
            status=BackOfficeAssetStatus.liquidated.id,
            invoice_date=datetime(2016, 1, 11).date(),
            depreciation_end_date=datetime(2015, 1, 11).date(),
            depreciation_rate=50)
        self.category_parent = CategoryFactory(code='Mob1',
                                               default_depreciation_rate=30)
        self.category_2 = CategoryFactory(code='Mob2',
                                          default_depreciation_rate=25)
        self.category_3 = CategoryFactory(code='Mob3',
                                          parent=self.category_parent,
                                          default_depreciation_rate=0)

    def test_try_assign_hostname(self):
        self.bo_asset._try_assign_hostname(commit=True)
        self.assertEqual(self.bo_asset.hostname, 'POLPC01001')

    def test_try_assign_hostname_no_change(self):
        self.bo_asset.hostname = 'POLPC01001'
        self.bo_asset.save()
        self.bo_asset._try_assign_hostname(commit=True)
        self.assertEqual(self.bo_asset.hostname, 'POLPC01001')

    def test_try_assign_hostname_no_hostname(self):
        self.bo_asset.hostname = ''
        self.bo_asset.save()
        self.bo_asset._try_assign_hostname(commit=True)
        self.assertEqual(self.bo_asset.hostname, 'POLPC01001')

    def test_try_assign_hostname_forced(self):
        self.bo_asset.hostname = 'POLPC001010'
        self.bo_asset.save()
        self.bo_asset._try_assign_hostname(commit=True, force=True)
        self.assertEqual(self.bo_asset.hostname, 'POLPC01001')

    def test_try_assign_hostname_with_country(self):
        self.bo_asset._try_assign_hostname(country='US', commit=True)
        self.assertEqual(self.bo_asset.hostname, 'USPC00001')

    def test_try_assign_hostname_category_without_code(self):
        bo_asset_2 = BackOfficeAssetFactory(model=self.model_without_code,
                                            hostname='abcd')
        bo_asset_2._try_assign_hostname(commit=True)
        self.assertEqual(bo_asset_2.hostname, 'abcd')

    def test_get_autocomplete_queryset(self):
        queryset = BackOfficeAsset.get_autocomplete_queryset()
        self.assertEquals(1, queryset.count())

    def test_buyout_date(self):
        self.assertEqual(self.bo_asset_3.buyout_date,
                         datetime(2018, 2, 11).date())

        self.assertEqual(self.bo_asset_2.buyout_date, None)

    def test_butout_date_with_depreciation_end_date(self):
        self.assertEqual(self.bo_asset_4.buyout_date,
                         datetime(2015, 1, 11).date())

    def test_get_depreciation_rate(self):
        self.assertEqual(self.category_2.get_default_depreciation_rate(), 25)
        self.assertEqual(self.category_3.get_default_depreciation_rate(), 30)