Exemplo n.º 1
0
        public void Method_Autorun_InvokeOnChange()
        {
            // Arrange
            IStoreAccessor <ClassStoreWithAction> storeAccessor = serviceProvider.GetRequiredService <IStoreAccessor <ClassStoreWithAction> >();
            var consumer = new FakeBlazorComponent();

            storeAccessor.SetConsumer(consumer);
            var store = storeAccessor.Store;
            int invokeCount = 0, actualInvokeCount = 0;

            storeAccessor.Autorun(store =>
            {
                _ = store.Value;
                actualInvokeCount++;
            });

            // Act
            Assert.AreEqual(invokeCount, actualInvokeCount);

            // Always invokes on first change
            store.Value = 65; invokeCount++;
            // Real invoke
            store.Value = 65; invokeCount++;

            // Assert
            Assert.AreEqual(invokeCount, actualInvokeCount);
        }
Exemplo n.º 2
0
        public void Method_Autorun_DontInvokeOnNotObservedPropertyChange()
        {
            // Arrange
            var observerFactory = serviceProvider.GetRequiredService <IPropertyObserverFactory>();
            var observer        = observerFactory.Create <SimpleObservableProperty>();

            var component = new FakeBlazorComponent();

            observer.SetConsumer(component);
            var observable = observer.WrappedInstance;
            int invokeCount = 0, actualInvokeCount = 0;

            observer.Autorun(property =>
            {
                _ = property.StringValue;
                actualInvokeCount++;
            });

            // Act
            Assert.AreEqual(invokeCount, actualInvokeCount);
            // Always invokes on first change
            observable.StringValue = "test"; invokeCount++;
            observable.IntValue    = 65;

            // Assert
            Assert.AreEqual(invokeCount, actualInvokeCount);
        }
Exemplo n.º 3
0
        public void Store_Dependencies_DependencyInjected()
        {
            // Arrange
            IStoreAccessor <ClassWithDependency> storeAccessor = serviceProvider.GetRequiredService <IStoreAccessor <ClassWithDependency> >();
            var consumer = new FakeBlazorComponent();

            storeAccessor.SetConsumer(consumer);
            var store = storeAccessor.Store;

            // Assert
            Assert.IsNotNull(store.Dependency);
        }
Exemplo n.º 4
0
        public void Store_PropertyHasDefaultValue_PreserveDefaultValue()
        {
            // Arrange
            string defaultValue = new ClassStoreWithDefaultValue().PropertyWithDefaultValue;
            IStoreAccessor <ClassStoreWithDefaultValue> storeAccessor = serviceProvider.GetRequiredService <IStoreAccessor <ClassStoreWithDefaultValue> >();
            var consumer = new FakeBlazorComponent();

            storeAccessor.SetConsumer(consumer);

            // Assert
            Assert.AreEqual(defaultValue, storeAccessor.Store.PropertyWithDefaultValue);
        }
Exemplo n.º 5
0
        public void Store_ComputedValue_CacheValue()
        {
            // Arrange
            IStoreAccessor <ClassStoreWithComputed> storeAccessor = serviceProvider.GetRequiredService <IStoreAccessor <ClassStoreWithComputed> >();
            var consumer = new FakeBlazorComponent();

            storeAccessor.SetConsumer(consumer);
            var store = storeAccessor.Store;

            // Act
            var result = store.ComputedMethodIncerceptingValue();

            // Assert
            Assert.AreEqual(result, store.ComputedMethodIncerceptingValue());
        }
Exemplo n.º 6
0
        public void AsyncStore_CacheAsyncResult()
        {
            // Arrange
            IStoreAccessor <AsyncStoreWithComputed> storeAccessor = serviceProvider.GetRequiredService <IStoreAccessor <AsyncStoreWithComputed> >();
            var consumer = new FakeBlazorComponent();

            storeAccessor.SetConsumer(consumer);
            var store = storeAccessor.Store;

            var result = store.GetValueAsync();

            result.Wait();

            // Assert
            Assert.ReferenceEquals(result, store.GetValueAsync());
        }
Exemplo n.º 7
0
        public void AsyncStore_AsyncResult_ReturnValueAfterAwaited()
        {
            // Arrange
            IStoreAccessor <AsyncStoreWithComputed> storeAccessor = serviceProvider.GetRequiredService <IStoreAccessor <AsyncStoreWithComputed> >();
            var consumer = new FakeBlazorComponent();

            storeAccessor.SetConsumer(consumer);
            var store = storeAccessor.Store;

            var result = store.GetValueAsync();

            result.Wait();

            // Assert
            Assert.IsTrue(result.Value);
        }
