public void ProcessRecord_Rules_True_Gives_Status_Accepted()
        {
            //Arrange
            var unprocessed = new UnprocessedModel();

            rulesMock.Setup(x => x.Do(It.IsAny <UnprocessedModel>())).Returns(true);
            var sut = new RecordProcessor <UnprocessedModel, ProcessedModel>(rulesMock.Object);

            //Act
            var result = sut.ProcessRecord(unprocessed);

            //Assert
            Assert.AreEqual(Status.Accepted, result.RecordStatus);
        }
        public void ProcessRecord_Maps_Processed_Record()
        {
            //Arrange
            var unprocessed = new UnprocessedModel
            {
                Str    = "twinkle, twinkle little bat",
                Number = 42
            };

            rulesMock.Setup(x => x.Do(It.IsAny <UnprocessedModel>())).Returns(true);
            var sut = new RecordProcessor <UnprocessedModel, ProcessedModel>(rulesMock.Object);

            //Act
            var result = sut.ProcessRecord(unprocessed);

            //Assert
            Assert.AreEqual(unprocessed.Number, result.Number);
            Assert.AreEqual(unprocessed.Str, result.Str);
        }
        public void ProcessRecord_Event_Is_Raised_With_Processed_Model()
        {
            //Arrange
            ProcessedModel processed = null;

            var unprocessed = new UnprocessedModel
            {
                Str    = "A long time ago, in a galaxy far, far away",
                Number = 0.01
            };

            rulesMock.Setup(x => x.Do(It.IsAny <UnprocessedModel>())).Returns(true);
            var sut = new RecordProcessor <UnprocessedModel, ProcessedModel>(rulesMock.Object);

            sut.RecordReceivedEvent += (model) => processed = model;

            //Act
            sut.ProcessRecord(unprocessed);

            //Assert
            Assert.AreEqual(Status.Accepted, processed.RecordStatus);
            Assert.AreEqual(unprocessed.Number, processed.Number);
            Assert.AreEqual(unprocessed.Str, processed.Str);
        }