<commit_before>/* eslint-disable
    handle-callback-err,
    max-len,
    no-return-assign,
    node/no-deprecated-api,
*/
// TODO: This file was created by bulk-decaffeinate.
// Fix any style issues and re-enable lint.
/*
 * decaffeinate suggestions:
 * DS102: Remove unnecessary code created because of implicit returns
 * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
 */
const { ObjectId } = require('../../../app/js/mongojs')
const { expect } = require('chai')

const ChatClient = require('./helpers/ChatClient')
const ChatApp = require('./helpers/ChatApp')

describe('Sending a message', function() {
  before(done => ChatApp.ensureRunning(done))

  describe('globally', function() {
    before(function(done) {
      this.project_id = ObjectId().toString()
      this.user_id = ObjectId().toString()
      this.content = 'global message'
      return ChatClient.sendGlobalMessage(
        this.project_id,
        this.user_id,
        this.content,
        (error, response, body) => {
          expect(error).to.be.null
          expect(response.statusCode).to.equal(201)
          expect(body.content).to.equal(this.content)
          expect(body.user_id).to.equal(this.user_id)
          expect(body.room_id).to.equal(this.project_id)
          return done()
        }
      )
    })

    return it('should then list the message in the project messages', function(done) {
      return ChatClient.getGlobalMessages(
        this.project_id,
        (error, response, messages) => {
          expect(error).to.be.null
          expect(response.statusCode).to.equal(200)
          expect(messages.length).to.equal(1)
          expect(messages[0].content).to.equal(this.content)
          return done()
        }
      )
    })
  })

  describe('to a thread', function() {
    before(function(done) {
      this.project_id = ObjectId().toString()
      this.user_id = ObjectId().toString()
      this.thread_id = ObjectId().toString()
      this.content = 'thread message'
      return ChatClient.sendMessage(
        this.project_id,
        this.thread_id,
        this.user_id,
        this.content,
        (error, response, body) => {
          expect(error).to.be.null
          expect(response.statusCode).to.equal(201)
          expect(body.content).to.equal(this.content)
          expect(body.user_id).to.equal(this.user_id)
          expect(body.room_id).to.equal(this.project_id)
          return done()
        }
      )
    })

    it('should then list the message in the threads', function(done) {
      return ChatClient.getThreads(
        this.project_id,
        (error, response, threads) => {
          expect(error).to.be.null
          expect(response.statusCode).to.equal(200)
          expect(threads[this.thread_id].messages.length).to.equal(1)
          expect(threads[this.thread_id].messages[0].content).to.equal(
            this.content
          )
          return done()
        }
      )
    })

    return it('should not appear in the global messages', function(done) {
      return ChatClient.getGlobalMessages(
        this.project_id,
        (error, response, messages) => {
          expect(error).to.be.null
          expect(response.statusCode).to.equal(200)
          expect(messages.length).to.equal(0)
          return done()
        }
      )
    })
  })

  return describe('failure cases', function() {
    before(function() {
      this.project_id = ObjectId().toString()
      this.user_id = ObjectId().toString()
      return (this.thread_id = ObjectId().toString())
    })

    describe('with a malformed user_id', () =>
      it('should return a graceful error', function(done) {
        return ChatClient.sendMessage(
          this.project_id,
          this.thread_id,
          'malformed-user',
          'content',
          (error, response, body) => {
            expect(response.statusCode).to.equal(400)
            expect(body).to.equal('Invalid user_id')
            return done()
          }
        )
      }))

    describe('with a malformed project_id', () =>
      it('should return a graceful error', function(done) {
        return ChatClient.sendMessage(
          'malformed-project',
          this.thread_id,
          this.user_id,
          'content',
          (error, response, body) => {
            expect(response.statusCode).to.equal(400)
            expect(body).to.equal('Invalid project_id')
            return done()
          }
        )
      }))

    describe('with a malformed thread_id', () =>
      it('should return a graceful error', function(done) {
        return ChatClient.sendMessage(
          this.project_id,
          'malformed-thread-id',
          this.user_id,
          'content',
          (error, response, body) => {
            expect(response.statusCode).to.equal(400)
            expect(body).to.equal('Invalid thread_id')
            return done()
          }
        )
      }))

    describe('with no content', () =>
      it('should return a graceful error', function(done) {
        return ChatClient.sendMessage(
          this.project_id,
          this.thread_id,
          this.user_id,
          null,
          (error, response, body) => {
            expect(response.statusCode).to.equal(400)
            expect(body).to.equal('No content provided')
            return done()
          }
        )
      }))

    return describe('with very long content', () =>
      it('should return a graceful error', function(done) {
        const content = new Buffer(10240).toString('hex')
        return ChatClient.sendMessage(
          this.project_id,
          this.thread_id,
          this.user_id,
          content,
          (error, response, body) => {
            expect(response.statusCode).to.equal(400)
            expect(body).to.equal('Content too long (> 10240 bytes)')
            return done()
          }
        )
      }))
  })
})<commit_msg>[misc] fix prettier-eslint errors<commit_after>/* eslint-disable
    handle-callback-err,
    max-len,
    no-return-assign,
    node/no-deprecated-api,
*/
// TODO: This file was created by bulk-decaffeinate.
// Fix any style issues and re-enable lint.
/*
 * decaffeinate suggestions:
 * DS102: Remove unnecessary code created because of implicit returns
 * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
 */
