• 
      

    Fixed link to replying to other replies in the diff viewer

    Review Request #7926 — Created Jan. 30, 2016 and submitted

    Information

    Review Board
    release-2.5.x

    Reviewers

    On the diff page the list of comments doesn't differenciate between
    top-level comments and replies to those comments. Because reviewboard
    doesn't support replying to a reply of a comment, the "Reply" link on
    those reply comments would not work properly. This fix solves that problem
    by changing those reply links to reply to their parent comment.

    Manual Test:
    -Create a comment on a line on the diff viewer page for a review request.

    -Reply to that comment.

    -Go back to the diff viewer page and click the reply link of
    that reply comment.

    -Expected result is that it should go to the review page, scroll to,
    and open the reply editor for the parent comment of that reply.

    -Jasmine js test suite passed
    -Reviewboard unit test suite passed
    -2 new tests added to the js test suit

    Description From Last Updated

    Needs a trailing comma after the last entry (we do this so that if we end up adding another entry …

    mike_conleymike_conley

    Let's call this reply_to_id, for consistency.

    chipx86chipx86

    This one should be comment-list-reply-action. That will make your queries easier, too.

    chipx86chipx86

    In our codebase, we only ever have one var statement per function, at the very top, one variable per line. …

    chipx86chipx86

    This made me notice a typo in the original object. Should be "Test User".

    chipx86chipx86

    As above, the var should go at the top of this function (with a blank line after it).

    chipx86chipx86

    Same here.

    chipx86chipx86

    This should be formatted as: expect(/*...*/) .toContain(/*...*/)

    brenniebrennie

    Single quotes. Also, this should be formatted as: expect(/*...*/) .toContain(/*...*/);

    brenniebrennie

    Same here.

    brenniebrennie

    We don't usually put trailing comments.

    brenniebrennie

    Since you're doing $commentsList.find(selector) multiple times, it would be better to do: var $replies; editor.set(/*...*/); dlg.open(); $replies = $commentList.find(selector); expect($replies[0].href).toContain(/*...*/); …

    brenniebrennie

    We use single quotes.

    brenniebrennie

    Same here.

    brenniebrennie

    Can also probably build the target string ahead of time, too.

    brenniebrennie
    reviewbot
    1. Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/context.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/commentDialogView.js
      
      
      
      Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/context.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/commentDialogView.js
      
      
    2. 
        
    imadueme
    1. 
        
    2. reviewboard/reviews/context.py (Diff revision 1)
       
       

      This is a test message. Please ignore.

      1. This is a test reply message. Please ignore.

      2. (Gotcha - though, in the future, if you want to do testing stuff, check out http://demo.reviewboard.org)

    3. 
        
    chipx86
    1. Something that's important when writing commit/review request descriptions is to tell the reviewer the story of your change. Assume that the person reading it may be reading it 3 years from now, and may have no knowledge of what you did or why. Then go from there.

      The summary should be a clear, concise thing about what you did: "Fixed the link for replying to other replies in the diff viewer."

      Then tell the story in the description of what was wrong before and what you've done to address it. Not all the technical details, but the higher-level stuff.

      See https://www.reviewboard.org/docs/codebase/dev/writing-good-descriptions/ for examples.

    2. 
        
    mike_conley
    1. Looking good! Can you please update the bug number in this review request?

    2. reviewboard/reviews/context.py (Diff revision 1)
       
       
      Show all issues

      Needs a trailing comma after the last entry (we do this so that if we end up adding another entry to the end of this list, we don't have to add the comma to the previous entry which updates blame on that line.

      Also, I'm not 100% sure, but doesn't this default to None already if no relationship is set? If so, we can probably just rewrite this as:

      ...
      'reply_to': comment.reply_to_id,
      
      1. That's correct, it will default to None.

    3. 
        
    chipx86
    1. This is also going to need unit tests that check for the two possibilities: A reply to ID, or a review ID.

      This would live in js/views/tests/commentDialogViewTests.js. You can see where we have a describe('Other published comments list', ...) section, which already does a few things. You'd add new tests that verify the links for both types of comments.

      By having this, we ensure that this can't break down the road without us noticing.

    2. 
        
    imadueme
    imadueme
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/context.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/commentDialogView.js
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/context.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/commentDialogView.js
      
      
    2. 
        
    chipx86
    1. Almost! The bug number actually isn't useful in either the summary or the description. It should go in the bugs field. That will automatically be placed in the commit message when landing.

      The description should also wrap at 80 characters, like our source code. It's best to compose this in your commit message, using your editor to ensure the proper width, and use that for the review request description. The summary/description in the review request will be used as-is in the commit message.

      1. Also, please don't forget to close the issue I opened in my earlier review - that way. Open issues make reviewers antsy. :)

    2. 
        
    imadueme
    imadueme
    imadueme
    reviewbot
    1. Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/context.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/tests/commentDialogViewTests.js
          reviewboard/static/rb/js/views/commentDialogView.js
      
      
      
      Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/context.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/tests/commentDialogViewTests.js
          reviewboard/static/rb/js/views/commentDialogView.js
      
      
    2. 
        
    chipx86
    1. 
        
    2. reviewboard/reviews/context.py (Diff revision 3)
       
       
      Show all issues

      Let's call this reply_to_id, for consistency.

    3. Show all issues

      This one should be comment-list-reply-action. That will make your queries easier, too.

    4. Show all issues

      In our codebase, we only ever have one var statement per function, at the very top, one variable per line. So:

      var comment,
          commentReply;
      
    5. Show all issues

      This made me notice a typo in the original object. Should be "Test User".

    6. Show all issues

      As above, the var should go at the top of this function (with a blank line after it).

    7. Show all issues

      Same here.

    8. 
        
    imadueme
    imadueme
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/context.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/tests/commentDialogViewTests.js
          reviewboard/static/rb/js/views/commentDialogView.js
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/context.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/tests/commentDialogViewTests.js
          reviewboard/static/rb/js/views/commentDialogView.js
      
      
    2. 
        
    imadueme
    imadueme
    brennie
    1. 
        
    2. Show all issues

      This should be formatted as:

      expect(/*...*/)
          .toContain(/*...*/)
      
    3. Show all issues

      Single quotes.

      Also, this should be formatted as:

      expect(/*...*/)
          .toContain(/*...*/);
      
    4. Show all issues

      Same here.

    5. Show all issues

      We don't usually put trailing comments.

    6. Show all issues

      Since you're doing $commentsList.find(selector) multiple times, it would be better to do:

      var $replies;
      
      editor.set(/*...*/);
      dlg.open();
      
      $replies = $commentList.find(selector);
      
      expect($replies[0].href).toContain(/*...*/);
      expect($replies[1].href).toContain(/*...*/);
      

      We should also probably do:

      expect($replies.length).toEqual(2);
      
    7. Show all issues

      We use single quotes.

    8. Show all issues

      Same here.

    9. Show all issues

      Can also probably build the target string ahead of time, too.

    10. 
        
    imadueme
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/context.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/tests/commentDialogViewTests.js
          reviewboard/static/rb/js/views/commentDialogView.js
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/context.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/tests/commentDialogViewTests.js
          reviewboard/static/rb/js/views/commentDialogView.js
      
      
    2. 
        
    imadueme
    david
    1. Ship It!
    2. 
        
    imadueme
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-2.5.x (2224eff)