+ open_note_with_comment = create(:note_with_comments)
+ assert_difference "NoteComment.count", 1 do
+ assert_no_difference "ActionMailer::Base.deliveries.size" do
+ post :comment, :params => { :id => open_note_with_comment.id, :text => "This is an additional comment", :format => "json" }
+ end
+ end
+ assert_response :success
+ js = ActiveSupport::JSON.decode(@response.body)
+ assert_not_nil js
+ assert_equal "Feature", js["type"]
+ assert_equal open_note_with_comment.id, js["properties"]["id"]
+ assert_equal "open", js["properties"]["status"]
+ assert_equal 2, js["properties"]["comments"].count
+ assert_equal "commented", js["properties"]["comments"].last["action"]
+ assert_equal "This is an additional comment", js["properties"]["comments"].last["text"]
+ assert_nil js["properties"]["comments"].last["user"]
+
+ get :show, :params => { :id => open_note_with_comment.id, :format => "json" }
+ assert_response :success
+ js = ActiveSupport::JSON.decode(@response.body)
+ assert_not_nil js
+ assert_equal "Feature", js["type"]
+ assert_equal open_note_with_comment.id, js["properties"]["id"]
+ assert_equal "open", js["properties"]["status"]
+ assert_equal 2, js["properties"]["comments"].count
+ assert_equal "commented", js["properties"]["comments"].last["action"]
+ assert_equal "This is an additional comment", js["properties"]["comments"].last["text"]
+ assert_nil js["properties"]["comments"].last["user"]
+
+ # Ensure that emails are sent to users
+ first_user = create(:user)
+ second_user = create(:user)
+ third_user = create(:user)
+
+ note_with_comments_by_users = create(:note) do |note|
+ create(:note_comment, :note => note, :author => first_user)
+ create(:note_comment, :note => note, :author => second_user)
+ end
+ assert_difference "NoteComment.count", 1 do
+ assert_difference "ActionMailer::Base.deliveries.size", 2 do
+ post :comment, :params => { :id => note_with_comments_by_users.id, :text => "This is an additional comment", :format => "json" }
+ end