예제 #1
0
 def test_user_can_read_empty_room_with_no_texts_by_title(self):
     from storymanager.tests_utils import create_user_room
     room = create_user_room(self.user, self.room_title, is_finished=True)
     response = self.client.get(
         reverse('room_read-list', kwargs={'room_title': room.room_title}))
     self.assertEqual(status.HTTP_200_OK, response.status_code)
     self.assertListEqual([], response.data)
예제 #2
0
 def test_user_can_get_visible_text_from_room_detail(self):
     from storymanager.tests_utils import create_user_room, create_user_room_text
     room = create_user_room(self.user, self.room_title)
     create_user_room_text(self.user, room, visible_text='test_text')
     response = self.client.get(reverse('rooms-detail', kwargs={'room_title': room.room_title}))
     self.assertEqual(status.HTTP_200_OK, response.status_code)
     self.assertEqual('test_text', response.data['visible_text'])
예제 #3
0
 def test_room_closes_after_everyone_leaves(self):
     from storymanager.tests_utils import create_user_room
     room = create_user_room(self.user, self.room_title)
     self.client.post(reverse('rooms-leave', kwargs={'room_title': room.room_title}))
     room.refresh_from_db()
     self.assertTrue(room.is_finished)
     self.assertIsNotNone(room.finished_at)
예제 #4
0
 def test_user_can_retrieve_another_users_room_before_joining(self):
     from storymanager.tests_utils import create_user_room, create_user
     another_user = create_user('another-user')
     room = create_user_room(another_user, self.room_title)
     response = self.client.get(reverse('rooms-detail', kwargs={'room_title': room.room_title}))
     self.assertEqual(status.HTTP_200_OK, response.status_code)
     self.assertEqual(room.room_title, response.data.get('room_title'))
예제 #5
0
 def test_rooms_are_listed_in_reversed_chronological_order(self):
     from storymanager.tests_utils import create_user_room
     _ = [create_user_room(self.user, self.room_title + str(i)) for i in range(10)]
     response = self.client.get(reverse('rooms-list'))
     self.assertEqual(status.HTTP_200_OK, response.status_code)
     for first, second in zip(response.data['results'], response.data['results'][1:]):
         self.assertTrue(parse_datetime(first['modified_at'])
                         >= parse_datetime(second['modified_at']))
예제 #6
0
 def test_user_can_list_rooms(self):
     from storymanager.tests_utils import create_user_room
     rooms = [create_user_room(self.user, self.room_title + str(i)) for i in range(10)]
     response = self.client.get(reverse('rooms-list'))
     self.assertEqual(status.HTTP_200_OK, response.status_code)
     exp_room_titles = list(reversed([room.room_title for room in rooms]))
     act_room_titles = [room.get('room_title') for room in response.data['results']]
     self.assertListEqual(exp_room_titles, act_room_titles)
예제 #7
0
 def test_user_can_list_room_users_thorough_users_list(self):
     from storymanager.tests_utils import create_user_room
     room = create_user_room(self.user, self.room_title)
     usernames = self.create_many_users_in_room(room)
     response = self.client.get(
         reverse('room_users', kwargs={'room_title': room.room_title}))
     self.assertEqual(status.HTTP_200_OK, response.status_code)
     self.assertListEqual(usernames, [u['username'] for u in response.data])
예제 #8
0
 def test_user_can_leave_room(self):
     from rooms.models import Membership
     from storymanager.tests_utils import create_user_room
     room = create_user_room(self.user, self.room_title)
     response = self.client.post(
         reverse('rooms-leave', kwargs={'room_title': room.room_title}))
     user_membership = Membership.objects.get(room=room, user=self.user)
     self.assertEqual(status.HTTP_200_OK, response.status_code)
     self.assertTrue(user_membership.status == Membership.STOPPED)
예제 #9
0
 def test_user_can_read_room_texts_by_title(self):
     from storymanager.tests_utils import create_user_room, create_user_room_text
     room = create_user_room(self.user, self.room_title, is_finished=True)
     texts = [create_user_room_text(self.user, room, visible_text=str(i))
              for i in range(10)]
     response = self.client.get(
         reverse('room_read-list', kwargs={'room_title': room.room_title}))
     self.assertEqual(status.HTTP_200_OK, response.status_code)
     self.assertEqual([t.hidden_text + ' ' + t.visible_text for t in texts],
                      [t['full_text'] for t in response.data])
예제 #10
0
 def test_user_can_join_room(self):
     from storymanager.tests_utils import create_user_room, create_user, login_user_into_client
     room = create_user_room(self.user, self.room_title)
     usernames = list(map(str, range(10)))
     responses = []
     for username in usernames:
         another_user = create_user(username)
         login_user_into_client(another_user, self.client)
         response = self.client.post(
             reverse('room_users', kwargs={'room_title': room.room_title}))
         self.assertIsNone(response.data)
         responses.append(response)
     self.assertTrue(all(r.status_code == status.HTTP_200_OK for r in responses))
     usernames = [self.user.username] + usernames
     response_users_list = self.client.get(
         reverse('room_users', kwargs={'room_title': room.room_title}))
     self.assertEqual(usernames, [u['username'] for u in response_users_list.data])
예제 #11
0
 def test_user_list_updates_current_turn_user(self):
     from storymanager.tests_utils import create_user_room, login_user_into_client, create_user
     from rooms.models import get_user_room_membership, Membership
     room = create_user_room(self.user, self.room_title)
     usernames = list(map(str, range(3)))
     users = []
     first_author_index = 0
     for i, username in enumerate(usernames):
         another_user = create_user(username)
         login_user_into_client(another_user, self.client)
         room.add_user(another_user)
         if i == first_author_index:
             post_text_from_client_to_room({'visible_text': 'x'}, self.client, room)
         users.append(another_user)
     expected_curr_user = users[(first_author_index + 1) % len(users)]
     self.client.get(reverse('room_users', kwargs={'room_title': room.room_title}))
     expected_curr_membership = get_user_room_membership(expected_curr_user, room)
     self.assertTrue(expected_curr_membership.status == Membership.CAN_WRITE)
예제 #12
0
    def setUp(self):
        django.setup()

        from storymanager.tests_utils import create_user
        from storymanager.tests_utils import login_user_into_client
        from storymanager.tests_utils import create_user_room

        self.client = APIClient()
        self.user = create_user()
        login_user_into_client(self.user, self.client)
        self.room_title = 'a-b'
        self.room = create_user_room(self.user, self.room_title)
        self.full_data = {
            'visible_text': 'visible_text',
            'hidden_text': 'hidden_text'
        }
        self.visible_only_data = {'visible_text': 'visible_text'}
        self.hidden_only_data = {'hidden_text': 'hidden_text'}
예제 #13
0
 def test_current_turn_username_is_equal_to_authors_username_in_new_room(self):
     from storymanager.tests_utils import create_user_room
     room = create_user_room(self.user, self.room_title)
     response = self.client.get(reverse('rooms-detail', kwargs={'room_title': room.room_title}))
     self.assertEqual(status.HTTP_200_OK, response.status_code)
     self.assertEqual(self.user.username, response.data.get('current_turn_username'))
예제 #14
0
 def test_user_can_retrieve_own_room_by_title(self):
     from storymanager.tests_utils import create_user_room
     room = create_user_room(self.user, self.room_title)
     response = self.client.get(reverse('rooms-detail', kwargs={'room_title': room.room_title}))
     self.assertEqual(status.HTTP_200_OK, response.status_code)
     self.assertEqual(room.room_title, response.data.get('room_title'))