Пример #1
0
 def test_can_valid_a_basic_topic(self):
     # Setup
     form_data = {
         'subject': faker.text(max_nb_chars=200),
         'content': '[b]{}[/b]'.format(faker.text()),
         'topic_type': Topic.TOPIC_POST,
     }
     # Run
     form = TopicForm(data=form_data,
                      user=self.user,
                      forum=self.top_level_forum)
     valid = form.is_valid()
     # Check
     assert valid
Пример #2
0
 def test_can_valid_a_basic_topic(self):
     # Setup
     form_data = {
         'subject': faker.text(max_nb_chars=200),
         'content': '[b]{}[/b]'.format(faker.text()),
         'topic_type': Topic.TOPIC_POST,
     }
     # Run
     form = TopicForm(
         data=form_data,
         user=self.user,
         forum=self.top_level_forum)
     valid = form.is_valid()
     # Check
     assert valid
Пример #3
0
 def test_creates_a_post_topic_if_no_topic_type_is_provided(self):
     # Setup
     form_data = {
         'subject': '{}'.format(faker.text(max_nb_chars=200)),
         'content': '[b]{}[/b]'.format(faker.text()),
     }
     # Run
     form = TopicForm(data=form_data,
                      user=self.user,
                      forum=self.top_level_forum)
     valid = form.is_valid()
     # Check
     assert valid
     post = form.save()
     assert post.topic.type == Topic.TOPIC_POST
Пример #4
0
 def test_can_valid_a_basic_announce(self):
     # Setup
     form_data = {
         'subject': faker.text(max_nb_chars=200),
         'content': '[b]{}[/b]'.format(faker.text()),
         'topic_type': Topic.TOPIC_ANNOUNCE,
     }
     assign_perm('can_post_announcements', self.user, self.top_level_forum)
     # Run
     form = TopicForm(data=form_data,
                      user=self.user,
                      forum=self.top_level_forum)
     valid = form.is_valid()
     # Check
     assert valid
Пример #5
0
 def test_can_initialize_poll_fields_from_topic_related_poll_object(self):
     # Setup
     form_data = {
         'subject': 'Re: {}'.format(faker.text(max_nb_chars=200)),
         'content': '[b]{}[/b]'.format(faker.text()),
         'topic_type': Topic.TOPIC_STICKY,
     }
     assign_perm('can_create_polls', self.user, self.top_level_forum)
     poll = TopicPollFactory.create(topic=self.post.topic)
     # Run
     form = TopicForm(data=form_data,
                      user=self.user,
                      user_ip=faker.ipv4(),
                      forum=self.top_level_forum,
                      topic=self.topic,
                      instance=self.post)
     # Check
     assert 'poll_question' in form.fields
     assert 'poll_max_options' in form.fields
     assert 'poll_duration' in form.fields
     assert 'poll_user_changes' in form.fields
     assert form.fields['poll_question'].initial == poll.question
     assert form.fields['poll_max_options'].initial == poll.max_options
     assert form.fields['poll_duration'].initial == poll.duration
     assert form.fields['poll_user_changes'].initial == poll.user_changes
Пример #6
0
 def test_can_append_poll_fields_if_the_user_is_allowed_to_create_polls(
         self):
     # Setup
     form_data = {
         'subject': 'Re: {}'.format(faker.text(max_nb_chars=200)),
         'content': '[b]{}[/b]'.format(faker.text()),
         'topic_type': Topic.TOPIC_STICKY,
     }
     assign_perm('can_create_polls', self.user, self.top_level_forum)
     # Run
     form = TopicForm(data=form_data,
                      user=self.user,
                      user_ip=faker.ipv4(),
                      forum=self.top_level_forum,
                      topic=self.topic,
                      instance=self.post)
     # Check
     assert 'poll_question' in form.fields
     assert 'poll_max_options' in form.fields
     assert 'poll_duration' in form.fields
     assert 'poll_user_changes' in form.fields
     assert isinstance(form.fields['poll_question'], forms.CharField)
     assert isinstance(form.fields['poll_max_options'], forms.IntegerField)
     assert isinstance(form.fields['poll_duration'], forms.IntegerField)
     assert isinstance(form.fields['poll_user_changes'], forms.BooleanField)
Пример #7
0
 def test_can_valid_a_basic_sticky_post(self):
     # Setup
     form_data = {
         'subject': faker.text(max_nb_chars=200),
         'content': '[b]{}[/b]'.format(faker.text()),
         'topic_type': Topic.TOPIC_STICKY,
     }
     assign_perm('can_post_stickies', self.user, self.top_level_forum)
     # Run
     form = TopicForm(data=form_data,
                      user=self.user,
                      user_ip=faker.ipv4(),
                      forum=self.top_level_forum)
     valid = form.is_valid()
     # Check
     assert valid
Пример #8
0
 def test_creates_a_post_topic_if_no_topic_type_is_provided(self):
     # Setup
     form_data = {
         'subject': '{}'.format(faker.text(max_nb_chars=200)),
         'content': '[b]{}[/b]'.format(faker.text()),
     }
     # Run
     form = TopicForm(
         data=form_data,
         user=self.user,
         forum=self.top_level_forum)
     valid = form.is_valid()
     # Check
     assert valid
     post = form.save()
     assert post.topic.type == Topic.TOPIC_POST
