def test_fixed_usage_is_aggregated_for_project_and_customer(self): # Arrange models.ResourcePlanPeriod.objects.create( resource=self.resource, plan=self.plan, start=parse_date('2019-01-10'), end=parse_date('2019-01-20'), ) # Act tasks.calculate_usage_for_current_month() # Assert project_usage = (models.CategoryComponentUsage.objects.filter( scope=self.project, component=self.category_component, date=self.date, ).get().fixed_usage) customer_usage = (models.CategoryComponentUsage.objects.filter( scope=self.customer, component=self.category_component, date=self.date).get().fixed_usage) self.assertEqual(project_usage, self.plan_component.amount) self.assertEqual(customer_usage, self.plan_component.amount)
def test_reported_usage_is_aggregated_for_project_and_customer(self): # Arrange models.ComponentUsage.objects.create(resource=self.resource, component=self.offering_component, date=parse_date('2019-01-10'), usage=100) models.ComponentUsage.objects.create(resource=self.resource, component=self.offering_component, date=parse_date('2019-01-20'), usage=200) # Act tasks.calculate_usage_for_current_month() # Assert project_usage = models.CategoryComponentUsage.objects.filter( scope=self.project, component=self.category_component, date=self.date).get().reported_usage customer_usage = models.CategoryComponentUsage.objects.filter( scope=self.customer, component=self.category_component, date=self.date).get().reported_usage self.assertEqual(project_usage, 300) self.assertEqual(customer_usage, 300)
def test_reported_usage_is_aggregated_for_project_and_customer(self): # Arrange plan_period = models.ResourcePlanPeriod.objects.create( start=parse_datetime('2019-01-01'), resource=self.resource, plan=self.plan, ) models.ComponentUsage.objects.create( resource=self.resource, component=self.offering_component, date=parse_date('2019-01-10'), billing_period=parse_date('2019-01-01'), plan_period=plan_period, usage=100, ) self.new_resource = factories.ResourceFactory(project=self.project, offering=self.offering, plan=self.plan) new_plan_period = models.ResourcePlanPeriod.objects.create( start=parse_date('2019-01-01'), resource=self.new_resource, plan=self.plan, ) models.ComponentUsage.objects.create( resource=self.resource, component=self.offering_component, date=parse_date('2019-01-20'), billing_period=parse_date('2019-01-01'), plan_period=new_plan_period, usage=200, ) # Act tasks.calculate_usage_for_current_month() # Assert project_usage = (models.CategoryComponentUsage.objects.filter( scope=self.project, component=self.category_component, date=self.date).get().reported_usage) customer_usage = (models.CategoryComponentUsage.objects.filter( scope=self.customer, component=self.category_component, date=self.date).get().reported_usage) self.assertEqual(project_usage, 300) self.assertEqual(customer_usage, 300)
def setUp(self): self.date = parse_date('2019-01-01') fixture = structure_fixtures.ProjectFixture() self.customer = fixture.customer self.project = fixture.project self.category = factories.CategoryFactory() self.category_component = factories.CategoryComponentFactory( category=self.category ) self.offering = factories.OfferingFactory(category=self.category) self.offering_component = factories.OfferingComponentFactory( offering=self.offering, parent=self.category_component ) self.plan = factories.PlanFactory(offering=self.offering) self.plan_component = factories.PlanComponentFactory( plan=self.plan, component=self.offering_component, amount=10 ) self.resource = factories.ResourceFactory( project=self.project, offering=self.offering, plan=self.plan )
def setUp(self): super(StatsTest, self).setUp() self.date = parse_date('2019-01-01') self.plan = factories.PlanFactory(offering=self.offering) self.plan_component = factories.PlanComponentFactory( plan=self.plan, component=self.offering_component, amount=10) self.resource = factories.ResourceFactory(project=self.project, offering=self.offering, plan=self.plan)
def setUp(self): self.fixture = structure_fixtures.ProjectFixture() self.project = self.fixture.project models.DailyQuotaHistory.objects.create(scope=self.project, name='nc_volume_count', date=parse_date('2018-10-01'), usage=10) models.DailyQuotaHistory.objects.create(scope=self.project, name='nc_volume_count', date=parse_date('2018-10-02'), usage=11) models.DailyQuotaHistory.objects.create(scope=self.project, name='nc_volume_count', date=parse_date('2018-10-03'), usage=12) models.DailyQuotaHistory.objects.create(scope=self.project, name='nc_snapshot_count', date=parse_date('2018-10-01'), usage=5) models.DailyQuotaHistory.objects.create(scope=self.project, name='nc_snapshot_count', date=parse_date('2018-10-02'), usage=6) models.DailyQuotaHistory.objects.create(scope=self.project, name='nc_snapshot_count', date=parse_date('2018-10-03'), usage=7)
def setUp(self): self.fixture = structure_fixtures.ProjectFixture() self.project = self.fixture.project models.DailyQuotaHistory.objects.create( scope=self.project, name='nc_user_count', date=parse_date('2018-10-01'), usage=10, ) models.DailyQuotaHistory.objects.create( scope=self.project, name='nc_user_count', date=parse_date('2018-10-02'), usage=11, ) models.DailyQuotaHistory.objects.create( scope=self.project, name='nc_user_count', date=parse_date('2018-10-03'), usage=12, )
def test_user_can_set_end_date(self, user): self.resource.state = models.Resource.States.OK self.resource.save() with freeze_time('2020-05-01'): response = self.make_request( getattr(self.fixture, user), {'end_date': '2020-05-08'} ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.resource.refresh_from_db() self.assertEqual(self.resource.end_date, parse_date('2020-05-08')) self.assertTrue( logging_models.Event.objects.filter( message__contains='End date of marketplace resource %s has been updated by staff.' % self.resource.name ).exists() )
def test_resource_is_not_used_for_last_3_months_and_end_date_is_7_days_in_future( self, ): self.resource.state = models.Resource.States.OK self.resource.save() with freeze_time('2020-05-01'): response = self.make_request( self.fixture.offering_owner, {'end_date': '2020-05-08'} ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.resource.refresh_from_db() self.assertEqual(self.resource.end_date, parse_date('2020-05-08')) self.assertTrue( logging_models.Event.objects.filter( message__contains='End date of marketplace resource %s has been updated by provider.' % self.resource.name ).exists() )
def test_quotas_usage_history_is_imported_correctly(self): with freeze_time('2018-10-06'): utils.import_daily_usage() actual = list( models.DailyQuotaHistory.objects.filter( scope=self.project, name='nc_volume_count', ).order_by('date').values('date', 'usage')) expected = [ { 'date': parse_date('2018-10-01'), 'usage': 0, }, { 'date': parse_date('2018-10-02'), 'usage': 0, }, { 'date': parse_date('2018-10-03'), 'usage': 10, }, { 'date': parse_date('2018-10-04'), 'usage': 10, }, { 'date': parse_date('2018-10-05'), 'usage': 30, }, { 'date': parse_date('2018-10-06'), 'usage': 30, }, ] self.assertEqual(expected, actual)