Пример #1
0
    def test_input_invalid_unshared_post_option(self):
        """PostCreateSerializerの入力データのバリデーション(NG: 投稿と選択肢でshare_idが共通でない)"""

        share_id = uuid.uuid4()
        data1 = {
            'select_num': 0,
            'answer': 'テスト1',
            'votes': 1,
            'share_id': share_id
        }
        data2 = {
            'select_num': 1,
            'answer': 'テスト2',
            'votes': 2,
            'share_id': share_id
        }

        # シリアライズ
        input_data = {
            'user': get_user_model().objects.get().id,
            'question': 'テストだよ〜',
            'options': [data1, data2],
            'share_id': uuid.uuid4()
        }
        serializer = PostCreateSerializer(data=input_data)
        # バリデーションの結果を検証
        self.assertEqual(serializer.is_valid(), False)
        self.assertCountEqual(serializer.errors.keys(), ['non_field_errors'])
        self.assertCountEqual(
            [x.code for x in serializer.errors['non_field_errors']],
            ['invalid'],
        )
Пример #2
0
    def test_input_invalid_lesser_2_options(self):
        """PostCreateSerializerの入力データのバリデーション(NG: 選択肢が2個未満だった時)"""
        share_id = uuid.uuid4()
        data1 = {
            'select_num': 0,
            'answer': 'テスト1',
            'votes': 1,
            'share_id': share_id
        }

        # シリアライズ(境界値もテストするよ!)
        input_data = {
            'user': get_user_model().objects.get().id,
            'question': 'テストだよ〜!',
            'options': [data1],
            'share_id': share_id
        }
        serializer = PostCreateSerializer(data=input_data)
        # バリデーションの結果を検証
        self.assertEqual(serializer.is_valid(), False)
        self.assertCountEqual(serializer.errors.keys(), ['options'])
        self.assertCountEqual(
            [x.code for x in serializer.errors['options']],
            ['invalid'],
        )
Пример #3
0
    def test_input_valid(self):
        """PostCreateSerializerの入力データのバリデーション(OK)"""

        share_id = uuid.uuid4()
        data1 = {
            'select_num': 0,
            'answer': 'テスト1',
            'votes': 1,
            'share_id': share_id
        }
        data2 = {
            'select_num': 1,
            'answer': 'テスト2',
            'votes': 2,
            'share_id': share_id
        }

        # 入力データの加工
        input_data = {
            'user': get_user_model().objects.get().id,
            'question': 'テストだよ〜',
            'options': [data1, data2],
            'share_id': share_id
        }
        # シリアライズ
        serializer = PostCreateSerializer(data=input_data)
        # バリデーションの結果を検証
        self.assertEqual(serializer.is_valid(), True)
Пример #4
0
    def test_input_invalid_something_is_required(self):
        """PostCreateSerializerの入力データのバリデーション(NG: 必須の入力データが存在しない時)"""

        share_id = uuid.uuid4()
        data1 = {
            'select_num': 0,
            'answer': 'テスト1',
            'votes': 1,
            'share_id': share_id
        }
        data2 = {
            'select_num': 1,
            'answer': 'テスト2',
            'votes': 2,
            'share_id': share_id
        }

        # 入力データの加工
        input_data = {
            'user': get_user_model().objects.get().id,
            'question': 'テストだよ〜!',
            'options': [data1, data2],
            'share_id': share_id
        }

        # シリアライズ
        del input_data['user']
        serializer = PostCreateSerializer(data=input_data)
        change_required(self, serializer, 'user')

        input_data['user'] = get_user_model().objects.get().id
        del input_data['question']
        serializer = PostCreateSerializer(data=input_data)
        change_required(self, serializer, 'question')

        input_data['question'] = 'テストだよ〜!'
        del input_data['options']
        serializer = PostCreateSerializer(data=input_data)
        change_required(self, serializer, 'options')

        input_data['options'] = [data1, data2]
        del input_data['share_id']
        serializer = PostCreateSerializer(data=input_data)
        change_required(self, serializer, 'share_id')
Пример #5
0
    def test_input_invalid_question_over(self):
        """PostCreateSerializerの入力データのバリデーション(NG: questionが150字より上)"""

        share_id = uuid.uuid4()
        data1 = {
            'select_num': 0,
            'answer': 'テスト1',
            'votes': 1,
            'share_id': share_id
        }
        data2 = {
            'select_num': 1,
            'answer': 'テスト2',
            'votes': 2,
            'share_id': share_id
        }

        # 入力データの加工
        input_data_valid = {
            'user': get_user_model().objects.get().id,
            'question': 'テストだよ' * 30,
            'options': [data1, data2],
            'share_id': share_id
        }
        # シリアライズ(境界値もテストするよ!)
        serializer_valid = PostCreateSerializer(data=input_data_valid)
        self.assertEqual(serializer_valid.is_valid(), True)

        input_data_invalid = {
            'user': get_user_model().objects.get().id,
            'question': 'テストだよ' * 31,
            'options': [data1, data2],
            'share_id': share_id
        }
        # シリアライズ(境界値もテストするよ!)
        serializer = PostCreateSerializer(data=input_data_invalid)
        # バリデーションの結果を検証
        self.assertEqual(serializer.is_valid(), False)
        self.assertCountEqual(serializer.errors.keys(), ['question'])
        self.assertCountEqual(
            [x.code for x in serializer.errors['question']],
            ['max_length'],
        )
Пример #6
0
    def test_input_invalid_user_or_question_is_blank(self):
        """OptionSerializerの入力データのバリデーション(NG: questionかuserの値が空文字)"""

        share_id = uuid.uuid4()
        data1 = {
            'select_num': 0,
            'answer': 'テスト1',
            'votes': 1,
            'share_id': share_id
        }
        data2 = {
            'select_num': 1,
            'answer': 'テスト2',
            'votes': 2,
            'share_id': share_id
        }

        # 入力データの加工
        input_data = {
            'user': get_user_model().objects.get().id,
            'question': 'テストだよ〜!',
            'options': [data1, data2],
            'share_id': share_id
        }
        input_data['user'] = ''
        serializer_user = PostCreateSerializer(data=input_data)
        self.assertEqual(serializer_user.is_valid(), False)
        self.assertCountEqual(serializer_user.errors.keys(), ['user'])
        self.assertCountEqual(
            [x.code for x in serializer_user.errors['user']],
            ['null'],
        )

        input_data['user'] = get_user_model().objects.get().id
        input_data['question'] = ''
        serializer_question = PostCreateSerializer(data=input_data)
        self.assertEqual(serializer_question.is_valid(), False)
        self.assertCountEqual(serializer_question.errors.keys(), ['question'])
        self.assertCountEqual(
            [x.code for x in serializer_question.errors['question']],
            ['blank'],
        )