Skip to content

Instantly share code, notes, and snippets.

@jjhop
Created January 29, 2018 13:08
Show Gist options
  • Save jjhop/fc0c6663119bc3d4c30d4703213f18fb to your computer and use it in GitHub Desktop.
Save jjhop/fc0c6663119bc3d4c30d4703213f18fb to your computer and use it in GitHub Desktop.
class InputDataWorkerSpecification extends Specification {
def "InputDataWorker#onMessage should consume message when dataDAO works properly"() {
given:
def dataDao = Mock(DataDAO.class)
def message = Mock(Message.class)
message.getBody() >> '528.;21.033333;d5252ccd-4312-473e-a974-65e707fa432f'
message.getMessageProperties() >> { new MessageProperties() {{
setDeliveryTag(Long.MAX_VALUE)
}}}
def channel = Mock(Channel.class)
InputDataWorker worker = new InputDataWorker(dataDao)
when:
worker.onMessage(message, channel)
then:
1 * dataDao.save(_ as Data)
1 * channel.basicAck(Long.MAX_VALUE, false)
}
def "InputDataWorker#onMessage should not consume message and requeue it when dataDAO#save failed"() {
given:
def dataDao = Mock(DataDAO.class)
dataDao.save(_ as Data) >> { throw new DataAccessException("!") {{}} }
def message = Mock(Message.class)
message.getBody() >> '528.;21.033333;d5252ccd-4312-473e-a974-65e707fa432f'
message.getMessageProperties() >> { new MessageProperties() {{
setDeliveryTag(Long.MAX_VALUE)
}}}
def channel = Mock(Channel.class)
InputDataWorker worker = new InputDataWorker(dataDao)
when:
worker.onMessage(message, channel)
then:
1 * channel.basicReject(Long.MAX_VALUE, true)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment