Merge branch 'staging' into to-fixes
This commit is contained in:
commit
3ded9f3f89
@ -34,16 +34,24 @@ class MockReportingProvider:
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
"""
|
"""
|
||||||
if portfolio.name in cls.FIXTURE_SPEND_DATA:
|
|
||||||
applications = cls.FIXTURE_SPEND_DATA[portfolio.name]["applications"]
|
fixture_apps = cls.FIXTURE_SPEND_DATA.get(portfolio.name, {}).get(
|
||||||
return sorted(
|
"applications", []
|
||||||
[
|
)
|
||||||
cls._get_application_monthly_totals(application)
|
|
||||||
for application in applications
|
for application in portfolio.applications:
|
||||||
],
|
if application.name not in [app["name"] for app in fixture_apps]:
|
||||||
key=lambda app: app["name"],
|
fixture_apps.append({"name": application.name, "environments": []})
|
||||||
)
|
|
||||||
return []
|
return sorted(
|
||||||
|
[
|
||||||
|
cls._get_application_monthly_totals(portfolio, fixture_app)
|
||||||
|
for fixture_app in fixture_apps
|
||||||
|
if fixture_app["name"]
|
||||||
|
in [application.name for application in portfolio.applications]
|
||||||
|
],
|
||||||
|
key=lambda app: app["name"],
|
||||||
|
)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _get_environment_monthly_totals(cls, environment):
|
def _get_environment_monthly_totals(cls, environment):
|
||||||
@ -64,7 +72,7 @@ class MockReportingProvider:
|
|||||||
}
|
}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _get_application_monthly_totals(cls, application):
|
def _get_application_monthly_totals(cls, portfolio, fixture_app):
|
||||||
"""
|
"""
|
||||||
returns a dictionary that represents spending totals for an application
|
returns a dictionary that represents spending totals for an application
|
||||||
and its environments e.g.
|
and its environments e.g.
|
||||||
@ -83,19 +91,28 @@ class MockReportingProvider:
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
environments = sorted(
|
application_envs = [
|
||||||
[
|
env
|
||||||
cls._get_environment_monthly_totals(env)
|
for env in portfolio.all_environments
|
||||||
for env in application["environments"]
|
if env.application.name == fixture_app["name"]
|
||||||
],
|
]
|
||||||
key=lambda env: env["name"],
|
|
||||||
)
|
environments = [
|
||||||
|
cls._get_environment_monthly_totals(env)
|
||||||
|
for env in fixture_app["environments"]
|
||||||
|
if env["name"] in [e.name for e in application_envs]
|
||||||
|
]
|
||||||
|
|
||||||
|
for env in application_envs:
|
||||||
|
if env.name not in [env["name"] for env in environments]:
|
||||||
|
environments.append({"name": env.name})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"name": application["name"],
|
"name": fixture_app["name"],
|
||||||
"this_month": sum(env["this_month"] for env in environments),
|
"this_month": sum(env.get("this_month", 0) for env in environments),
|
||||||
"last_month": sum(env["last_month"] for env in environments),
|
"last_month": sum(env.get("last_month", 0) for env in environments),
|
||||||
"total": sum(env["total"] for env in environments),
|
"total": sum(env.get("total", 0) for env in environments),
|
||||||
"environments": environments,
|
"environments": sorted(environments, key=lambda env: env["name"]),
|
||||||
}
|
}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
<span v-html='formatDollars(application.last_month || 0)'></span>
|
<span v-html='formatDollars(application.last_month || 0)'></span>
|
||||||
</td>
|
</td>
|
||||||
<td class="table-cell--align-right">
|
<td class="table-cell--align-right">
|
||||||
<span v-html='formatDollars(application.total)'></span>
|
<span v-html='formatDollars(application.total || 0)'></span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr
|
<tr
|
||||||
@ -67,7 +67,7 @@
|
|||||||
<span v-html='formatDollars(environment.last_month || 0)'></span>
|
<span v-html='formatDollars(environment.last_month || 0)'></span>
|
||||||
</td>
|
</td>
|
||||||
<td class="table-cell--align-right">
|
<td class="table-cell--align-right">
|
||||||
<span v-html='formatDollars(environment.total)'></span>
|
<span v-html='formatDollars(environment.total || 0)'></span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</template>
|
</template>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from atst.domain.csp.reports import MockReportingProvider
|
from atst.domain.csp.reports import MockReportingProvider
|
||||||
|
from tests.factories import PortfolioFactory
|
||||||
|
|
||||||
|
|
||||||
def test_get_environment_monthly_totals():
|
def test_get_environment_monthly_totals():
|
||||||
@ -20,6 +21,11 @@ def test_get_environment_monthly_totals():
|
|||||||
|
|
||||||
|
|
||||||
def test_get_application_monthly_totals():
|
def test_get_application_monthly_totals():
|
||||||
|
portfolio = PortfolioFactory.create(
|
||||||
|
applications=[
|
||||||
|
{"name": "Test Application", "environments": [{"name": "Z"}, {"name": "A"}]}
|
||||||
|
],
|
||||||
|
)
|
||||||
application = {
|
application = {
|
||||||
"name": "Test Application",
|
"name": "Test Application",
|
||||||
"environments": [
|
"environments": [
|
||||||
@ -42,7 +48,9 @@ def test_get_application_monthly_totals():
|
|||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
totals = MockReportingProvider._get_application_monthly_totals(application)
|
totals = MockReportingProvider._get_application_monthly_totals(
|
||||||
|
portfolio, application
|
||||||
|
)
|
||||||
assert totals["name"] == "Test Application"
|
assert totals["name"] == "Test Application"
|
||||||
assert totals["this_month"] == 300
|
assert totals["this_month"] == 300
|
||||||
assert totals["last_month"] == 700
|
assert totals["last_month"] == 700
|
||||||
|
Loading…
x
Reference in New Issue
Block a user