示例#1
0
        public void TestThatDeltagereGetAppointmentUsersWhenMapDataHasBeenCalledAndMapRelationsHasNotBeenCalled()
        {
            IAftaleProxy sut = CreateSut();

            Assert.That(sut, Is.Not.Null);

            int             systemNo   = _fixture.Create <int>();
            int             calId      = _fixture.Create <int>();
            MySqlDataReader dataReader = CreateMySqlDataReader(systemNo, calId, subject: _fixture.Create <string>());

            ISystemProxy systemProxyMock = MockRepository.GenerateMock <ISystemProxy>();

            systemProxyMock.Stub(m => m.Nummer)
            .Return(systemNo)
            .Repeat.Any();
            IEnumerable <BrugeraftaleProxy> appointmentUserCollection = _fixture.CreateMany <BrugeraftaleProxy>(_random.Next(3, 7)).ToList();
            IMySqlDataProvider dataProvider = CreateMySqlDataProvider(systemProxyMock, appointmentUserCollection);

            sut.MapData(dataReader, dataProvider);

            IEnumerable <IBrugeraftale> result = sut.Deltagere;

            // ReSharper disable PossibleMultipleEnumeration
            Assert.That(result, Is.Not.Null);
            Assert.That(result, Is.Not.Empty);
            Assert.That(result, Is.EqualTo(appointmentUserCollection));
            // ReSharper restore PossibleMultipleEnumeration

            IDbCommandTestExecutor commandTester = new DbCommandTestBuilder("SELECT cm.SystemNo,cm.CalId,cm.UserId,cm.Properties,ca.Date,ca.FromTime,ca.ToTime,ca.Properties AS AppointmentProperties,ca.Subject,ca.Note,cu.UserName,cu.Name AS UserFullname,cu.Initials AS UserInitials,s.Title AS SystemTitle,s.Properties AS SystemProperties FROM Calmerge AS cm INNER JOIN Calapps AS ca ON ca.SystemNo=cm.SystemNo AND ca.CalId=cm.CalId INNER JOIN Calusers AS cu ON cu.SystemNo=cm.SystemNo AND cu.UserId=cm.UserId INNER JOIN Systems AS s ON s.SystemNo=cm.SystemNo WHERE cm.SystemNo=@systemNo AND cm.CalId=@calId")
                                                   .AddSmallIntDataParameter("@systemNo", systemNo, 2)
                                                   .AddIntDataParameter("@calId", calId, 8)
                                                   .Build();

            dataProvider.AssertWasCalled(m => m.GetCollection <BrugeraftaleProxy>(Arg <MySqlCommand> .Matches(cmd => commandTester.Run(cmd))), opt => opt.Repeat.Once());
        }
        /// <summary>
        /// Creates a mockup for the data provider which uses MySQL.
        /// </summary>
        /// <returns>Mockup for the data provider which uses MySQL.</returns>
        private IMySqlDataProvider CreateMySqlDataProvider(ISystemProxy systemProxy = null)
        {
            IMySqlDataProvider dataProviderMock = MockRepository.GenerateMock <IMySqlDataProvider>();

            dataProviderMock.Stub(m => m.Create(Arg <ISystemProxy> .Is.TypeOf, Arg <MySqlDataReader> .Is.Anything, Arg <string[]> .Is.Anything))
            .Return(systemProxy ?? MockRepository.GenerateMock <ISystemProxy>())
            .Repeat.Any();
            return(dataProviderMock);
        }
        public void TestAtMapDataKasterArgumentNullExceptionHvisDataProviderErNull()
        {
            ISystemProxy sut = CreateSut();

            Assert.That(sut, Is.Not.Null);

            ArgumentNullException result = Assert.Throws <ArgumentNullException>(() => sut.MapData(CreateMySqlDataReader(), null));

            TestHelper.AssertArgumentNullExceptionIsValid(result, "dataProvider");
        }
        public void TestThatCreateThrowsArgumentNullExceptionWhenColumnNameCollectionIsNull()
        {
            ISystemProxy sut = CreateSut();

            Assert.That(sut, Is.Not.Null);

            ArgumentNullException result = Assert.Throws <ArgumentNullException>(() => sut.Create(CreateMySqlDataReader(), CreateMySqlDataProvider(), null));

            TestHelper.AssertArgumentNullExceptionIsValid(result, "columnNameCollection");
        }
        public void TestThatCreateThrowsArgumentNullExceptionWhenDataProviderIsNull()
        {
            ISystemProxy sut = CreateSut();

            Assert.That(sut, Is.Not.Null);

            ArgumentNullException result = Assert.Throws <ArgumentNullException>(() => sut.Create(CreateMySqlDataReader(), null, "SystemNo", "Title", "Properties"));

            TestHelper.AssertArgumentNullExceptionIsValid(result, "dataProvider");
        }
        public void TestAtUniqueIdReturnererIdentifikation()
        {
            int nummer = _fixture.Create <int>();

            ISystemProxy sut = CreateSut(nummer);

            Assert.That(sut, Is.Not.Null);

            Assert.That(sut.UniqueId, Is.Not.Null);
            Assert.That(sut.UniqueId, Is.Not.Null);
            Assert.That(sut.UniqueId, Is.EqualTo(Convert.ToString(nummer)));
        }
        public void TestAtConstructorInitiererSystemProxy()
        {
            ISystemProxy sut = CreateSut();

            Assert.That(sut, Is.Not.Null);
            Assert.That(sut.Nummer, Is.EqualTo(0));
            Assert.That(sut.Titel, Is.Not.Null);
            Assert.That(sut.Titel, Is.Not.Empty);
            Assert.That(sut.Titel, Is.EqualTo(typeof(OSIntranet.Domain.Fælles.System).Name));
            Assert.That(sut.Properties, Is.EqualTo(0));
            Assert.That(sut.Kalender, Is.False);
        }
        public void TestAtCreateDeleteCommandReturnererSqlCommand()
        {
            int nummer = _fixture.Create <int>();

            ISystemProxy sut = CreateSut(nummer);

            Assert.That(sut, Is.Not.Null);

            new DbCommandTestBuilder("DELETE FROM Systems WHERE SystemNo=@systemNo")
            .AddSmallIntDataParameter("@systemNo", nummer, 2)
            .Build()
            .Run(sut.CreateDeleteCommand());
        }
