def test_get_team_division_when_there_are_two_team_divisions(self):
     team_base = factory.TeamFactory()
     service_environment_1 = factory.ServiceEnvironmentFactory()
     service_environment_2 = factory.ServiceEnvironmentFactory()
     team_percent_1 = self._create_team_division(service_environment_1,
                                                 team_base)
     team_percent_2 = self._create_team_division(service_environment_2,
                                                 team_base)
     response = self.client.get(
         '/scrooge/rest/allocationclient/{0}/{1}/{2}/'.format(
             team_base.id,
             self.date.year,
             self.date.month,
         ))
     self.assertEquals(
         json.loads(response.content)['teamDivision'], {
             "rows": [{
                 'env': service_environment_1.environment.id,
                 'id': team_percent_1.id,
                 'service': service_environment_1.service.id,
                 'value': float(team_percent_1.percent),
             }, {
                 'env': service_environment_2.environment.id,
                 'id': team_percent_2.id,
                 'service': service_environment_2.service.id,
                 'value': float(team_percent_2.percent),
             }],
             "name":
             "Team Division",
             "template":
             "taballocationclientdivision.html",
         })
 def test_save_service_division(self):
     service_environment_base = factory.ServiceEnvironmentFactory()
     service_environment_1 = factory.ServiceEnvironmentFactory()
     response = self.client.post(
         '/scrooge/rest/allocationclient/{0}/{1}/{2}/{3}/{4}/save/'.format(
             service_environment_base.service.id,
             service_environment_base.environment.id, self.date.year,
             self.date.month, 'servicedivision'), {
                 'rows': [{
                     "service": service_environment_1.service.id,
                     "env": service_environment_1.environment.id,
                     "value": 100,
                 }]
             },
         format='json')
     response = self.client.get(
         '/scrooge/rest/allocationclient/{0}/{1}/{2}/{3}/'.format(
             service_environment_base.service.id,
             service_environment_base.environment.id,
             self.date.year,
             self.date.month,
         ))
     self.assertEquals(
         json.loads(response.content)['serviceDivision'], {
             "rows": [{
                 "value": 100.0,
                 "env": service_environment_1.environment.id,
                 "service": service_environment_1.service.id
             }],
             "name":
             "Service Division",
             "template":
             "taballocationclientdivision.html",
         })
 def _init_service_division(self, forecast=False):
     self.service_environment_base = factory.ServiceEnvironmentFactory()
     self.pricing_service = factory.PricingServiceFactory()
     self.pricing_service.services.add(
         self.service_environment_base.service)
     self.pricing_service.save()
     self.service_usage_type = factory.ServiceUsageTypesFactory(
         usage_type=factory.UsageTypeFactory(),
         pricing_service=self.pricing_service,
     )
     pricing_object = self.service_environment_base.pricing_objects.get(
         type_id=models.PRICING_OBJECT_TYPES.DUMMY)
     daily_pricing_object = factory.DailyPricingObjectFactory(
         service_environment=self.service_environment_base,
         date=self.date,
         pricing_object=pricing_object,
     )
     pricing_object.daily_pricing_object = daily_pricing_object
     self.service_environment_1, self.daily_usage1 = (
         self._create_daily_usage(
             self.service_usage_type.usage_type,
             daily_pricing_object,
         ))
     self.service_environment_2, self.daily_usage2 = (
         self._create_daily_usage(
             self.service_usage_type.usage_type,
             daily_pricing_object,
         ))
    def test_save_extra_cost(self):
        service_environment_base = factory.ServiceEnvironmentFactory()
        response = self.client.post(
            '/scrooge/rest/allocationclient/{0}/{1}/{2}/{3}/{4}/save/'.format(
                service_environment_base.service.id,
                service_environment_base.environment.id, self.date.year,
                self.date.month, 'serviceextracost'),
            {'rows': [{
                "remarks": "test remarks",
                "value": 100,
            }]},
            format='json')
        response = self.client.get(
            '/scrooge/rest/allocationclient/{0}/{1}/{2}/{3}/'.format(
                service_environment_base.service.id,
                service_environment_base.environment.id,
                self.date.year,
                self.date.month,
            ))

        extra_cost = models.ExtraCost.objects.all()
        self.assertEquals(extra_cost.count(), 1)
        self.assertEquals(
            json.loads(response.content)['serviceExtraCost'], {
                "rows": [{
                    "remarks": "test remarks",
                    "value": extra_cost[0].cost,
                    "id": extra_cost[0].id,
                }],
                "name":
                "Extra Cost",
                "template":
                "tabextracosts.html",
            })
    def test_get_extra_costs_when_there_are_two_extra_costs(self):
        service_environment_base = factory.ServiceEnvironmentFactory()
        extra_cost1 = self._create_extra_cost(service_environment_base)
        extra_cost2 = self._create_extra_cost(service_environment_base)
        response = self.client.get(
            '/scrooge/rest/allocationclient/{0}/{1}/{2}/{3}/'.format(
                service_environment_base.service.id,
                service_environment_base.environment.id,
                self.date.year,
                self.date.month,
            ))

        self.assertEquals(
            json.loads(response.content)['serviceExtraCost'], {
                "rows": [{
                    "remarks": extra_cost1.remarks,
                    "id": extra_cost1.id,
                    "value": float(extra_cost1.cost),
                }, {
                    "remarks": extra_cost2.remarks,
                    "id": extra_cost2.id,
                    "value": float(extra_cost2.cost),
                }],
                "name":
                "Extra Cost",
                "template":
                "tabextracosts.html",
            })
    def test_save_extra_cost_when_there_is_wrong_env(self):
        extra_cost_type = factory.ExtraCostTypeFactory()
        service_environment = factory.ServiceEnvironmentFactory()

        self.assertRaises(
            ServiceEnvironmentDoesNotExistError,
            self.client.post,
            '/scrooge/rest/allocationadmin/{0}/{1}/extracosts/save'.format(
                self.date.year,
                self.date.month,
            ),
            {
                'rows': [{
                    'extra_cost_type': {
                        'id': extra_cost_type.id,
                        'name': extra_cost_type.name
                    },
                    'extra_costs': [{
                        'cost': 0.0,
                        'forecast_cost': 0.0,
                        'service': service_environment.service_id,
                        'env': 111,
                    }]
                }]
            },
            format='json'
        )
    def test_save_extra_cost_when_there_is_bad_env(self):
        extra_cost_type = factory.ExtraCostTypeFactory()
        service_environment = factory.ServiceEnvironmentFactory()

        self.client.post(
            '/scrooge/rest/allocationadmin/{0}/{1}/extracosts/save'.format(
                self.date.year,
                self.date.month,
            ),
            {
                'rows': [{
                    'extra_cost_type': {
                        'id': extra_cost_type.id,
                        'name': extra_cost_type.name
                    },
                    'extra_costs': [{
                        'cost': 0.0,
                        'forecast_cost': 0.0,
                        'service': service_environment.service_id,
                        'env': False,
                    }]
                }]
            },
            format='json'
        )
        self.assertEquals(models.ExtraCost.objects.count(), 0)
 def _create_daily_usage(self, usage_type, daily_pricing_object):
     service_environment = factory.ServiceEnvironmentFactory()
     pricing_service = factory.PricingServiceFactory()
     pricing_service.services.add(service_environment.service)
     return service_environment, factory.DailyUsageFactory(
         date=self.date,
         service_environment=service_environment,
         daily_pricing_object=daily_pricing_object,
         type=usage_type,
     )
 def test_get_extra_cost_when_there_is_one_additional_type_and_cost(self):
     cost = 100.0
     forecast_cost = 200.0
     first_day, last_day, days_in_month = get_dates(
         self.date.year,
         self.date.month,
     )
     extra_cost_type = factory.ExtraCostTypeFactory()
     service_environment = factory.ServiceEnvironmentFactory()
     extra_cost = factory.ExtraCostFactory(
         extra_cost_type=extra_cost_type,
         start=first_day,
         end=last_day,
         cost=cost,
         forecast_cost=forecast_cost,
         service_environment=service_environment,
     )
     response = self.client.get(
         '/scrooge/rest/allocationadmin/{0}/{1}/'.format(
             self.date.year,
             self.date.month,
         )
     )
     self.assertEquals(
         json.loads(response.content)['extracosts'],
         {
             'name': 'Extra Costs',
             'rows': [{
                 'extra_cost_type': {
                     'id': 1,
                     'name': 'Other'
                 },
                 'extra_costs': [{}]
             }, {
                 'extra_cost_type': {
                     'id': 2,
                     'name': 'Support'
                 },
                 'extra_costs': [{}]
             }, {
                 'extra_cost_type': {
                     'id': extra_cost_type.id,
                     'name': extra_cost_type.name
                 },
                 'extra_costs': [{
                     'id': extra_cost.id,
                     'cost': extra_cost.cost,
                     'forecast_cost': extra_cost.forecast_cost,
                     'service': extra_cost.service_environment.service_id,
                     'env': extra_cost.service_environment.environment_id
                 }]
             }],
             'template': 'tabextracostsadmin.html'
         }
     )
 def test_save_service_division_with_different_service_usage_date(self):
     service_environment_1 = factory.ServiceEnvironmentFactory()
     self._init_service_division()
     self.service_usage_type.end = self.date - relativedelta(months=1)
     self.service_usage_type.save()
     usage_types_before_request = models.UsageType.objects.count()
     service_usage_types_before_request = (
         models.ServiceUsageTypes.objects.count())
     response = self.client.post(
         '/scrooge/rest/allocationclient/{0}/{1}/{2}/{3}/{4}/save/'.format(
             self.service_environment_base.service.id,
             self.service_environment_base.environment.id, self.date.year,
             self.date.month, 'servicedivision'), {
                 'rows': [{
                     "service": service_environment_1.service.id,
                     "env": service_environment_1.environment.id,
                     "value": 100,
                 }]
             },
         format='json')
     response = self.client.get(
         '/scrooge/rest/allocationclient/{0}/{1}/{2}/{3}/'.format(
             self.service_environment_base.service.id,
             self.service_environment_base.environment.id,
             self.date.year,
             self.date.month,
         ))
     self.assertEquals(
         json.loads(response.content)['serviceDivision'], {
             "rows": [{
                 "value": 100.0,
                 "env": service_environment_1.environment.id,
                 "service": service_environment_1.service.id
             }],
             "name":
             "Service Division",
             "template":
             "taballocationclientdivision.html",
         })
     # check if this request created new usage type and created
     # new service usage type with valid dates
     self.assertEqual(models.UsageType.objects.count(),
                      usage_types_before_request + 1)
     self.assertEqual(models.ServiceUsageTypes.objects.count(),
                      service_usage_types_before_request + 1)
     self.assertEqual(
         set(
             self.pricing_service.serviceusagetypes_set.values_list(
                 'start', 'end')),
         set([
             (datetime.date.min, self.date - relativedelta(months=1)),
             (self.date - relativedelta(months=1) + timedelta(days=1),
              datetime.date.max),
         ]))
 def test_get_extra_costs_when_there_is_no_extra_costs(self):
     service_environment_base = factory.ServiceEnvironmentFactory()
     response = self.client.get(
         '/scrooge/rest/allocationclient/{0}/{1}/{2}/{3}/'.format(
             service_environment_base.service.id,
             service_environment_base.environment.id,
             self.date.year,
             self.date.month,
         ))
     self.assertEquals(
         json.loads(response.content)['serviceExtraCost'], {
             "rows": [],
             "name": "Extra Cost",
             "template": "tabextracosts.html",
         })
