예제 #1
0
        public void TryReadRecord_MappingFailure_RecordNotReadAndFailureIsReturned()
        {
            var records = new string[]
            {
                "Line 1"
            };

            var fieldFailures = new FieldFailure[]
            {
                new FieldFailure()
                {
                    FieldName = "TestField",
                    Message   = "Field is invalid."
                }
            };

            var recordMapper = MockRepository.GenerateMock <IRecordMapper>();

            recordMapper.Expect(x => x.TryMap(
                                    Arg <object> .Is.Equal(records[0]),
                                    out Arg <object> .Out(null).Dummy,
                                    out Arg <IEnumerable <FieldFailure> > .Out(fieldFailures).Dummy))
            .Return(false)
            .Repeat.Once();

            using (var fileReader = new MockFileReader(records, recordMapper))
            {
                var couldBeRead = fileReader.TryReadRecord(out var record, out var failures);

                Assert.IsFalse(couldBeRead);
                Assert.AreEqual(fieldFailures[0], failures.Single());
            }

            recordMapper.VerifyAllExpectations();
        }
예제 #2
0
        public void Constructor_RecordIndexAndFieldFailuresAreProvided_PropertiesAreSet()
        {
            var recordIndex   = 1;
            var fieldFailures = new FieldFailure[0];
            var recordFailure = new RecordFailure(recordIndex, fieldFailures);

            Assert.AreEqual(recordIndex, recordFailure.RecordIndex);
            Assert.AreEqual(fieldFailures, recordFailure.FieldFailures);
        }
예제 #3
0
        public void Constructor_RecordAndWasSuccessfulAndFailuresAreProvided_AllPropertiesAreSet()
        {
            var recordIndex   = 1;
            var record        = new object();
            var wasSuccessful = true;
            var failures      = new FieldFailure[0];

            var recordEvaluatedEventArgs = new RecordEvaluatedEventArgs(recordIndex, record, wasSuccessful, failures);

            Assert.AreEqual(recordIndex, recordEvaluatedEventArgs.RecordIndex);
            Assert.AreEqual(record, recordEvaluatedEventArgs.Record);
            Assert.AreEqual(wasSuccessful, recordEvaluatedEventArgs.WasSuccessful);
            Assert.AreEqual(failures, recordEvaluatedEventArgs.Failures);
        }
예제 #4
0
        public void TryReadRecord_RecordMapperFailure_RecordIsNotReadAndFailureIsReturned()
        {
            var failure = new FieldFailure()
            {
                FieldName = nameof(Person.DateOfBirth),
                Message   = "Field is invalid."
            };

            var recordMapper = MockRepository.GenerateMock <IRecordMapper>();

            recordMapper.Stub(x => x.TryMap(
                                  Arg <object> .Is.Anything,
                                  out Arg <object> .Out(null).Dummy,
                                  out Arg <IEnumerable <FieldFailure> > .Out(new FieldFailure[] { failure }).Dummy))
            .Return(false);

            var person = Person.Faker.Generate();

            using (var testDb = new TestDb(DatabaseReaderTests.DbConnectionString))
            {
                testDb.Insert("dbo.Person", true, person);

                var connection = new SqlConnection(DatabaseReaderTests.DbConnectionString);
                var command    = new SqlCommand("SELECT * FROM dbo.Person", connection);

                using (var databaseReader = new DatabaseReader(recordMapper, command))
                {
                    databaseReader.Open();

                    var couldReadRecord = databaseReader.TryReadRecord(out var record, out var failures);

                    Assert.IsFalse(couldReadRecord);
                    Assert.AreEqual(failure, failures.Single());
                }
            }
        }