示例#9
0
        /// <summary>
        /// Creates a mockup for the data provider which uses MySQL.
        /// </summary>
        /// <returns>Mockup for the data provider which uses MySQL.</returns>
        private IMySqlDataProvider CreateMySqlDataProvider(ISystemProxy systemProxy = null, IEnumerable <BrugeraftaleProxy> appointmentUserCollection = null)
        {
            IMySqlDataProvider dataProviderMock = MockRepository.GenerateMock <IMySqlDataProvider>();

            dataProviderMock.Stub(m => m.Clone())
            .Return(dataProviderMock)
            .Repeat.Any();
            dataProviderMock.Stub(m => m.Create(Arg <ISystemProxy> .Is.TypeOf, Arg <MySqlDataReader> .Is.Anything, Arg <string[]> .Is.Anything))
            .Return(systemProxy ?? MockRepository.GenerateMock <ISystemProxy>())
            .Repeat.Any();
            dataProviderMock.Stub(m => m.GetCollection <BrugeraftaleProxy>(Arg <MySqlCommand> .Is.Anything))
            .Return(appointmentUserCollection ?? _fixture.CreateMany <BrugeraftaleProxy>(_random.Next(3, 7)).ToList())
            .Repeat.Any();
            return(dataProviderMock);
        }
示例#10
0
        /// <summary>
        /// Creates a mockup for the data provider which uses MySQL.
        /// </summary>
        /// <returns>Mockup for the data provider which uses MySQL.</returns>
        private IMySqlDataProvider CreateMySqlDataProvider(ISystemProxy systemProxy = null, IAftaleProxy appointmentProxy = null, IBrugerProxy calenderUserProxy = null)
        {
            IMySqlDataProvider dataProviderMock = MockRepository.GenerateMock <IMySqlDataProvider>();

            dataProviderMock.Stub(m => m.Create(Arg <ISystemProxy> .Is.TypeOf, Arg <MySqlDataReader> .Is.Anything, Arg <string[]> .Is.Anything))
            .Return(systemProxy ?? MockRepository.GenerateMock <ISystemProxy>())
            .Repeat.Any();
            dataProviderMock.Stub(m => m.Create(Arg <IAftaleProxy> .Is.TypeOf, Arg <MySqlDataReader> .Is.Anything, Arg <string[]> .Is.Anything))
            .Return(appointmentProxy ?? MockRepository.GenerateMock <IAftaleProxy>())
            .Repeat.Any();
            dataProviderMock.Stub(m => m.Create(Arg <IBrugerProxy> .Is.TypeOf, Arg <MySqlDataReader> .Is.Anything, Arg <string[]> .Is.Anything))
            .Return(calenderUserProxy ?? MockRepository.GenerateMock <IBrugerProxy>())
            .Repeat.Any();
            return(dataProviderMock);
        }
        public void TestAtCreateUpdateCommandReturnererSqlCommand()
        {
            int    nummer     = _fixture.Create <int>();
            string title      = _fixture.Create <string>();
            int    properties = _fixture.Create <int>();

            ISystemProxy sut = CreateSut(nummer, title, properties);

            Assert.That(sut, Is.Not.Null);

            new DbCommandTestBuilder("UPDATE Systems SET Title=@title,Properties=@properties WHERE SystemNo=@systemNo")
            .AddSmallIntDataParameter("@systemNo", nummer, 2)
            .AddVarCharDataParameter("@title", title, 50)
            .AddSmallIntDataParameter("@properties", properties, 5)
            .Build()
            .Run(sut.CreateUpdateCommand());
        }
        public void TestAtCreateInsertCommandReturnererSqlCommand()
        {
            int    nummer     = _fixture.Create <int>();
            string title      = _fixture.Create <string>();
            int    properties = _fixture.Create <int>();

            ISystemProxy sut = CreateSut(nummer, title, properties);

            Assert.That(sut, Is.Not.Null);

            new DbCommandTestBuilder("INSERT INTO Systems (SystemNo,Title,Properties) VALUES(@systemNo,@title,@properties)")
            .AddSmallIntDataParameter("@systemNo", nummer, 2)
            .AddVarCharDataParameter("@title", title, 50)
            .AddSmallIntDataParameter("@properties", properties, 5)
            .Build()
            .Run(sut.CreateInsertCommand());
        }
        /// <summary>
        /// Creates an instance of the calender user data proxy with values from the data reader.
        /// </summary>
        /// <param name="dataReader">Data reader from which column values should be read.</param>
        /// <param name="dataProvider">Data provider which supports the data reader.</param>>
        /// <param name="columnNameCollection">Collection of column names which should be read from the data reader.</param>
        /// <returns>Instance of the calender user proxy with values from the data reader.</returns>
        /// <exception cref="ArgumentException">Thrown when <paramref name="dataReader"/>, <paramref name="dataProvider"/> or <paramref name="columnNameCollection"/> is null.</exception>
        public virtual IBrugerProxy Create(MySqlDataReader dataReader, IDataProviderBase <MySqlDataReader, MySqlCommand> dataProvider, params string[] columnNameCollection)
        {
            ArgumentNullGuard.NotNull(dataReader, nameof(dataReader))
            .NotNull(dataProvider, nameof(dataProvider))
            .NotNull(columnNameCollection, nameof(columnNameCollection));

            ISystemProxy system = dataProvider.Create(new SystemProxy(), dataReader, columnNameCollection[4], columnNameCollection[5], columnNameCollection[6]);

            return(new BrugerProxy(
                       system,
                       GetUserId(dataReader, columnNameCollection[0]),
                       GetInitials(dataReader, columnNameCollection[1]),
                       GetName(dataReader, columnNameCollection[2]))
            {
                UserName = GetUserName(dataReader, columnNameCollection[3])
            });
        }
        /// <summary>
        /// Creates an instance of the appointment data proxy with values from the data reader.
        /// </summary>
        /// <param name="dataReader">Data reader from which column values should be read.</param>
        /// <param name="dataProvider">Data provider which supports the data reader.</param>>
        /// <param name="columnNameCollection">Collection of column names which should be read from the data reader.</param>
        /// <returns>Instance of the appointment proxy with values from the data reader.</returns>
        /// <exception cref="ArgumentException">Thrown when <paramref name="dataReader"/>, <paramref name="dataProvider"/> or <paramref name="columnNameCollection"/> is null.</exception>
        public virtual IAftaleProxy Create(MySqlDataReader dataReader, IDataProviderBase <MySqlDataReader, MySqlCommand> dataProvider, params string[] columnNameCollection)
        {
            ArgumentNullGuard.NotNull(dataReader, nameof(dataReader))
            .NotNull(dataProvider, nameof(dataProvider))
            .NotNull(columnNameCollection, nameof(columnNameCollection));

            DateTime fromDate = GetAppointmentDate(dataReader, columnNameCollection[1]);

            ISystemProxy systemProxy = dataProvider.Create(new SystemProxy(), dataReader, columnNameCollection[7], columnNameCollection[8], columnNameCollection[9]);

            return(new AftaleProxy(
                       systemProxy,
                       GetAppointmentIdentifier(dataReader, columnNameCollection[0]),
                       fromDate.Add(GetAppointmentTime(dataReader, columnNameCollection[2])),
                       fromDate.Add(GetAppointmentTime(dataReader, columnNameCollection[3])),
                       GetAppointmentSubject(dataReader, columnNameCollection[5]),
                       GetAppointmentProperties(dataReader, columnNameCollection[4]),
                       dataProvider)
            {
                Notat = GetAppointmentNote(dataReader, columnNameCollection[6])
            });
        }
        public void TestThatCreateCreatesSystemProxy(bool hasProperties)
        {
            ISystemProxy sut = CreateSut();

            Assert.That(sut, Is.Not.Null);

            int             number     = _fixture.Create <int>();
            string          title      = _fixture.Create <string>();
            int?            properties = hasProperties ? _fixture.Create <int>() : (int?)null;
            MySqlDataReader dataReader = CreateMySqlDataReader(number, title, properties);

            ISystemProxy result = sut.Create(dataReader, CreateMySqlDataProvider(), "SystemNo", "Title", "Properties");

            Assert.That(result, Is.Not.Null);
            Assert.That(result.Nummer, Is.EqualTo(number));
            Assert.That(result.Titel, Is.EqualTo(title));
            if (hasProperties)
            {
                Assert.That(result.Properties, Is.EqualTo(properties));
            }
            else
            {
                Assert.That(result.Properties, Is.EqualTo(0));
            }

            dataReader.AssertWasCalled(m => m.GetInt32(Arg <string> .Is.Equal("SystemNo")), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.GetString(Arg <string> .Is.Equal("Title")), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.GetOrdinal(Arg <string> .Is.Equal("Properties")), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.IsDBNull(Arg <int> .Is.Equal(2)), opt => opt.Repeat.Once());
            if (hasProperties)
            {
                dataReader.AssertWasCalled(m => m.GetInt32(Arg <string> .Is.Equal("Properties")), opt => opt.Repeat.Once());
            }
            else
            {
                dataReader.AssertWasNotCalled(m => m.GetInt32(Arg <string> .Is.Equal("Properties")));
            }
        }
