mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-06 19:23:23 +02:00
Attempt of adding tests
This commit is contained in:
parent
8b8c176b0c
commit
298e81d269
4 changed files with 91 additions and 4 deletions
|
@ -470,4 +470,4 @@ class User(AbstractUser):
|
||||||
if self.is_org_user(request) and self.has_view_all_domain_requests_portfolio_permission(portfolio):
|
if self.is_org_user(request) and self.has_view_all_domain_requests_portfolio_permission(portfolio):
|
||||||
return DomainRequest.objects.filter(portfolio=portfolio).values_list("id", flat=True)
|
return DomainRequest.objects.filter(portfolio=portfolio).values_list("id", flat=True)
|
||||||
else:
|
else:
|
||||||
return UserDomainRole.objects.filter(user=self).values_list("domain_request_id", flat=True)
|
return UserDomainRole.objects.filter(user=self).values_list("id", flat=True)
|
||||||
|
|
|
@ -6,7 +6,7 @@ from registrar.models import (
|
||||||
Domain,
|
Domain,
|
||||||
UserDomainRole,
|
UserDomainRole,
|
||||||
)
|
)
|
||||||
from registrar.models import Portfolio
|
from registrar.models import Portfolio, DraftDomain
|
||||||
from registrar.models.user_portfolio_permission import UserPortfolioPermission
|
from registrar.models.user_portfolio_permission import UserPortfolioPermission
|
||||||
from registrar.models.utility.portfolio_helper import UserPortfolioRoleChoices
|
from registrar.models.utility.portfolio_helper import UserPortfolioRoleChoices
|
||||||
from registrar.utility.csv_export import (
|
from registrar.utility.csv_export import (
|
||||||
|
@ -14,6 +14,7 @@ from registrar.utility.csv_export import (
|
||||||
DomainDataType,
|
DomainDataType,
|
||||||
DomainDataFederal,
|
DomainDataFederal,
|
||||||
DomainDataTypeUser,
|
DomainDataTypeUser,
|
||||||
|
DomainRequestsDataType,
|
||||||
DomainGrowth,
|
DomainGrowth,
|
||||||
DomainManaged,
|
DomainManaged,
|
||||||
DomainUnmanaged,
|
DomainUnmanaged,
|
||||||
|
@ -394,6 +395,84 @@ class ExportDataTest(MockDbForIndividualTests, MockEppLib):
|
||||||
|
|
||||||
return csv_content
|
return csv_content
|
||||||
|
|
||||||
|
@less_console_noise_decorator
|
||||||
|
@override_flag("organization_feature", active=True)
|
||||||
|
def test_domain_request_data_type_user_with_portfolio(self):
|
||||||
|
"""Tests DomainRequestsDataType export with portfolio permissions"""
|
||||||
|
|
||||||
|
# Create a portfolio and assign it to the user
|
||||||
|
portfolio = Portfolio.objects.create(creator=self.user, organization_name="Testy Test Portfolio")
|
||||||
|
portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(portfolio=portfolio, user=self.user)
|
||||||
|
|
||||||
|
# Create DraftDomain objects
|
||||||
|
dd_1 = DraftDomain.objects.create(name="example1.com")
|
||||||
|
dd_2 = DraftDomain.objects.create(name="example2.com")
|
||||||
|
dd_3 = DraftDomain.objects.create(name="example3.com")
|
||||||
|
|
||||||
|
# Create some domain requests
|
||||||
|
dr_1 = DomainRequest.objects.create(creator=self.user, requested_domain=dd_1, portfolio=portfolio)
|
||||||
|
dr_2 = DomainRequest.objects.create(creator=self.user, requested_domain=dd_2)
|
||||||
|
dr_3 = DomainRequest.objects.create(creator=self.user, requested_domain=dd_3, portfolio=portfolio)
|
||||||
|
|
||||||
|
# Set up user permissions
|
||||||
|
portfolio_permission.roles = [UserPortfolioRoleChoices.ORGANIZATION_ADMIN]
|
||||||
|
portfolio_permission.save()
|
||||||
|
portfolio_permission.refresh_from_db()
|
||||||
|
|
||||||
|
# Make a GET request using self.client to get a request object
|
||||||
|
request = get_wsgi_request_object(client=self.client, user=self.user)
|
||||||
|
|
||||||
|
# Get the CSV content
|
||||||
|
csv_content = self._run_domain_request_data_type_user_export(request)
|
||||||
|
print("CSV CONTENT FIRST TIME IS ", csv_content)
|
||||||
|
|
||||||
|
# We expect only domain requests associated with the user's portfolio
|
||||||
|
self.assertIn(dd_1.name, csv_content)
|
||||||
|
self.assertIn(dd_3.name, csv_content)
|
||||||
|
self.assertNotIn(dd_2.name, csv_content)
|
||||||
|
|
||||||
|
# Test the output for readonly admin
|
||||||
|
portfolio_permission.roles = [UserPortfolioRoleChoices.ORGANIZATION_ADMIN_READ_ONLY]
|
||||||
|
portfolio_permission.save()
|
||||||
|
portfolio_permission.refresh_from_db()
|
||||||
|
|
||||||
|
csv_content = self._run_domain_request_data_type_user_export(request)
|
||||||
|
print("CSV CONTENT SECOND TIME IS ", csv_content)
|
||||||
|
|
||||||
|
self.assertIn(dd_1.name, csv_content)
|
||||||
|
self.assertIn(dd_3.name, csv_content)
|
||||||
|
self.assertNotIn(dd_2.name, csv_content)
|
||||||
|
|
||||||
|
portfolio_permission.roles = [UserPortfolioRoleChoices.ORGANIZATION_MEMBER]
|
||||||
|
portfolio_permission.save()
|
||||||
|
portfolio_permission.refresh_from_db()
|
||||||
|
|
||||||
|
# Get the CSV content -- Q: no portfolio but dd2 is not displaying correctly
|
||||||
|
csv_content = self._run_domain_request_data_type_user_export(request)
|
||||||
|
print("CSV CONTENT THIRD TIME IS ", csv_content)
|
||||||
|
self.assertNotIn(dd_1.name, csv_content)
|
||||||
|
self.assertNotIn(dd_3.name, csv_content)
|
||||||
|
self.assertIn(dd_2.name, csv_content)
|
||||||
|
|
||||||
|
# Clean up the created objects
|
||||||
|
dr_1.delete()
|
||||||
|
dr_2.delete()
|
||||||
|
dr_3.delete()
|
||||||
|
portfolio.delete()
|
||||||
|
|
||||||
|
def _run_domain_request_data_type_user_export(self, request):
|
||||||
|
"""Helper function to run the exporting_dr_data_to_csv function on DomainRequestsDataType"""
|
||||||
|
|
||||||
|
csv_file = StringIO()
|
||||||
|
|
||||||
|
DomainRequestsDataType.exporting_dr_data_to_csv(csv_file, request=request)
|
||||||
|
|
||||||
|
csv_file.seek(0)
|
||||||
|
|
||||||
|
csv_content = csv_file.read()
|
||||||
|
|
||||||
|
return csv_content
|
||||||
|
|
||||||
@less_console_noise_decorator
|
@less_console_noise_decorator
|
||||||
def test_domain_data_full(self):
|
def test_domain_data_full(self):
|
||||||
"""Shows security contacts, filtered by state"""
|
"""Shows security contacts, filtered by state"""
|
||||||
|
|
|
@ -605,7 +605,7 @@ class DomainRequestsDataType:
|
||||||
return attribute if attribute is not None else default
|
return attribute if attribute is not None else default
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def export_data_to_csv(cls, response, request=None):
|
def exporting_dr_data_to_csv(cls, response, request=None):
|
||||||
import csv
|
import csv
|
||||||
|
|
||||||
writer = csv.writer(response)
|
writer = csv.writer(response)
|
||||||
|
@ -645,6 +645,12 @@ class DomainRequestsDataType:
|
||||||
)
|
)
|
||||||
|
|
||||||
queryset = cls.get_queryset(request)
|
queryset = cls.get_queryset(request)
|
||||||
|
# TO REMOVE
|
||||||
|
print("Queryset IDs:", list(queryset.values_list("id", flat=True)))
|
||||||
|
# TO REMOVE
|
||||||
|
for request in queryset:
|
||||||
|
print("Processing request:", request)
|
||||||
|
|
||||||
for request in queryset:
|
for request in queryset:
|
||||||
writer.writerow(
|
writer.writerow(
|
||||||
[
|
[
|
||||||
|
|
|
@ -173,9 +173,11 @@ class ExportDataTypeRequests(View):
|
||||||
"""Returns a domain requests report for a given user on the request"""
|
"""Returns a domain requests report for a given user on the request"""
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
|
print("ExportDataTypeRequests get method called")
|
||||||
response = HttpResponse(content_type="text/csv")
|
response = HttpResponse(content_type="text/csv")
|
||||||
response["Content-Disposition"] = 'attachment; filename="domain-requests.csv"'
|
response["Content-Disposition"] = 'attachment; filename="domain-requests.csv"'
|
||||||
csv_export.DomainRequestsDataType.export_data_to_csv(response, request=request)
|
print("!!!!!!!!!!!", dir(csv_export.DomainRequestsDataType))
|
||||||
|
csv_export.DomainRequestsDataType.exporting_dr_data_to_csv(response, request=request)
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue