Example #1
0
        public async Task InitializeAsync_DataIsValid_PropertiesAreSetFromData()
        {
            // Arrange
            var model    = new LinkItemViewModel(null, new Mock <ILinkItemRepository>().Object, null, null, null);
            var linkItem = new LinkItem
            {
                ID            = 1,
                Info          = "some info",
                Link          = "http://link.com",
                Name          = "some name",
                Rank          = 6,
                LastUpdatedOn = DateTime.Now.AddDays(-5)
            };

            // Act
            await model.InitializeAsync(linkItem);

            // Assert
            Assert.Equal(linkItem.ID, model.Id);
            Assert.Equal(linkItem.Info, model.Info);
            Assert.Equal(linkItem.Link, model.Link);
            Assert.Equal(linkItem.Name, model.Name);
            Assert.Equal(linkItem.Rank, model.Rank);
            Assert.Equal(linkItem.LastUpdatedOn, model.LastUpdatedOn);
        }
Example #2
0
        public void CanSave_NameIsNull_IsFalse()
        {
            var model = new LinkItemViewModel(null, null, null, null, null);

            model.Link = "http://somelink.com";

            Assert.False(model.CanSave);
        }
Example #3
0
        public void CanSave_LinkIsNull_IsFalse()
        {
            var model = new LinkItemViewModel(null, null, null, null, null);

            model.Name = "some name";

            Assert.False(model.CanSave);
        }
Example #4
0
        public void CanSave_LinkIsInvalidUrl_IsFalse()
        {
            var model = new LinkItemViewModel(null, null, null, null, null);

            model.Name = "some name";
            model.Link = "somelink.com";

            Assert.False(model.CanSave);
        }
Example #5
0
        public void CanSave_LinkAndNameAreValid_IsTrue()
        {
            var model = new LinkItemViewModel(null, null, null, null, null);

            model.Name = "some name";
            model.Link = "http://somelink.com";

            Assert.True(model.CanSave);
        }
Example #6
0
        public async Task InitializeAsync_NewData_CannotSaveCannotDelete()
        {
            var model    = new LinkItemViewModel(null, new Mock <ILinkItemRepository>().Object, null, null, null);
            var linkItem = new LinkItem();

            await model.InitializeAsync(linkItem);

            Assert.False(model.CanSave);
            Assert.False(model.CanDelete);
        }
Example #7
0
        public void SettingName_NewValue_NotifiesPropertyChanged()
        {
            var model   = new LinkItemViewModel(null, null, null, null, null);
            var harness = new NotifyPropertyChangedHarness(model);

            model.Name = "some name";

            Assert.NotNull(harness.Changes);
            Assert.Single(harness.Changes);
            Assert.Equal(nameof(model.Name), harness.Changes[0]);
        }
Example #8
0
        public void SettingLink_NewValue_NotifiesPropertyChanged()
        {
            var model   = new LinkItemViewModel(null, null, null, null, null);
            var harness = new NotifyPropertyChangedHarness(model);

            model.Link = "http://link.com";

            Assert.NotNull(harness.Changes);
            Assert.Single(harness.Changes);
            Assert.Equal(nameof(model.Link), harness.Changes[0]);
        }
Example #9
0
        public void SettingInfo_SameValue_DoesNotNotifyPropertyChanged()
        {
            var model = new LinkItemViewModel(null, null, null, null, null);
            var info  = "some info";

            model.Info = info;
            var harness = new NotifyPropertyChangedHarness(model);

            model.Info = info;

            Assert.Empty(harness.Changes);
        }
Example #10
0
        public void SettingLink_SameValue_DoesNotNotifyPropertyChanged()
        {
            var model = new LinkItemViewModel(null, null, null, null, null);
            var link  = "http://link.com";

            model.Link = link;
            var harness = new NotifyPropertyChangedHarness(model);

            model.Link = link;

            Assert.Empty(harness.Changes);
        }
Example #11
0
        public void SettingName_SameValue_DoesNotNotifyPropertyChanged()
        {
            var model = new LinkItemViewModel(null, null, null, null, null);
            var name  = "My name";

            model.Name = name;
            var harness = new NotifyPropertyChangedHarness(model);

            model.Name = name;

            Assert.Empty(harness.Changes);
        }