示例#16
0
        public void TestThatCreateCreatesCalenderUserProxy(bool hasProperties, bool hasNote)
        {
            IAftaleProxy sut = CreateSut();

            Assert.That(sut, Is.Not.Null);

            int             systemNo     = _fixture.Create <int>();
            int             calId        = _fixture.Create <int>();
            DateTime        fromDateTime = DateTime.Today.AddDays(_random.Next(1, 30)).AddHours(_random.Next(8, 16)).AddMinutes(_random.Next(0, 3) * 15);
            TimeSpan        duration     = new TimeSpan(0, 0, _random.Next(1, 3) * 15, 0);
            int?            properties   = hasProperties ? _fixture.Create <int>() : (int?)null;
            string          subject      = _fixture.Create <string>();
            string          note         = hasNote ? _fixture.Create <string>() : null;
            MySqlDataReader dataReader   = CreateMySqlDataReader(systemNo, calId, fromDateTime, duration, properties, subject, note);

            ISystemProxy       systemProxy  = MockRepository.GenerateMock <ISystemProxy>();
            IMySqlDataProvider dataProvider = CreateMySqlDataProvider(systemProxy);

            IAftaleProxy result = sut.Create(dataReader, dataProvider, "CalId", "Date", "FromTime", "ToTime", "Properties", "Subject", "Note", "SystemNo", "SystemTitle", "SystemProperties");

            Assert.That(result.System, Is.Not.Null);
            Assert.That(result.System, Is.EqualTo(systemProxy));
            Assert.That(result.Id, Is.EqualTo(calId));
            Assert.That(result.FraTidspunkt, Is.EqualTo(fromDateTime));
            Assert.That(result.TilTidspunkt, Is.EqualTo(fromDateTime.Add(duration)));
            if (hasProperties)
            {
                Assert.That(result.Properties, Is.EqualTo(properties));
            }
            else
            {
                Assert.That(result.Properties, Is.EqualTo(0));
            }
            Assert.That(result.Emne, Is.Not.Null);
            Assert.That(result.Emne, Is.Not.Empty);
            Assert.That(result.Emne, Is.EqualTo(subject));
            if (hasNote)
            {
                Assert.That(result.Notat, Is.Not.Null);
                Assert.That(result.Notat, Is.Not.Empty);
                Assert.That(result.Notat, Is.EqualTo(note));
            }
            else
            {
                Assert.That(result.Notat, Is.Null);
            }

            dataReader.AssertWasCalled(m => m.GetInt32(Arg <string> .Is.Equal("CalId")), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.GetMySqlDateTime(Arg <string> .Is.Equal("Date")), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.GetTimeSpan(Arg <string> .Is.Equal("FromTime")), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.GetTimeSpan(Arg <string> .Is.Equal("ToTime")), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.GetOrdinal(Arg <string> .Is.Equal("Properties")), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.IsDBNull(Arg <int> .Is.Equal(5)), opt => opt.Repeat.Once());
            if (hasProperties)
            {
                dataReader.AssertWasCalled(m => m.GetInt32(Arg <string> .Is.Equal("Properties")), opt => opt.Repeat.Once());
            }
            else
            {
                dataReader.AssertWasNotCalled(m => m.GetInt32(Arg <string> .Is.Equal("Properties")));
            }
            dataReader.AssertWasCalled(m => m.GetOrdinal(Arg <string> .Is.Equal("Subject")), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.IsDBNull(Arg <int> .Is.Equal(6)), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.GetString(Arg <string> .Is.Equal("Subject")), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.GetOrdinal(Arg <string> .Is.Equal("Note")), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.IsDBNull(Arg <int> .Is.Equal(7)), opt => opt.Repeat.Once());
            if (hasNote)
            {
                dataReader.AssertWasCalled(m => m.GetString(Arg <string> .Is.Equal("Note")), opt => opt.Repeat.Once());
            }
            else
            {
                dataReader.AssertWasNotCalled(m => m.GetString(Arg <string> .Is.Equal("Note")));
            }

            dataProvider.AssertWasCalled(m => m.Create(
                                             Arg <ISystemProxy> .Is.TypeOf,
                                             Arg <MySqlDataReader> .Is.Equal(dataReader),
                                             Arg <string[]> .Matches(e => e != null && e.Length == 3 &&
                                                                     e[0] == "SystemNo" &&
                                                                     e[1] == "SystemTitle" &&
                                                                     e[2] == "SystemProperties")),
                                         opt => opt.Repeat.Once());
            dataProvider.AssertWasNotCalled(m => m.Clone());
        }
        public void TestThatCreateCreatesCalenderUserProxy(bool hasUserName)
        {
            IBrugerProxy sut = CreateSut();

            Assert.That(sut, Is.Not.Null);

            int             systemNo   = _fixture.Create <int>();
            int             userId     = _fixture.Create <int>();
            string          userName   = hasUserName ? _fixture.Create <string>() : null;
            string          name       = _fixture.Create <string>();
            string          initials   = _fixture.Create <string>();
            MySqlDataReader dataReader = CreateMySqlDataReader(systemNo, userId, userName, name, initials);

            ISystemProxy       systemProxy  = MockRepository.GenerateMock <ISystemProxy>();
            IMySqlDataProvider dataProvider = CreateMySqlDataProvider(systemProxy);

            IBrugerProxy result = sut.Create(dataReader, dataProvider, "UserId", "Initials", "Name", "UserName", "SystemNo", "Title", "Properties");

            Assert.That(result, Is.Not.Null);
            Assert.That(result.System, Is.Not.Null);
            Assert.That(result.System, Is.EqualTo(systemProxy));
            Assert.That(result.Id, Is.EqualTo(userId));
            if (hasUserName)
            {
                Assert.That(result.UserName, Is.Not.Null);
                Assert.That(result.UserName, Is.Not.Empty);
                Assert.That(result.UserName, Is.EqualTo(userName));
            }
            else
            {
                Assert.That(result.UserName, Is.Null);
            }
            Assert.That(result.Navn, Is.Not.Null);
            Assert.That(result.Navn, Is.Not.Empty);
            Assert.That(result.Navn, Is.EqualTo(name));
            Assert.That(result.Initialer, Is.Not.Null);
            Assert.That(result.Initialer, Is.Not.Empty);
            Assert.That(result.Initialer, Is.EqualTo(initials));

            dataReader.AssertWasCalled(m => m.GetInt32(Arg <string> .Is.Equal("UserId")), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.GetOrdinal(Arg <string> .Is.Equal("UserName")), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.IsDBNull(Arg <int> .Is.Equal(2)), opt => opt.Repeat.Once());
            if (hasUserName)
            {
                dataReader.AssertWasCalled(m => m.GetString(Arg <string> .Is.Equal("UserName")), opt => opt.Repeat.Once());
            }
            else
            {
                dataReader.AssertWasNotCalled(m => m.GetString(Arg <string> .Is.Equal("UserName")));
            }
            dataReader.AssertWasCalled(m => m.GetString(Arg <string> .Is.Equal("Name")), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.GetString(Arg <string> .Is.Equal("Initials")), opt => opt.Repeat.Once());

            dataProvider.AssertWasCalled(m => m.Create(
                                             Arg <ISystemProxy> .Is.TypeOf,
                                             Arg <MySqlDataReader> .Is.Equal(dataReader),
                                             Arg <string[]> .Matches(e => e != null && e.Length == 3 &&
                                                                     e[0] == "SystemNo" &&
                                                                     e[1] == "Title" &&
                                                                     e[2] == "Properties")),
                                         opt => opt.Repeat.Once());
        }
