django_coverage_plugin icon indicating copy to clipboard operation
django_coverage_plugin copied to clipboard

Widget templates not covered (when they are clearly used).

Open PetrDlouhy opened this issue 2 months ago • 0 comments

I have Widget such as:

class PlanChoiceWidget(RadioSelect):
    option_template_name = "plans/plan_choice_widget.html"

and tests such as:

class PlanChoiceWidgetTests1(TestCase):

    def setUp(self):
        self.factory = RequestFactory()
        self.plan_pricing = baker.make(
            "PlanPricing", plan__name="Foo", price=Decimal("10.00"),
            has_automatic_renewal=True
        )
        self.request = self.factory.get("")
        self.request.user = baker.make("accounts.UserProfile")

    def render_widget(self, plan):
        widget = PlanChoiceWidget()
        choice_data = {
            "name": "plan_choice",
            "value": plan.pk,
            "attrs": {"id": "id_plan_choice"},
        }
        widget.choices = [(plan.pk, plan)]
        widget.request = self.request
        return widget.render(**choice_data)

    def test_plan_choice_widget_render(self):
        rendered_html = self.render_widget(self.plan_pricing)

        self.assertInHTML(
            '<div class="pricing-plans-price__price jsPricingPlansCardPriceWhole">10</div>',
            rendered_html,
        )
        self.assertIn('data-amount="10.00"', rendered_html)
        self.assertIn('data-renewal="True"', rendered_html)

    def test_non_recurring_plan(self):
        self.plan_pricing.has_automatic_renewal = False
        self.plan_pricing.save()

        rendered_html = self.render_widget(self.plan_pricing)

        self.assertIn('<input type="radio" name="plan_choice"', rendered_html)

When I look at the coverage it shows 0% for this template although lines from plans/plan_choice_widget.html template are matched by the tests.

My .coveragerc:

[run]
omit =
   */virtualenvs/*
   */migrations/*
   */site-packages/*
   *.txt
   */settings/dev.py
plugins =
    django_coverage_plugin
branch = True
source = blenderhub
relative_files = True

I am using django-coverage-plugin version 3.1.0, coverage version 7.4.1.

More widget templates from my project are not matched. Is this a known problem or should I gather more information?

PetrDlouhy avatar Apr 29 '24 15:04 PetrDlouhy