oncall-engine/engine/apps/slack/tests/factories.py
Vadim Stepanov e7950139f3
Fix flaky Slack test (#1841)
# What this PR does
Fix [flaky
test](https://github.com/grafana/oncall/actions/runs/4821277510/jobs/8586941639#step:5:706)
`test_get_user_groups_filter_by_handle` using `UniqueFaker` on
`SlackUserGroupFactory.handle` to make handles always unique.

Before:

```shell
>>> len(set([SlackUserGroupFactory().handle for _ in range(100)]))
93
```

After:

```shell
>>> len(set([SlackUserGroupFactory().handle for _ in range(100)]))
100
```


## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] `CHANGELOG.md` updated (or `pr:no changelog` PR label added if not
required)
2023-04-27 17:41:36 +01:00

59 lines
1.3 KiB
Python

import factory
from apps.slack.models import (
SlackActionRecord,
SlackChannel,
SlackMessage,
SlackTeamIdentity,
SlackUserGroup,
SlackUserIdentity,
)
from common.utils import UniqueFaker
class SlackTeamIdentityFactory(factory.DjangoModelFactory):
slack_id = UniqueFaker("word")
cached_name = factory.Faker("word")
class Meta:
model = SlackTeamIdentity
class SlackUserIdentityFactory(factory.DjangoModelFactory):
slack_id = UniqueFaker("word")
cached_avatar = "TEST_SLACK_IMAGE_URL"
cached_name = "TEST_SLACK_NAME"
cached_slack_login = "TEST_SLACK_LOGIN"
class Meta:
model = SlackUserIdentity
class SlackUserGroupFactory(factory.DjangoModelFactory):
slack_id = UniqueFaker("word")
name = factory.Faker("word")
handle = UniqueFaker("word")
class Meta:
model = SlackUserGroup
class SlackChannelFactory(factory.DjangoModelFactory):
slack_id = UniqueFaker("word")
name = factory.Faker("word")
class Meta:
model = SlackChannel
class SlackMessageFactory(factory.DjangoModelFactory):
slack_id = UniqueFaker("word")
channel_id = factory.Faker("word")
class Meta:
model = SlackMessage
class SlackActionRecordFactory(factory.DjangoModelFactory):
class Meta:
model = SlackActionRecord