示例#18
0
 public SafeSystemProxy(ILogger logger, ISystemProxy proxy)
 {
     _logger = logger;
     _proxy  = proxy;
 }
 public SystemProxyNotification(ISystemProxy proxy, IDialogs dialogs)
 {
     _proxy   = proxy;
     _dialogs = dialogs;
 }
示例#20
0
        public void TestAtMapDataMapperBrugeraftaleProxy(bool hasProperties)
        {
            IBrugeraftaleProxy sut = CreateSut();

            Assert.That(sut, Is.Not.Null);

            int             systemNo   = _fixture.Create <int>();
            int             calId      = _fixture.Create <int>();
            int             userId     = _fixture.Create <int>();
            int?            properties = hasProperties ? _fixture.Create <int>() : (int?)null;
            MySqlDataReader dataReader = CreateMySqlDataReader(systemNo, calId, userId, properties);

            ISystemProxy       systemProxy       = MockRepository.GenerateMock <ISystemProxy>();
            IAftaleProxy       appointmentProxy  = MockRepository.GenerateMock <IAftaleProxy>();
            IBrugerProxy       calenderUserProxy = MockRepository.GenerateMock <IBrugerProxy>();
            IMySqlDataProvider dataProvider      = CreateMySqlDataProvider(systemProxy, appointmentProxy, calenderUserProxy);

            sut.MapData(dataReader, dataProvider);

            Assert.That(sut.System, Is.Not.Null);
            Assert.That(sut.System, Is.EqualTo(systemProxy));
            Assert.That(sut.Aftale, Is.Not.Null);
            Assert.That(sut.Aftale, Is.EqualTo(appointmentProxy));
            Assert.That(sut.Bruger, Is.Not.Null);
            Assert.That(sut.Bruger, Is.EqualTo(calenderUserProxy));
            if (hasProperties)
            {
                Assert.That(sut.Properties, Is.EqualTo(properties));
            }
            else
            {
                Assert.That(sut.Properties, Is.EqualTo(0));
            }

            dataReader.AssertWasCalled(m => m.GetOrdinal(Arg <string> .Is.Equal("Properties")), opt => opt.Repeat.Once());
            dataReader.AssertWasCalled(m => m.IsDBNull(Arg <int> .Is.Equal(3)), opt => opt.Repeat.Once());
            if (hasProperties)
            {
                dataReader.AssertWasCalled(m => m.GetInt32(Arg <string> .Is.Equal("Properties")), opt => opt.Repeat.Once());
            }
            else
            {
                dataReader.AssertWasNotCalled(m => m.GetInt32(Arg <string> .Is.Equal("Properties")));
            }

            dataProvider.AssertWasCalled(m => m.Create(
                                             Arg <ISystemProxy> .Is.TypeOf,
                                             Arg <MySqlDataReader> .Is.Equal(dataReader),
                                             Arg <string[]> .Matches(e => e != null && e.Length == 3 &&
                                                                     e[0] == "SystemNo" &&
                                                                     e[1] == "SystemTitle" &&
                                                                     e[2] == "SystemProperties")),
                                         opt => opt.Repeat.Once());
            dataProvider.AssertWasCalled(m => m.Create(
                                             Arg <IAftaleProxy> .Is.TypeOf,
                                             Arg <MySqlDataReader> .Is.Equal(dataReader),
                                             Arg <string[]> .Matches(e => e != null && e.Length == 10 &&
                                                                     e[0] == "CalId" &&
                                                                     e[1] == "Date" &&
                                                                     e[2] == "FromTime" &&
                                                                     e[3] == "ToTime" &&
                                                                     e[4] == "AppointmentProperties" &&
                                                                     e[5] == "Subject" &&
                                                                     e[6] == "Note" &&
                                                                     e[7] == "SystemNo" &&
                                                                     e[8] == "SystemTitle" &&
                                                                     e[9] == "SystemProperties")),
                                         opt => opt.Repeat.Once());
            dataProvider.AssertWasCalled(m => m.Create(
                                             Arg <IBrugerProxy> .Is.TypeOf,
                                             Arg <MySqlDataReader> .Is.Equal(dataReader),
                                             Arg <string[]> .Matches(e => e != null && e.Length == 7 &&
                                                                     e[0] == "UserId" &&
                                                                     e[1] == "UserInitials" &&
                                                                     e[2] == "UserFullname" &&
                                                                     e[3] == "UserName" &&
                                                                     e[4] == "SystemNo" &&
                                                                     e[5] == "SystemTitle" &&
                                                                     e[6] == "SystemProperties")),
                                         opt => opt.Repeat.Once());
        }