/*
|
|
* node-rdkafka - Node.js wrapper for RdKafka C/C++ library
|
|
*
|
|
* Copyright (c) 2016 Blizzard Entertainment
|
|
*
|
|
* This software may be modified and distributed under the terms
|
|
* of the MIT license. See the LICENSE.txt file for details.
|
|
*/
|
|
|
|
var TopicPartition = require('../lib/topic-partition');
|
|
var Topic = require('../lib/topic');
|
|
|
|
var t = require('assert');
|
|
|
|
module.exports = {
|
|
'TopicPartition': {
|
|
'is a function': function() {
|
|
t.equal(typeof(TopicPartition), 'function');
|
|
},
|
|
'be constructable': function() {
|
|
var toppar = new TopicPartition('topic', 1, 0);
|
|
|
|
t.equal(toppar.topic, 'topic');
|
|
t.equal(toppar.offset, 0);
|
|
t.equal(toppar.partition, 1);
|
|
},
|
|
'be creatable using 0 as the partition': function() {
|
|
var toppar = new TopicPartition('topic', 0, 0);
|
|
|
|
t.equal(toppar.topic, 'topic');
|
|
t.equal(toppar.offset, 0);
|
|
t.equal(toppar.partition, 0);
|
|
},
|
|
'throw if partition is null or undefined': function() {
|
|
t.throws(function() {
|
|
var tp = new TopicPartition('topic', undefined, 0);
|
|
});
|
|
|
|
t.throws(function() {
|
|
var tp = new TopicPartition('topic', null, 0);
|
|
});
|
|
},
|
|
'sets offset to stored by default': function() {
|
|
var toppar = new TopicPartition('topic', 1);
|
|
|
|
t.equal(toppar.topic, 'topic');
|
|
t.equal(toppar.partition, 1);
|
|
t.equal(toppar.offset, Topic.OFFSET_STORED);
|
|
},
|
|
'sets offset to end if "end" is provided"': function() {
|
|
var toppar = new TopicPartition('topic', 1, 'end');
|
|
|
|
t.equal(toppar.topic, 'topic');
|
|
t.equal(toppar.partition, 1);
|
|
t.equal(toppar.offset, Topic.OFFSET_END);
|
|
},
|
|
'sets offset to end if "latest" is provided"': function() {
|
|
var toppar = new TopicPartition('topic', 1, 'latest');
|
|
|
|
t.equal(toppar.topic, 'topic');
|
|
t.equal(toppar.partition, 1);
|
|
t.equal(toppar.offset, Topic.OFFSET_END);
|
|
},
|
|
'sets offset to beginning if "beginning" is provided"': function() {
|
|
var toppar = new TopicPartition('topic', 1, 'beginning');
|
|
|
|
t.equal(toppar.topic, 'topic');
|
|
t.equal(toppar.partition, 1);
|
|
t.equal(toppar.offset, Topic.OFFSET_BEGINNING);
|
|
},
|
|
'sets offset to start if "beginning" is provided"': function() {
|
|
var toppar = new TopicPartition('topic', 1, 'beginning');
|
|
|
|
t.equal(toppar.topic, 'topic');
|
|
t.equal(toppar.partition, 1);
|
|
t.equal(toppar.offset, Topic.OFFSET_BEGINNING);
|
|
},
|
|
'sets offset to stored if "stored" is provided"': function() {
|
|
var toppar = new TopicPartition('topic', 1, 'stored');
|
|
|
|
t.equal(toppar.topic, 'topic');
|
|
t.equal(toppar.partition, 1);
|
|
t.equal(toppar.offset, Topic.OFFSET_STORED);
|
|
},
|
|
'throws when an invalid special offset is provided"': function() {
|
|
t.throws(function() {
|
|
var toppar = new TopicPartition('topic', 1, 'fake');
|
|
});
|
|
}
|
|
},
|
|
'TopicPartition.map': {
|
|
'is a function': function() {
|
|
t.equal(typeof(TopicPartition.map), 'function');
|
|
},
|
|
'converts offsets inside the array': function() {
|
|
var result = TopicPartition.map([{ topic: 'topic', partition: 1, offset: 'stored' }]);
|
|
var toppar = result[0];
|
|
|
|
t.equal(toppar.topic, 'topic');
|
|
t.equal(toppar.partition, 1);
|
|
t.equal(toppar.offset, Topic.OFFSET_STORED);
|
|
},
|
|
},
|
|
};
|