Skip to content

Commit 03c73da

Browse files
feat: add promotional message for new message to end of PR comment (#754)
1 parent 610c792 commit 03c73da

File tree

4 files changed

+79
-0
lines changed

4 files changed

+79
-0
lines changed

database/models/core.py

+1
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ class Repository(CodecovBaseModel):
152152
webhook_secret = Column(types.Text)
153153
activated = Column(types.Boolean, default=False)
154154
bundle_analysis_enabled = Column(types.Boolean, default=False)
155+
test_analytics_enabled = Column(types.Boolean, default=False)
155156
upload_token = Column(postgresql.UUID, server_default=FetchedValue())
156157

157158
# DEPRECATED - prefer GithubAppInstallation.is_repo_covered_by_integration

database/tests/factories/core.py

+1
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ class Meta:
7878
lambda o: datetime.now(tz=timezone.utc)
7979
)
8080
bundle_analysis_enabled = False
81+
test_analytics_enabled = True
8182

8283

8384
class BranchFactory(Factory):

services/notification/notifiers/mixins/message/__init__.py

+22
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,28 @@ def create_message(
179179
section_writer,
180180
)
181181

182+
extra_message = []
183+
184+
if not self.repository.test_analytics_enabled:
185+
extra_message.append(
186+
"- [Flaky Tests Detection](https://docs.codecov.com/docs/test-result-ingestion-beta) - Detect and resolve failed and flaky tests"
187+
)
188+
if not self.repository.bundle_analysis_enabled and set(
189+
{"javascript", "typescript"}
190+
).intersection(self.repository.languages or {}):
191+
extra_message.append(
192+
"- [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis) - Avoid shipping oversized bundles"
193+
)
194+
195+
if extra_message:
196+
for i in [
197+
"----",
198+
"🚨 Try these New Features:",
199+
"",
200+
*extra_message,
201+
]:
202+
write(i)
203+
182204
return [m for m in message if m is not None]
183205

184206
def _possibly_write_install_app(

services/notification/notifiers/tests/unit/test_comment.py

+55
Original file line numberDiff line numberDiff line change
@@ -3037,6 +3037,61 @@ def test_message_hide_details_bitbucket(
30373037
assert exp == res
30383038
assert result == expected_result
30393039

3040+
@pytest.mark.parametrize(
3041+
"test_analytics_enabled,bundle_analysis_enabled",
3042+
[(False, False), (False, True), (True, False), (True, True)],
3043+
)
3044+
def test_build_message_new_feature_message(
3045+
self,
3046+
dbsession,
3047+
mock_configuration,
3048+
mock_repo_provider,
3049+
sample_comparison,
3050+
test_analytics_enabled,
3051+
bundle_analysis_enabled,
3052+
):
3053+
mock_configuration.params["setup"]["codecov_dashboard_url"] = "test.example.br"
3054+
comparison = sample_comparison
3055+
pull = comparison.pull
3056+
notifier = CommentNotifier(
3057+
repository=sample_comparison.head.commit.repository,
3058+
title="title",
3059+
notifier_yaml_settings={"layout": "reach, diff, flags, files, footer"},
3060+
notifier_site_settings=True,
3061+
current_yaml={},
3062+
repository_service=mock_repo_provider,
3063+
)
3064+
repository = sample_comparison.head.commit.repository
3065+
if bundle_analysis_enabled:
3066+
repository.languages = ["javascript"]
3067+
if test_analytics_enabled:
3068+
repository.test_analytics_enabled = False
3069+
dbsession.flush()
3070+
result = notifier.build_message(comparison)
3071+
3072+
promotional_message = "🚨 Try these New Features:"
3073+
flake_message = "- [Flaky Tests Detection](https://docs.codecov.com/docs/test-result-ingestion-beta) - Detect and resolve failed and flaky tests"
3074+
bundle_message = "- [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis) - Avoid shipping oversized bundles"
3075+
3076+
end_of_message = []
3077+
3078+
if test_analytics_enabled or bundle_analysis_enabled:
3079+
end_of_message += [promotional_message, ""]
3080+
assert promotional_message in result
3081+
3082+
if test_analytics_enabled:
3083+
end_of_message.append(flake_message)
3084+
assert flake_message in result
3085+
3086+
if bundle_analysis_enabled:
3087+
end_of_message.append(bundle_message)
3088+
assert bundle_message in result
3089+
3090+
if len(end_of_message):
3091+
assert result[-len(end_of_message) :] == end_of_message
3092+
else:
3093+
assert result[-1] == ""
3094+
30403095

30413096
class TestFileSectionWriter(object):
30423097
def test_filesection_no_extra_settings(self, sample_comparison, mocker):

0 commit comments

Comments
 (0)