public void should_teardown_entity_when_removed() { var fakeEntity1 = Substitute.For <IEntity>(); fakeEntity1.Id.Returns(1); var fakeEntities = new List <IEntity>(); var removeSubject = new Subject <IEntity>(); var mockObservableGroup = Substitute.For <IObservableGroup>(); mockObservableGroup.OnEntityAdded.Returns(new Subject <IEntity>()); mockObservableGroup.OnEntityRemoving.Returns(removeSubject); mockObservableGroup.GetEnumerator().Returns(fakeEntities.GetEnumerator()); var mockCollectionManager = Substitute.For <IEntityCollectionManager>(); var fakeGroup = Substitute.For <IGroup>(); fakeGroup.RequiredComponents.Returns(new Type[0]); mockCollectionManager.GetObservableGroup(Arg.Is(fakeGroup)).Returns(mockObservableGroup); var mockSystem = Substitute.For <ITeardownSystem>(); mockSystem.Group.Returns(fakeGroup); var systemHandler = new TeardownSystemHandler(mockCollectionManager); systemHandler.SetupSystem(mockSystem); removeSubject.OnNext(fakeEntity1); mockSystem.Received(1).Teardown(Arg.Is(fakeEntity1)); Assert.Equal(1, systemHandler.SystemSubscriptions.Count); Assert.NotNull(systemHandler.SystemSubscriptions[mockSystem]); }
public void should_teardown_entity_when_removed() { var fakeEntity1 = Substitute.For <IEntity>(); fakeEntity1.Id.Returns(Guid.NewGuid()); var fakeEntities = new IEntity[] {}; var removeSubject = new Subject <IEntity>(); var mockObservableGroup = Substitute.For <IObservableGroup>(); mockObservableGroup.OnEntityAdded.Returns(new Subject <IEntity>()); mockObservableGroup.OnEntityRemoved.Returns(removeSubject); mockObservableGroup.Entities.Returns(fakeEntities); var mockCollectionManager = Substitute.For <IEntityCollectionManager>(); var fakeGroup = Substitute.For <IGroup>(); fakeGroup.MatchesComponents.Returns(new Type[0]); mockCollectionManager.CreateObservableGroup(Arg.Is(fakeGroup)).Returns(mockObservableGroup); var mockSystem = Substitute.For <ITeardownSystem>(); mockSystem.TargetGroup.Returns(fakeGroup); var systemHandler = new TeardownSystemHandler(mockCollectionManager); systemHandler.SetupSystem(mockSystem); removeSubject.OnNext(fakeEntity1); mockSystem.Received(1).Teardown(Arg.Is(fakeEntity1)); Assert.Equal(1, systemHandler._systemSubscriptions.Count); Assert.NotNull(systemHandler._systemSubscriptions[mockSystem]); }