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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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