Example #12
0
        public async Task <LinkItemViewModel> GetLinkItem(int linkId)
        {
            _sharedService.WriteLogs("GetLinkItem started by:" + _userSettings.UserName, true);

            try
            {
                var link = await _linkRepository.GetByIdAsync(linkId);

                Guard.Against.NullLink(linkId, link);

                var vm = new LinkItemViewModel()
                {
                    Id                      = link.Id,
                    Name                    = link.Name,
                    Url                     = link.Url,
                    Description             = link.Description,
                    IsAdminLink             = link.IsAdminLink,
                    IsCoordinatorLink       = link.IsCoordinatorLink,
                    IsTeacherLink           = link.IsTeacherLink,
                    Sequence                = link.Sequence,
                    YearId                  = link.YearId,
                    Alberta                 = link.Alberta.HasValue ? link.Alberta.Value : false,
                    BritishColumbia         = link.BritishColumbia.HasValue ? link.BritishColumbia.Value : false,
                    Manitoba                = link.Manitoba.HasValue ? link.Manitoba.Value : false,
                    NewBrunswick            = link.NewBrunswick.HasValue ? link.NewBrunswick.Value : false,
                    NewfoundlandandLabrador = link.NewfoundlandandLabrador.HasValue ? link.NewfoundlandandLabrador.Value : false,
                    NovaScotia              = link.NovaScotia.HasValue ? link.NovaScotia.Value : false,
                    Nunavut                 = link.Nunavut.HasValue ? link.Nunavut.Value : false,
                    Ontario                 = link.Ontario.HasValue ? link.Ontario.Value : false,
                    PrinceEdwardIsland      = link.PrinceEdwardIsland.HasValue ? link.PrinceEdwardIsland.Value : false,
                    Quebec                  = link.Quebec.HasValue ? link.Quebec.Value : false,
                    Saskatchewan            = link.Saskatchewan.HasValue ? link.Saskatchewan.Value : false,
                    YukonTerritory          = link.YukonTerritory.HasValue ? link.YukonTerritory.Value : false,
                    NorthwestTerritories    = link.NorthwestTerritories.HasValue ? link.NorthwestTerritories.Value : false,
                    CreatedDate             = link.CreatedDate,
                    CreatedBy               = link.CreatedBy,
                    ModifiedDate            = link.ModifiedDate,
                    ModifiedBy              = link.ModifiedBy
                };

                return(vm);
            }
            catch (Exception ex)
            {
                _sharedService.WriteLogs("GetLinkItem failed:" + ex.Message, false);

                var vm = new LinkItemViewModel();

                return(vm);
            }
        }
Example #13
0
        public async Task InitializeAsync_DataIsFromDatabase_IncrementsRank()
        {
            var model    = new LinkItemViewModel(null, new Mock <ILinkItemRepository>().Object, null, null, null);
            var rank     = 5;
            var linkItem = new LinkItem
            {
                ID   = 1,
                Rank = rank,
            };

            await model.InitializeAsync(linkItem);

            Assert.Equal(rank + 1, model.Rank);
        }
Example #14
0
        public async Task InitializeAsync_DataIsFromDatabase_CanSaveAndCanDelete()
        {
            var model    = new LinkItemViewModel(null, new Mock <ILinkItemRepository>().Object, null, null, null);
            var linkItem = new LinkItem
            {
                ID   = 1,
                Link = "http://link.com",
                Name = "some name",
            };

            await model.InitializeAsync(linkItem);

            Assert.True(model.CanSave);
            Assert.True(model.CanDelete);
        }
Example #15
0
        public async Task InitializeAsync_DataIdIsZero_DoesNotUpdateDatabase()
        {
            // Arrange
            var database = new Mock <ILinkItemRepository>();
            var model    = new LinkItemViewModel(null, database.Object, null, null, null);
            var linkItem = new LinkItem
            {
                ID = 0
            };

            // Act
            await model.InitializeAsync(linkItem);

            // Assert
            database.Verify(d => d.SaveItemAsync(linkItem), Times.Never);
        }
Example #16
0
        public async Task InitializeAsync_DataIsNotValid_PropertiesAreNotSet()
        {
            // Arrange
            var model = new LinkItemViewModel(null, new Mock <ILinkItemRepository>().Object, null, null, null);

            // Act
            await model.InitializeAsync(null);

            // Assert
            Assert.Equal(default(int), model.Id);
            Assert.Equal(default(string), model.Info);
            Assert.Equal(default(string), model.Link);
            Assert.Equal(default(string), model.Name);
            Assert.Equal(default(int), model.Rank);
            Assert.Equal(default(DateTime), model.LastUpdatedOn);
        }
Example #17
0
        public async Task <int> CreateLinkAsync(LinkItemViewModel link)
        {
            _sharedService.WriteLogs("CreateLinkAsync started by:" + _userSettings.UserName, true);

            try
            {
                var _link = new Link();

                _link.Name                    = link.Name.Trim();
                _link.Url                     = link.Url.Trim();
                _link.Description             = string.IsNullOrEmpty(link.Description) ? null : link.Description.Trim();
                _link.IsAdminLink             = link.IsAdminLink;
                _link.IsCoordinatorLink       = link.IsCoordinatorLink;
                _link.IsTeacherLink           = link.IsTeacherLink;
                _link.Sequence                = link.Sequence;
                _link.YearId                  = link.YearId;
                _link.Alberta                 = link.Alberta;
                _link.BritishColumbia         = link.BritishColumbia;
                _link.Manitoba                = link.Manitoba;
                _link.NewBrunswick            = link.NewBrunswick;
                _link.NewfoundlandandLabrador = link.NewfoundlandandLabrador;
                _link.NovaScotia              = link.NovaScotia;
                _link.Nunavut                 = link.Nunavut;
                _link.Ontario                 = link.Ontario;
                _link.PrinceEdwardIsland      = link.PrinceEdwardIsland;
                _link.Quebec                  = link.Quebec;
                _link.Saskatchewan            = link.Saskatchewan;
                _link.YukonTerritory          = link.YukonTerritory;
                _link.NorthwestTerritories    = link.NorthwestTerritories;
                _link.CreatedDate             = DateTime.Now;
                _link.CreatedBy               = _userSettings.UserName;
                _link.ModifiedDate            = DateTime.Now;
                _link.ModifiedBy              = _userSettings.UserName;

                await _linkRepository.AddAsync(_link);

                return(_link.Id);
            }
            catch (Exception ex)
            {
                _sharedService.WriteLogs("CreateLinkAsync failed:" + ex.Message, false);
                return(0);
            }
        }