ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 사용자 수정 API 성공, 실패시
    웹프로그래밍/node.js 2019. 6. 3. 19:03

    PUT /users/:id

     

    성공

    • 변경된 name을 응답한다

    실패

    • 정수가 아닌 id일 경우 400 응답
    • name이 없을 경우 400 응답
    • 없는 유저일 경우 404 응답
    • 이름이 중복일 경우 409 응답

     

    index.spec.js 코드 추가

    describe('PUT /users/:id', ()=> {
        describe('성공시', ()=> {
            it('변경된 name을 응답한다', (done)=> {        // 비동기면 done을 써줘야함
                const name = 'chally';
                request(app)
                    .put('/users/3')
                    .send({name})
                    .end((err, res)=> {
                        res.body.should.have.property('name', name);
                        done();
                    });
            });
        });
        describe('실패시', ()=> {
            it('정수가 아닌 id일 경우 400 응답', (done)=> {        //비동기에 대한 처리
                request(app)
                    .put('/users/one')
                    .expect(400)
                    .end(done);
            });
            it('name이 없을 경우 400 응답', done=> {        //비동기에 대한 처리
                request(app)
                    .put('/users/1')
                    .expect(400)
                    .end(done);
            });
            it('없는 유저일 경우 404 응답', done=> {        //비동기에 대한 처리
                request(app)
                    .put('/users/999')
                    .send({name: 'foo'})
                    .expect(404)
                    .end(done);
            });
            it('이름이 중복일 경우 409 응답', done=> {        //비동기에 대한 처리
                request(app)
                    .put('/users/3')
                    .send({name: 'bek'})
                    .expect(409)
                    .end(done);
            });
        });
    });

     

    index.js 코드 추가

    app.put('/users/:id', (req, res) => {
        const id = parseInt(req.params.id, 10);
        if(Number.isNaN(id)) return res.status(400).end();
    
        const name = req.body.name;     // name을 받는 부분
        if(!name) return res.status(400).end();
    
        const isConflict = users.filter(user => user.name === name).length;
        if(isConflict) return res.status(409).end();
    
        const user = users.filter(user=> user.id === id)[0];    // 유저를 찾는 부분
        if(!user) return res.status(404).end();
    
    
        user.name = name;
    
        res.json(user);
    })

     

    실행 결과

    댓글

Designed by Tistory.