Exemplo n.º 8
0
        public void Store_Action_BatchMutations()
        {
            // Arrange
            IStoreAccessor <ClassStoreWithAction> storeAccessor = serviceProvider.GetRequiredService <IStoreAccessor <ClassStoreWithAction> >();
            var consumer = new FakeBlazorComponent();

            storeAccessor.SetConsumer(consumer);
            var store       = storeAccessor.Store;
            int invokeCount = 0;

            // Act
            Assert.AreEqual(invokeCount, ClassStoreWithAction.AutorunInvokeCount);
            store.ActionMethod(String.Empty); invokeCount++;

            // Assert
            Assert.AreEqual(invokeCount, ClassStoreWithAction.AutorunInvokeCount);
        }
Exemplo n.º 9
0
        public void Store_ComputedValue_BehavePromiscous()
        {
            // Arrange
            IStoreAccessor <ClassStoreWithComputed> storeAccessor = serviceProvider.GetRequiredService <IStoreAccessor <ClassStoreWithComputed> >();
            var consumer = new FakeBlazorComponent();

            storeAccessor.SetConsumer(consumer);
            var store       = storeAccessor.Store;
            int invokeCount = 0;

            // Act
            Assert.AreEqual(invokeCount, ClassStoreWithComputed.InvokeCount);
            store.ComputedMethodIncerceptingValue(); invokeCount++;

            // Assert
            Assert.AreEqual(invokeCount, ClassStoreWithComputed.InvokeCount);
        }
Exemplo n.º 10
0
        public void Method_ComputedValue_IsProperty()
        {
            // Arrange
            IStoreAccessor <ClassStoreWithComputed> storeAccessor = serviceProvider.GetRequiredService <IStoreAccessor <ClassStoreWithComputed> >();
            var consumer = new FakeBlazorComponent();

            storeAccessor.SetConsumer(consumer);
            var store       = storeAccessor.Store;
            int invokeCount = 0;

            // Act
            Assert.AreEqual(invokeCount, ClassStoreWithComputed.InvokeCount);
            _ = store.ComputedProperty; invokeCount++;

            // Assert
            Assert.AreEqual(invokeCount, ClassStoreWithComputed.InvokeCount);
        }
Exemplo n.º 11
0
        public void Store_Autorun_BehavePromiscous()
        {
            // Arrange
            IStoreAccessor <ClassStoreWithAction> storeAccessor = serviceProvider.GetRequiredService <IStoreAccessor <ClassStoreWithAction> >();
            var consumer = new FakeBlazorComponent();

            storeAccessor.SetConsumer(consumer);
            var store       = storeAccessor.Store;
            int invokeCount = 0;

            // Act
            Assert.AreEqual(invokeCount, ClassStoreWithAction.AutorunInvokeCount);
            store.AnotherValue = 65; invokeCount++;
            store.AnotherValue = 50;

            // Assert
            Assert.AreEqual(invokeCount, ClassStoreWithAction.AutorunInvokeCount);
        }
Exemplo n.º 12
0
        public void PropertyObserver_ValueChanged_InvokeComponent()
        {
            // Arrange
            var observerFactory = serviceProvider.GetRequiredService <IPropertyObserverFactory>();
            var observer        = observerFactory.Create <SimpleObservableProperty>();

            var component = new FakeBlazorComponent();

            observer.SetConsumer(component);
            var observable = observer.WrappedInstance;

            // Act
            // Access the property
            _ = observable.StringValue;
            observable.StringValue = "test";

            // Assert
            Assert.AreEqual(1, component.invokeCount);
        }
Exemplo n.º 13
0
        public void Store_Autorun_DontInvokeOnNotObservedPropertyChange()
        {
            // Arrange
            IStoreAccessor <ClassStoreWithAction> storeAccessor = serviceProvider.GetRequiredService <IStoreAccessor <ClassStoreWithAction> >();
            var consumer = new FakeBlazorComponent();

            storeAccessor.SetConsumer(consumer);
            var store       = storeAccessor.Store;
            int invokeCount = 0;

            // Act
            Assert.AreEqual(invokeCount, ClassStoreWithAction.AutorunInvokeCount);
            // Always invokes on first change
            store.Value = 65; invokeCount++;
            // Real invoke
            store.AnotherValue = 65;

            // Assert
            Assert.AreEqual(invokeCount, ClassStoreWithAction.AutorunInvokeCount);
        }
Exemplo n.º 14
0
        public void ExecuteInAction_BatchMutations()
        {
            // Arrange
            IStoreAccessor <ClassStoreWithAction> storeAccessor = serviceProvider.GetRequiredService <IStoreAccessor <ClassStoreWithAction> >();
            var consumer = new FakeBlazorComponent();

            storeAccessor.SetConsumer(consumer);
            var store       = storeAccessor.Store;
            int invokeCount = 0;

            // Act
            Assert.AreEqual(invokeCount, ClassStoreWithAction.AutorunInvokeCount);
            storeAccessor.ExecuteInAction(() =>
            {
                store.AnotherValue = 10;
                store.Value        = 5;
            });
            invokeCount++;

            // Assert
            Assert.AreEqual(invokeCount, ClassStoreWithAction.AutorunInvokeCount);
        }