示例#1
0
def create_status():
    data = request.get_json()
    status = TaskStatus.create_from_dict(data)

    db_session.add(status)

    try:
        db_session.commit()
    except IntegrityError:
        db_session.rollback()
        return jsonify(dict(message='Status name must be unique.')), 409

    return jsonify(status.to_dict()), 201
    def test_create_status_from_dict_invalid_data(self):
        count_before_insert = TaskStatus.query.count()

        status_dict = dict()

        with self.assertRaises(ValidationError):
            status = TaskStatus.create_from_dict(status_dict)
            db_session.add(status)
            db_session.commit()

        count_after_insert = TaskStatus.query.count()

        self.assertEqual(count_before_insert, count_after_insert)
    def test_create_status_from_dict_invalid_type(self):
        count_before_insert = TaskStatus.query.count()

        status_list = [
            'Odroczone'
        ]

        with self.assertRaises(TypeError):
            status = TaskStatus.create_from_dict(status_list)
            db_session.add(status)
            db_session.commit()

        count_after_insert = TaskStatus.query.count()

        status = TaskStatus.query.filter_by(name='Odroczone').first()

        self.assertIsNone(status)
        self.assertEqual(count_before_insert, count_after_insert)
    def test_create_status_from_dict(self):
        count_before_insert = TaskStatus.query.count()

        status_dict = dict(
            name='Odroczone'
        )

        status = TaskStatus.create_from_dict(status_dict)
        db_session.add(status)
        db_session.commit()

        count_after_insert = TaskStatus.query.count()

        self.assertEqual(count_before_insert + 1, count_after_insert)

        status = TaskStatus.query.filter_by(name='Odroczone').first()

        self.assertIsNotNone(status)
        self.assertEqual(status_dict['name'], status.name)
    def test_create_status_duplicate(self):
        status_dict = dict(
            name='Odroczone',
        )

        status = TaskStatus.create_from_dict(status_dict)
        db_session.add(status)
        db_session.commit()

        count_before_insert = TaskStatus.query.count()

        response = self.client.post(
            '/task/status',
            data=json.dumps(status_dict),
            headers={'Content-Type': 'application/json'}
        )

        count_after_insert = TaskStatus.query.count()

        self.assertStatus(response, 409)
        self.assertEqual(count_before_insert, count_after_insert)
    def test_update_status_duplicate_data(self):
        status_dict = dict(
            name='Odroczone',
        )

        status = TaskStatus.create_from_dict(status_dict)
        db_session.add(status)
        db_session.commit()

        status2 = TaskStatus.query.first()

        response = self.client.put(
            '/task/status/' + str(status2.id),
            data=json.dumps(status_dict),
            headers={'Content-Type': 'application/json'}
        )

        self.assertStatus(response, 409)

        status2 = TaskStatus.query.first()

        self.assertNotEqual(status2.name, status_dict['name'])