extracting base class for tests, adding readEvent tests, fixing typed error in related operations, adding a file logger
This commit is contained in:
		@@ -38,18 +38,21 @@ function eventDataFactory(eventId, type, isJson, data, metadata) {
 | 
			
		||||
  return new EventData(eventId, type, isJson, data, metadata);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Exporting classes
 | 
			
		||||
module.exports.EventStoreConnection = require('./eventStoreConnection');
 | 
			
		||||
module.exports.UserCredentials = require('./systemData/userCredentials');
 | 
			
		||||
module.exports.EventData = EventData;
 | 
			
		||||
module.exports.PersistentSubscriptionSettings = require('./persistentSubscriptionSettings');
 | 
			
		||||
module.exports.SystemConsumerStrategies = require('./systemConsumerStrategies');
 | 
			
		||||
// Exporting errors
 | 
			
		||||
module.exports.WrongExpectedVersionError = require('./errors/wrongExpectedVersionError');
 | 
			
		||||
module.exports.StreamDeletedError = require('./errors/streamDeletedError');
 | 
			
		||||
module.exports.AccessDeniedError = require('./errors/accessDeniedError');
 | 
			
		||||
// Exporting enums/constants
 | 
			
		||||
module.exports.expectedVersion = expectedVersion;
 | 
			
		||||
module.exports.positions = positions;
 | 
			
		||||
module.exports.systemMetadata = require('./common/systemMetadata');
 | 
			
		||||
 | 
			
		||||
module.exports.eventReadStatus = results.EventReadStatus;
 | 
			
		||||
// Helper functions
 | 
			
		||||
module.exports.createConnection = module.exports.EventStoreConnection.create;
 | 
			
		||||
module.exports.createEventData = eventDataFactory;
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,9 @@ var InspectionDecision = require('../systemData/inspectionDecision');
 | 
			
		||||
var InspectionResult = require('./../systemData/inspectionResult');
 | 
			
		||||
var ClientMessage = require('../messages/clientMessage');
 | 
			
		||||
var results = require('../results');
 | 
			
		||||
var WrongExpectedVersionError = require('../errors/wrongExpectedVersionError');
 | 
			
		||||
var StreamDeletedError = require('../errors/streamDeletedError');
 | 
			
		||||
var AccessDeniedError = require('../errors/accessDeniedError');
 | 
			
		||||
 | 
			
		||||
var OperationBase = require('../clientOperations/operationBase');
 | 
			
		||||
 | 
			
		||||
@@ -38,17 +41,16 @@ DeleteStreamOperation.prototype._inspectResponse = function(response) {
 | 
			
		||||
    case ClientMessage.OperationResult.ForwardTimeout:
 | 
			
		||||
      return new InspectionResult(InspectionDecision.Retry, "ForwardTimeout");
 | 
			
		||||
    case ClientMessage.OperationResult.WrongExpectedVersion:
 | 
			
		||||
      var err = util.format("Delete stream failed due to WrongExpectedVersion. Stream: %s, Expected version: %d.", this._stream, this._expectedVersion);
 | 
			
		||||
      this.fail(new Error("Wrong expected version: " + err));
 | 
			
		||||
      this.fail(new WrongExpectedVersionError("Delete", this._stream, this._expectedVersion));
 | 
			
		||||
      return new InspectionResult(InspectionDecision.EndOperation, "WrongExpectedVersion");
 | 
			
		||||
    case ClientMessage.OperationResult.StreamDeleted:
 | 
			
		||||
      this.fail(new Error("Stream deleted: " + this._stream));
 | 
			
		||||
      this.fail(new StreamDeletedError(this._stream));
 | 
			
		||||
      return new InspectionResult(InspectionDecision.EndOperation, "StreamDeleted");
 | 
			
		||||
    case ClientMessage.OperationResult.InvalidTransaction:
 | 
			
		||||
      this.fail(new Error("Invalid transaction."));
 | 
			
		||||
      return new InspectionResult(InspectionDecision.EndOperation, "InvalidTransaction");
 | 
			
		||||
    case ClientMessage.OperationResult.AccessDenied:
 | 
			
		||||
      this.fail(new Error(util.format("Write access denied for stream '%s'.", this._stream)));
 | 
			
		||||
      this.fail(new AccessDeniedError("Delete", this._stream));
 | 
			
		||||
      return new InspectionResult(InspectionDecision.EndOperation, "AccessDenied");
 | 
			
		||||
    default:
 | 
			
		||||
      throw new Error(util.format("Unexpected OperationResult: %d.", response.result));
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,7 @@ var ClientMessage = require('../messages/clientMessage');
 | 
			
		||||
var InspectionResult = require('./../systemData/inspectionResult');
 | 
			
		||||
var InspectionDecision = require('../systemData/inspectionDecision');
 | 
			
		||||
var results = require('../results');
 | 
			
		||||
var AccessDeniedError = require('../errors/accessDeniedError');
 | 
			
		||||
 | 
			
		||||
var OperationBase = require('./operationBase');
 | 
			
		||||
 | 
			
		||||
@@ -42,7 +43,7 @@ ReadEventOperation.prototype._inspectResponse = function(response) {
 | 
			
		||||
      this.fail(new Error("Server error: " + response.error));
 | 
			
		||||
      return new InspectionResult(InspectionDecision.EndOperation, "Error");
 | 
			
		||||
    case ClientMessage.ReadEventCompleted.ReadEventResult.AccessDenied:
 | 
			
		||||
      this.fail(new Error(util.format("Read access denied for stream '%s'.", this._stream)));
 | 
			
		||||
      this.fail(new AccessDeniedError("Read", this._stream));
 | 
			
		||||
      return new InspectionResult(InspectionDecision.EndOperation, "AccessDenied");
 | 
			
		||||
    default:
 | 
			
		||||
      throw new Error(util.format("Unexpected ReadEventResult: %s.", response.result));
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ function FileLogger(filePath, append) {
 | 
			
		||||
 | 
			
		||||
function createLine(level, args, argsStartIndex) {
 | 
			
		||||
  var msg = util.format.apply(util, Array.prototype.slice.call(args, argsStartIndex));
 | 
			
		||||
  return util.format('%s %s - %s%s', new Date().toISOString(), level, msg, os.EOL);
 | 
			
		||||
  return util.format('%s %s - %s%s', new Date().toISOString().substr(11,12), level, msg, os.EOL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FileLogger.prototype.debug = function() {
 | 
			
		||||
 
 | 
			
		||||
@@ -111,7 +111,12 @@ module.exports = require("protobufjs").newBuilder({})['import']({
 | 
			
		||||
            "name": "ResolvedIndexedEvent",
 | 
			
		||||
            "fields": [
 | 
			
		||||
                {
 | 
			
		||||
                    "rule": "required",
 | 
			
		||||
                    /*
 | 
			
		||||
                     rule changed from required to optional
 | 
			
		||||
                     because protobufjs doesn't allow null value for required object
 | 
			
		||||
                     and in the case of a non-success result, event will be null
 | 
			
		||||
                    */
 | 
			
		||||
                    "rule": "optional",
 | 
			
		||||
                    "type": "EventRecord",
 | 
			
		||||
                    "name": "event",
 | 
			
		||||
                    "id": 1
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user