Пример #9
0
 def test_can_valid_a_basic_announce(self):
     # Setup
     form_data = {
         'subject': faker.text(max_nb_chars=200),
         'content': '[b]{}[/b]'.format(faker.text()),
         'topic_type': Topic.TOPIC_ANNOUNCE,
     }
     assign_perm('can_post_announcements', self.user, self.top_level_forum)
     # Run
     form = TopicForm(
         data=form_data,
         user=self.user,
         forum=self.top_level_forum)
     valid = form.is_valid()
     # Check
     assert valid
Пример #10
0
 def test_can_valid_a_basic_sticky_post(self):
     # Setup
     form_data = {
         'subject': faker.text(max_nb_chars=200),
         'content': '[b]{}[/b]'.format(faker.text()),
         'topic_type': Topic.TYPE_CHOICES.topic_sticky,
     }
     assign_perm('can_post_stickies', self.user, self.top_level_forum)
     # Run
     form = TopicForm(
         data=form_data,
         user=self.user,
         user_ip=faker.ipv4(),
         forum=self.top_level_forum)
     valid = form.is_valid()
     # Check
     assert valid
Пример #11
0
 def test_can_be_used_to_update_the_topic_type(self):
     # Setup
     form_data = {
         'subject': 'Re: {}'.format(faker.text(max_nb_chars=200)),
         'content': '[b]{}[/b]'.format(faker.text()),
         'topic_type': Topic.TOPIC_STICKY,
     }
     assign_perm('can_post_stickies', self.user, self.top_level_forum)
     # Run
     form = TopicForm(data=form_data,
                      user=self.user,
                      forum=self.top_level_forum,
                      topic=self.topic,
                      instance=self.post)
     # Check
     assert form.is_valid()
     form.save()
     self.topic.refresh_from_db()
     assert self.topic.type == Topic.TOPIC_STICKY
Пример #12
0
 def test_cannot_allow_users_to_create_polls_without_settings_the_maximum_options_number(self):
     # Setup
     form_data = {
         'subject': faker.text(max_nb_chars=200),
         'content': '[b]{}[/b]'.format(faker.text()),
         'topic_type': Topic.TOPIC_STICKY,
         'poll_question': faker.text(max_nb_chars=100),
     }
     assign_perm('can_create_polls', self.user, self.top_level_forum)
     # Run
     form = TopicForm(
         data=form_data,
         user=self.user,
         forum=self.top_level_forum,
         topic=self.topic,
         instance=self.post)
     # Check
     valid = form.is_valid()
     assert not valid
     assert 'poll_max_options' in form.errors
Пример #13
0
 def test_can_be_used_to_update_the_topic_type(self):
     # Setup
     form_data = {
         'subject': 'Re: {}'.format(faker.text(max_nb_chars=200)),
         'content': '[b]{}[/b]'.format(faker.text()),
         'topic_type': Topic.TOPIC_STICKY,
     }
     assign_perm('can_post_stickies', self.user, self.top_level_forum)
     # Run
     form = TopicForm(
         data=form_data,
         user=self.user,
         forum=self.top_level_forum,
         topic=self.topic,
         instance=self.post)
     # Check
     assert form.is_valid()
     form.save()
     self.topic.refresh_from_db()
     assert self.topic.type == Topic.TOPIC_STICKY
Пример #14
0
 def test_cannot_append_poll_fields_if_the_user_is_not_allowed_to_create_polls(self):
     # Setup
     form_data = {
         'subject': 'Re: {}'.format(faker.text(max_nb_chars=200)),
         'content': '[b]{}[/b]'.format(faker.text()),
         'topic_type': Topic.TOPIC_STICKY,
     }
     # Run
     form = TopicForm(
         data=form_data,
         user=self.user,
         forum=self.top_level_forum,
         topic=self.topic,
         instance=self.post)
     # Check
     assert 'poll_question' not in form.fields
     assert 'poll_max_options' not in form.fields
     assert 'poll_duration' not in form.fields
     assert 'poll_user_changes' not in form.fields
Пример #15
0
 def test_allows_the_creation_of_announces_if_the_user_has_required_permission(self):
     # Setup
     form_data = {
         'subject': faker.text(max_nb_chars=200),
         'content': '[b]{}[/b]'.format(faker.text()),
         'topic_type': Topic.TOPIC_ANNOUNCE,
     }
     form_kwargs = {
         'data': form_data,
         'user': self.user,
         'forum': self.top_level_forum,
     }
     # Run & check
     form = TopicForm(**form_kwargs)
     assert not form.is_valid()
     choices = [ch[0] for ch in form.fields['topic_type'].choices]
     assert Topic.TOPIC_ANNOUNCE not in choices
     assign_perm('can_post_announcements', self.user, self.top_level_forum)
     form = TopicForm(**form_kwargs)
     assert form.is_valid()
     choices = [ch[0] for ch in form.fields['topic_type'].choices]
     assert Topic.TOPIC_ANNOUNCE in choices