Esempio n. 12
0
    def setUp(self):
        User.objects.create_superuser('test', '*****@*****.**', 'test')
        self.client = APIClient()
        self.client.login(username='******', password='******')

        self.month = 11
        self.year = 2014
        self.value = D(100)

        self.service = factory.ServiceFactory()
        self.environment = factory.EnvironmentFactory()
        self.service_environment = factory.ServiceEnvironmentFactory(
            service=self.service,
            environment=self.environment,
        )

        self.base_usage = factory.BaseUsageFactory()
 def test_get_service_division_when_there_is_no_usages(self):
     service_environment_base = factory.ServiceEnvironmentFactory()
     usage_types_before_request = models.UsageType.objects.count()
     response = self.client.get(
         '/scrooge/rest/allocationclient/{0}/{1}/{2}/{3}/'.format(
             service_environment_base.service.id,
             service_environment_base.environment.id,
             self.date.year,
             self.date.month,
         ))
     self.assertEquals(
         json.loads(response.content)['serviceDivision'], {
             "rows": [],
             "name": "Service Division",
             "template": "taballocationclientdivision.html",
         })
     # check if get request does not create new usage type
     self.assertEqual(models.UsageType.objects.count(),
                      usage_types_before_request)
Esempio n. 14
0
 def test_update_extra_cost_when_everything_is_ok(self):
     cost = 100.0
     forecast_cost = 200.0
     first_day, last_day, days_in_month = get_dates(
         self.date.year,
         self.date.month,
     )
     extra_cost_type = factory.ExtraCostTypeFactory()
     service_environment = factory.ServiceEnvironmentFactory()
     extra_cost = models.ExtraCost.objects.create(
         cost=50.0,
         forecast_cost=50.0,
         service_environment=service_environment,
         extra_cost_type=extra_cost_type,
         start=first_day,
         end=last_day,
     )
     self.client.post(
         '/scrooge/rest/allocationadmin/{0}/{1}/extracosts/save'.format(
             self.date.year,
             self.date.month,
         ),
         {
             'rows': [{
                 'extra_cost_type': {
                     'id': extra_cost_type.id,
                     'name': extra_cost_type.name
                 },
                 'extra_costs': [{
                     'id': extra_cost.id,
                     'cost': cost,
                     'forecast_cost': forecast_cost,
                     'service': service_environment.service_id,
                     'env': service_environment.environment_id,
                 }]
             }]
         },
         format='json'
     )
     extra_cost = models.ExtraCost.objects.all()[0]
     self.assertEquals(extra_cost.cost, cost)
     self.assertEquals(extra_cost.forecast_cost, forecast_cost)
 def test_save_team_division(self):
     team_base = factory.TeamFactory()
     service_environment = factory.ServiceEnvironmentFactory()
     response = self.client.post(
         '/scrooge/rest/allocationclient/{0}/{1}/{2}/{3}/save/'.format(
             team_base.id, self.date.year, self.date.month,
             'teamdivision'), {
                 'rows': [{
                     "service": service_environment.service.id,
                     "env": service_environment.environment.id,
                     "value": 100,
                 }]
             },
         format='json')
     response = self.client.get(
         '/scrooge/rest/allocationclient/{0}/{1}/{2}/'.format(
             team_base.id,
             self.date.year,
             self.date.month,
         ))
     team_division = models.TeamServiceEnvironmentPercent.objects.all()
     self.assertEquals(team_division.count(), 1)
     self.assertEquals(
         json.loads(response.content)['teamDivision'], {
             "rows":
             [{
                 "value": team_division[0].percent,
                 "id": team_division[0].id,
                 "service":
                 (team_division[0].service_environment.service.id),
                 "env":
                 (team_division[0].service_environment.environment.id)
             }],
             "name":
             "Team Division",
             "template":
             "taballocationclientdivision.html",
         })