Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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
        )
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
    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,
        )
Ejemplo n.º 8
0
    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()
            )
Ejemplo n.º 9
0
    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()
            )
Ejemplo n.º 10
0
    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)