const { ObjectId } = require('../../../app/js/mongojs')
const { expect } = require('chai')

const ChatClient = require('./helpers/ChatClient')
const ChatApp = require('./helpers/ChatApp')

describe('Sending a message', function() {
  before(function(done) {
    return ChatApp.ensureRunning(done)
  })

  describe('globally', function() {
    before(function(done) {
      this.project_id = ObjectId().toString()
      this.user_id = ObjectId().toString()
      this.content = 'global message'
      return ChatClient.sendGlobalMessage(
        this.project_id,
        this.user_id,
        this.content,
        (error, response, body) => {
          expect(error).to.be.null
          expect(response.statusCode).to.equal(201)
          expect(body.content).to.equal(this.content)
          expect(body.user_id).to.equal(this.user_id)
          expect(body.room_id).to.equal(this.project_id)
          return done()
        }
      )
    })

    return it('should then list the message in the project messages', function(done) {
      return ChatClient.getGlobalMessages(
        this.project_id,
        (error, response, messages) => {
          expect(error).to.be.null
          expect(response.statusCode).to.equal(200)
          expect(messages.length).to.equal(1)
          expect(messages[0].content).to.equal(this.content)
          return done()
        }
      )
    })
  })

  describe('to a thread', function() {
    before(function(done) {
      this.project_id = ObjectId().toString()
      this.user_id = ObjectId().toString()
      this.thread_id = ObjectId().toString()
      this.content = 'thread message'
      return ChatClient.sendMessage(
        this.project_id,
        this.thread_id,
        this.user_id,
        this.content,
        (error, response, body) => {
          expect(error).to.be.null
          expect(response.statusCode).to.equal(201)
          expect(body.content).to.equal(this.content)
          expect(body.user_id).to.equal(this.user_id)
          expect(body.room_id).to.equal(this.project_id)
          return done()
        }
      )
    })

    it('should then list the message in the threads', function(done) {
      return ChatClient.getThreads(
        this.project_id,
        (error, response, threads) => {
          expect(error).to.be.null
          expect(response.statusCode).to.equal(200)
          expect(threads[this.thread_id].messages.length).to.equal(1)
          expect(threads[this.thread_id].messages[0].content).to.equal(
            this.content
          )
          return done()
        }
      )
    })

    return it('should not appear in the global messages', function(done) {
      return ChatClient.getGlobalMessages(
        this.project_id,
        (error, response, messages) => {
          expect(error).to.be.null
          expect(response.statusCode).to.equal(200)
          expect(messages.length).to.equal(0)
          return done()
        }
      )
    })
  })

  return describe('failure cases', function() {
    before(function() {
      this.project_id = ObjectId().toString()
      this.user_id = ObjectId().toString()
      return (this.thread_id = ObjectId().toString())
    })

    describe('with a malformed user_id', function() {
      return it('should return a graceful error', function(done) {
        return ChatClient.sendMessage(
          this.project_id,
          this.thread_id,
          'malformed-user',
          'content',
          (error, response, body) => {
            expect(response.statusCode).to.equal(400)
            expect(body).to.equal('Invalid user_id')
            return done()
          }
        )
      })
    })

    describe('with a malformed project_id', function() {
      return it('should return a graceful error', function(done) {
        return ChatClient.sendMessage(
          'malformed-project',
          this.thread_id,
          this.user_id,
          'content',
          (error, response, body) => {
            expect(response.statusCode).to.equal(400)
            expect(body).to.equal('Invalid project_id')
            return done()
          }
        )
      })
    })

    describe('with a malformed thread_id', function() {
      return it('should return a graceful error', function(done) {
        return ChatClient.sendMessage(
          this.project_id,
          'malformed-thread-id',
          this.user_id,
          'content',
          (error, response, body) => {
            expect(response.statusCode).to.equal(400)
            expect(body).to.equal('Invalid thread_id')
            return done()
          }
        )
      })
    })

    describe('with no content', function() {
      return it('should return a graceful error', function(done) {
        return ChatClient.sendMessage(
          this.project_id,
          this.thread_id,
          this.user_id,
          null,
          (error, response, body) => {
            expect(response.statusCode).to.equal(400)
            expect(body).to.equal('No content provided')
            return done()
          }
        )
      })
    })

    return describe('with very long content', function() {
      return it('should return a graceful error', function(done) {
        const content = new Buffer(10240).toString('hex')
        return ChatClient.sendMessage(
          this.project_id,
          this.thread_id,
          this.user_id,
          content,
          (error, response, body) => {
            expect(response.statusCode).to.equal(400)
            expect(body).to.equal('Content too long (> 10240 bytes)')
            return done()
          }
        )
      })
    })
  })
})
{'fraction_non_alphanumeric': 0.12968515742128936, 'fraction_numerical': 0.0079960019990005, 'mean_word_length': 2.0763515244683575, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 31, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3629359', 'n_tokens_mistral': 3497, 'n_tokens_neox': 3397, 'n_words': 638}