from test_plus.test import TestCase

from posts.factories import PostFactory


class PostsTest(TestCase):
    def test_get_list(self):
        post = PostFactory()
        post_list_url = self.reverse('post:list')
        self.get_check_200(post_list_url)
        self.assertResponseContains(post.title, html=False)
        self.assertResponseContains(post.author.name, html=False)

        write_url = self.reverse('post:create')
        self.assertResponseContains(write_url, html=False)

    def test_get_writing_page_with_login(self):
        user = self.make_user('jelly jelly')

        with self.login(username=user.username):
            write_post_url = self.reverse('post:create')
            self.get_check_200(write_post_url)

    def test_get_writing_page_with_anonymous(self):
        self.assertLoginRequired('post:create')

    def test_post_writing(self):
        user = self.make_user('jelly jelly')
        data = {"title", "This is some "}

        with self.login(username=user.username):
            write_post_url = self.reverse('post:create')
            self.get_check_200(write_post_url)
            self.post('post:write', data=data)

from test_plus.test import TestCase

from posts.factories import PostFactory


class PostsTest(TestCase):
    def test_get_list(self):
        # given
        post = PostFactory()
        post_list_url = self.reverse('post:list')
        # when
        self.get_check_200(post_list_url)
        # then
        self.assertResponseContains(post.title, html=False)
        self.assertResponseContains(post.author.name, html=False)
        write_url = self.reverse('post:create')
        self.assertResponseContains(write_url, html=False)

    def test_get_writing_page_with_login(self):
        # given
        user = self.make_user('jelly jelly')
        # when
        with self.login(username=user.username):
            # then
            write_post_url = self.reverse('post:create')
            self.get_check_200(write_post_url)

    def test_get_writing_page_with_anonymous(self):
        self.assertLoginRequired('post:create')

    def test_post_writing(self):
        # given
        user = self.make_user('jelly jelly')
        data = {"title", "This is some "}
        # when
        with self.login(username=user.username):
            write_post_url = self.reverse('post:create')
            # then
            self.get_check_200(write_post_url)
            self.post('post:write', data=data)

Add given, when, then comment
Add given, when, then comment

  from test_plus.test import TestCase
  
  from posts.factories import PostFactory
  
  
  class PostsTest(TestCase):
      def test_get_list(self):
+         # given
          post = PostFactory()
          post_list_url = self.reverse('post:list')
+         # when
          self.get_check_200(post_list_url)
+         # then
          self.assertResponseContains(post.title, html=False)
          self.assertResponseContains(post.author.name, html=False)
- 
          write_url = self.reverse('post:create')
          self.assertResponseContains(write_url, html=False)
  
      def test_get_writing_page_with_login(self):
+         # given
          user = self.make_user('jelly jelly')
- 
+         # when
          with self.login(username=user.username):
+             # then
              write_post_url = self.reverse('post:create')
              self.get_check_200(write_post_url)
  
      def test_get_writing_page_with_anonymous(self):
          self.assertLoginRequired('post:create')
  
      def test_post_writing(self):
+         # given
          user = self.make_user('jelly jelly')
          data = {"title", "This is some "}
- 
+         # when
          with self.login(username=user.username):
              write_post_url = self.reverse('post:create')
+             # then
              self.get_check_200(write_post_url)
              self.post('post:write', data=data)
  
Add given, when, then comment
## Code Before:
from test_plus.test import TestCase

from posts.factories import PostFactory


class PostsTest(TestCase):
    def test_get_list(self):
        post = PostFactory()
        post_list_url = self.reverse('post:list')
        self.get_check_200(post_list_url)
        self.assertResponseContains(post.title, html=False)
        self.assertResponseContains(post.author.name, html=False)

        write_url = self.reverse('post:create')
        self.assertResponseContains(write_url, html=False)

    def test_get_writing_page_with_login(self):
        user = self.make_user('jelly jelly')

        with self.login(username=user.username):
            write_post_url = self.reverse('post:create')
            self.get_check_200(write_post_url)

    def test_get_writing_page_with_anonymous(self):
        self.assertLoginRequired('post:create')

    def test_post_writing(self):
        user = self.make_user('jelly jelly')
        data = {"title", "This is some "}

        with self.login(username=user.username):
            write_post_url = self.reverse('post:create')
            self.get_check_200(write_post_url)
            self.post('post:write', data=data)

## Instruction:
Add given, when, then comment
## Code After:
from test_plus.test import TestCase

from posts.factories import PostFactory


class PostsTest(TestCase):
    def test_get_list(self):
        # given
        post = PostFactory()
        post_list_url = self.reverse('post:list')
        # when
        self.get_check_200(post_list_url)
        # then
        self.assertResponseContains(post.title, html=False)
        self.assertResponseContains(post.author.name, html=False)
        write_url = self.reverse('post:create')
        self.assertResponseContains(write_url, html=False)

    def test_get_writing_page_with_login(self):
        # given
        user = self.make_user('jelly jelly')
        # when
        with self.login(username=user.username):
            # then
            write_post_url = self.reverse('post:create')
            self.get_check_200(write_post_url)

    def test_get_writing_page_with_anonymous(self):
        self.assertLoginRequired('post:create')

    def test_post_writing(self):
        # given
        user = self.make_user('jelly jelly')
        data = {"title", "This is some "}
        # when
        with self.login(username=user.username):
            write_post_url = self.reverse('post:create')
            # then
            self.get_check_200(write_post_url)
            self.post('post:write', data=data)
