public void CopyTo_Sets_Foreign_Field()
        {
            // arrange
            var entity = TestHelper.CreateEntityWithId <Artist>(1);
            var artistStatisticValues = new ArtistStatisticValues();

            var entityCollection = new EntityCollection <ArtistStatisticValues>(entity, "AnotherArtist", "StatisticValues");

            // act
            entityCollection.CopyTo(new[] { artistStatisticValues }, 0);

            // assert
            Assert.Equal(artistStatisticValues.AnotherArtist, entity);
        }
        public void AddCollectionChangedItem_Prevents_Unneccessary_Changes(CollectionChangeType changeType)
        {
            // arrange
            var entity = TestHelper.CreateEntityWithId <Artist>(1);
            var propertyChangeTracker = new PropertyChangeTracker(entity);
            var oppositeChangeType    = changeType == CollectionChangeType.Added ? CollectionChangeType.Removed : CollectionChangeType.Added;
            var statisticValue        = new ArtistStatisticValues();

            // act
            propertyChangeTracker.AddCollectionChangedItem(new CollectionChangedItem("StatisticValues", statisticValue, changeType));
            propertyChangeTracker.AddCollectionChangedItem(new CollectionChangedItem("StatisticValues", statisticValue, oppositeChangeType));

            // assert
            Assert.False(propertyChangeTracker.HasChanged <Artist>(x => x.StatisticValues));
        }
        public void Add_Adds_Collection_Changed_Item()
        {
            // arrange
            var entity = TestHelper.CreateEntityWithId <Artist>(1);
            var artistStatisticValues = new ArtistStatisticValues();

            var entityCollection = new EntityCollection <ArtistStatisticValues>(entity, "AnotherArtist", "StatisticValues");

            TestHelper.SetupEntityMetadataServices();

            // act
            entityCollection.Add(artistStatisticValues);

            // assert
            Assert.True(entity.PropertyChangeTracker.HasChanged <Artist>(x => x.StatisticValues));
        }
        public void GetChildEntities_Returns_Expected_Entities_With_Cascade_SaveDelete()
        {
            // arrange
            var artist         = TestHelper.CreateEntityWithId <Artist>(1);
            var statisticValue = new ArtistStatisticValues();
            var anotherArtist  = new Artist();

            artist.AnotherArtist = anotherArtist;
            artist.StatisticValues.Add(statisticValue);

            // act
            var result = new EntityService().GetChildEntities(artist, Cascade.SaveDelete);

            // assert
            Assert.Single(result);
            Assert.Contains(result, x => x == artist);
        }
        public void RemoveAt_Removes_Foreign_Field()
        {
            // arrange
            var entity = TestHelper.CreateEntityWithId <Artist>(1);
            var artistStatisticValues = new ArtistStatisticValues();

            var entityCollection = new EntityCollection <ArtistStatisticValues>(entity, "SecondArtist", "StatisticValues")
            {
                artistStatisticValues
            };

            TestHelper.SetupEntityMetadataServices();

            // act
            entityCollection.RemoveAt(0);

            // assert
            Assert.Null(artistStatisticValues.SecondArtist);
        }
        public void Remove_Removes_Not_When_ReferenceField_Is_Mandatory()
        {
            // arrange
            var entity = TestHelper.CreateEntityWithId <Artist>(1);
            var artistStatisticValues = new ArtistStatisticValues();

            var entityCollection = new EntityCollection <ArtistStatisticValues>(entity, "AnotherArtist", "StatisticValues")
            {
                artistStatisticValues
            };

            TestHelper.SetupEntityMetadataServices();

            // act
            entityCollection.Remove(artistStatisticValues);

            // assert
            Assert.NotNull(artistStatisticValues.AnotherArtist);
        }
Example #7
0
        public void DiscardChanges_Work()
        {
            // arrange
            TestHelper.SetupEntityMetadataServices();

            var connectionMock = TestHelper.SetupMock <IConnection>();
            var session        = new Session(connectionMock.Object);
            var entity         = new Artist();
            var statisticValue = new ArtistStatisticValues();

            var entityServiceMock = TestHelper.SetupMock <IEntityService>();

            entityServiceMock.Setup(s => s.GetChildEntities(entity, Cascade.Save)).Returns(new List <Entity> {
                entity
            });

            entity.Name = "Source";
            entity.StatisticValues.Add(statisticValue);
            entity.PropertyChangeTracker.Clear();

            session.Save(entity);

            entity.Name          = "Test";
            entity.AnotherArtist = new Artist();
            entity.StatisticValues.Add(new ArtistStatisticValues());

            entity.PropertyChangeTracker.AddPropertyChangedItem <Artist>(x => x.Name, "Source", "Test");
            entity.PropertyChangeTracker.AddPropertyChangedItem <Artist>(x => x.AnotherArtist, null, entity.AnotherArtist);

            // act
            session.DiscardChanges();

            // assert
            Assert.Equal("Source", entity.Name);
            Assert.Null(entity.AnotherArtist);
            Assert.Single(entity.StatisticValues, statisticValue);

            connectionMock.VerifyAll();
        }
        public void TryGetRemovedCollectionItems_Can_Get_Removed_Items()
        {
            // arrange
            var entity           = TestHelper.CreateEntityWithId <Artist>(1);
            var entityCollection = new EntityCollection <ArtistStatisticValues>(entity, "AnotherArtist", "StatisticValues");

            var statisticValues = new ArtistStatisticValues();

            entity.PropertyChangeTracker.DisableChangeTracking = true;
            entityCollection.Add(statisticValues);
            entity.PropertyChangeTracker.DisableChangeTracking = false;

            entityCollection.Remove(statisticValues);

            List <ArtistStatisticValues> listRemovedItems;

            // act
            var result = entity.PropertyChangeTracker.TryGetRemovedCollectionItems <Artist, ArtistStatisticValues>(x => x.StatisticValues, out listRemovedItems);

            // assert
            Assert.True(result);
            Assert.NotNull(listRemovedItems);
            Assert.Equal(statisticValues, listRemovedItems[0]);
        }