Esempio n. 1
0
        public void CollectionManager_Changed_ChangeUntypedObject()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();

            var collectionManager = new CollectionManager(remoteMethodCall.Object);

            var objectToAdd = new TestDdpObject { integerField = 101, StringProperty = "addedTest"};

            collectionManager.Added(new Added { Collection = "Test", Fields = JObject.FromObject(objectToAdd), Id = "1" });

            var changed = new Changed
            {
                Cleared = null,
                Collection = "Test",
                Fields = new Dictionary<string, JToken>() {{"StringProperty", JToken.FromObject("changed!")}},
                ID = "1"
            };

            collectionManager.Changed(changed);

            var collection = collectionManager.GetCollection<TestDdpObject>("Test");

            Assert.AreEqual(1, collection.Count);

            objectToAdd.StringProperty = "changed!";
            objectToAdd.Id = "1";
            AssertDdpObjectsEqual(objectToAdd, collection.First());
        }
Esempio n. 2
0
        public void CollectionManager_Removed_AddedRemovedFromUntypedCollection()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();

            var collectionManager = new CollectionManager(remoteMethodCall.Object);

            var objectToAdd = new TestDdpObject { integerField = 101, StringProperty = "addedTest"};

            collectionManager.Added(new Added { Collection = "Test", Fields = JObject.FromObject(objectToAdd), Id = "1" });
            collectionManager.Removed(new Removed() { Collection = "Test", Id="1"});

            var collection = collectionManager.GetCollection<TestDdpObject>("Test");

            Assert.AreEqual(0, collection.Count);
        }
Esempio n. 3
0
        public void DdpCollection_RemoveAsync_CallsServerMethod()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject = new TestDdpObject() {Id = "1", integerField = 10, StringProperty = "FooBar"};

            remoteMethodCall.Setup(x => x.Call<int>(It.IsAny<string>(), It.IsAny<object[]>()))
                .Returns(Task.FromResult(1));

            collection.RemoveAsync(testObject.Id).Wait();

            remoteMethodCall.Verify(
                x =>
                    x.Call<int>(It.Is<string>(s => s.Equals(@"/TestCollection/remove")),
                        It.Is<object[]>(c => c.Length == 1 && ((IdParameter) c.First()).Id == "1")));
        }
Esempio n. 4
0
        public void CollectionManager_Added_PresentInTypedCollection()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();

            var collectionManager = new CollectionManager(remoteMethodCall.Object);

            var objectToAdd = new TestDdpObject {integerField = 101, StringProperty = "addedTest"};

            collectionManager.Added(new Added {Collection = "Test", Fields = JObject.FromObject(objectToAdd), Id = "1"});

            var collection = collectionManager.GetCollection<TestDdpObject>("Test");

            Assert.AreEqual(1, collection.Count);

            objectToAdd.Id = "1";
            AssertDdpObjectsEqual(objectToAdd, collection.First());
        }
Esempio n. 5
0
        public void DdpCollection_Filter_SortedAndWhere()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject3 = new TestDdpObject() { Id = "4", integerField = 4 };
            var testObject1 = new TestDdpObject() { Id = "1", integerField = 2 };
            var testObject2 = new TestDdpObject() { Id = "2", integerField = 1 };

            ((IDdpCollection)collection).Added(testObject3.Id, JObject.FromObject(testObject3));
            ((IDdpCollection)collection).Added(testObject1.Id, JObject.FromObject(testObject1));
            ((IDdpCollection)collection).Added(testObject2.Id, JObject.FromObject(testObject2));

            var filteredCollection = collection.Filter(whereFilter: x => x.integerField < 4, sortFilter: (x,y) => x.integerField - y.integerField);

            Assert.AreEqual(2, filteredCollection.Count);

            Assert.AreEqual(1, filteredCollection[0].integerField);
            Assert.AreEqual(2, filteredCollection[1].integerField);
        }
Esempio n. 6
0
        public void DdpCollection_Filter_WhereObjectAddedRemovedChange()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject3 = new TestDdpObject() { Id = "4", integerField = 4 };
            var testObject1 = new TestDdpObject() { Id = "1", integerField = 0 };
            var testObject2 = new TestDdpObject() { Id = "2", integerField = 2 };

            ((IDdpCollection)collection).Added(testObject3.Id, JObject.FromObject(testObject3));
            ((IDdpCollection)collection).Added(testObject1.Id, JObject.FromObject(testObject1));
            ((IDdpCollection)collection).Added(testObject2.Id, JObject.FromObject(testObject2));

            var filteredCollection = collection.Filter(whereFilter: x => x.integerField == 4);

            Assert.AreEqual(1, filteredCollection.Count);

            ((IDdpCollection)collection).Changed(testObject3.Id, new Dictionary<string, JToken>() { { "integerField", 1 } }, new string[0]);

            Assert.AreEqual(0, filteredCollection.Count);
        }
Esempio n. 7
0
        public void DdpCollection_Filter_WhereMatchAll()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject3 = new TestDdpObject() { Id = "4", integerField = 4 };
            var testObject1 = new TestDdpObject() { Id = "1", integerField = 0 };
            var testObject2 = new TestDdpObject() { Id = "2", integerField = 2 };

            ((IDdpCollection)collection).Added(testObject3.Id, JObject.FromObject(testObject3));
            ((IDdpCollection)collection).Added(testObject1.Id, JObject.FromObject(testObject1));
            ((IDdpCollection)collection).Added(testObject2.Id, JObject.FromObject(testObject2));

            var filteredCollection = collection.Filter(whereFilter: x => true);

            Assert.AreEqual(3, filteredCollection.Count);
        }
Esempio n. 8
0
        public void DdpCollection_Filter_ChangesSortedMoveToMiddleFromEnd()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject3 = new TestDdpObject() { Id = "4", integerField = 4 };
            var testObject1 = new TestDdpObject() { Id = "1", integerField = 0 };
            var testObject2 = new TestDdpObject() { Id = "2", integerField = 2 };

            ((IDdpCollection)collection).Added(testObject3.Id, JObject.FromObject(testObject3));
            ((IDdpCollection)collection).Added(testObject1.Id, JObject.FromObject(testObject1));
            ((IDdpCollection)collection).Added(testObject2.Id, JObject.FromObject(testObject2));

            var sortedCollection = collection.Filter(sortFilter: (x, y) => x.integerField - y.integerField);

            Assert.AreEqual(4, collection[0].integerField);
            Assert.AreEqual(0, collection[1].integerField);
            Assert.AreEqual(2, collection[2].integerField);

            Assert.AreEqual(0, sortedCollection[0].integerField);
            Assert.AreEqual(2, sortedCollection[1].integerField);
            Assert.AreEqual(4, sortedCollection[2].integerField);

            ((IDdpCollection)collection).Changed(testObject3.Id, new Dictionary<string, JToken>() { { "integerField", 1 } }, new string[0]);

            Assert.AreEqual(1, collection[0].integerField);
            Assert.AreEqual(0, collection[1].integerField);
            Assert.AreEqual(2, collection[2].integerField);

            Assert.AreEqual(0, sortedCollection[0].integerField);
            Assert.AreEqual(1, sortedCollection[1].integerField);
            Assert.AreEqual(2, sortedCollection[2].integerField);
        }
Esempio n. 9
0
        public void DdpCollection_Filter_InsertsSorted()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var sortedCollection = collection.Filter(sortFilter: (x, y) => x.integerField - y.integerField);

            var testObject3 = new TestDdpObject() { Id = "3", integerField = 3 };
            var testObject1 = new TestDdpObject() { Id = "1", integerField = 1 };
            var testObject2 = new TestDdpObject() { Id = "2", integerField = 2 };

            ((IDdpCollection)collection).Added(testObject3.Id, JObject.FromObject(testObject3));

            Assert.AreEqual(3, collection[0].integerField);
            Assert.AreEqual(3, sortedCollection[0].integerField);

            ((IDdpCollection)collection).Added(testObject1.Id, JObject.FromObject(testObject1));

            Assert.AreEqual(3, collection[0].integerField);
            Assert.AreEqual(1, collection[1].integerField);

            Assert.AreEqual(1, sortedCollection[0].integerField);
            Assert.AreEqual(3, sortedCollection[1].integerField);

            ((IDdpCollection)collection).Added(testObject2.Id, JObject.FromObject(testObject2));

            Assert.AreEqual(3, collection[0].integerField);
            Assert.AreEqual(1, collection[1].integerField);
            Assert.AreEqual(2, collection[2].integerField);


            Assert.AreEqual(1, sortedCollection[0].integerField);
            Assert.AreEqual(2, sortedCollection[1].integerField);
            Assert.AreEqual(3, sortedCollection[2].integerField);
        }
Esempio n. 10
0
        public void DdpCollection_Enumerator_CanEnumerateItems()
        {

            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();

            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject = new TestDdpObject() { Id = "11", integerField = 101, StringProperty = "FooBar" };

            ((IDdpCollection)collection).Added(testObject.Id, JObject.FromObject(testObject));
            ((IDdpCollection)collection).Added(testObject.Id, JObject.FromObject(testObject));

            int loopTimes = 0;
            foreach (var itemObject in (IEnumerable)collection)
            {
                var item = (TestDdpObject) itemObject;
                Assert.AreEqual(testObject.Id, item.Id);
                Assert.AreEqual(testObject.integerField, item.integerField);
                Assert.AreEqual(testObject.StringProperty, item.StringProperty);
                loopTimes++;
            }

            Assert.AreEqual(2, loopTimes);
        }
Esempio n. 11
0
        public void DdpCollection_Removed_InvokedOnChangedEvents()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();

            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject = new TestDdpObject() { Id = "11", integerField = 101, StringProperty = "FooBar" };

            var collectionChangedCalled = false;
            var propertyChangedCalled = false;

            ((IDdpCollection)collection).Added(testObject.Id, JObject.FromObject(testObject));

            Assert.AreEqual(1, collection.Count);

            ((INotifyCollectionChanged)collection).CollectionChanged += (sender, args) =>
            {
                Assert.AreEqual(NotifyCollectionChangedAction.Remove, args.Action);
                Assert.AreEqual(1, args.OldItems.Count);

                var removedItem = args.OldItems[0] as TestDdpObject;

                Assert.IsNotNull(removedItem);

                Assert.AreEqual(testObject.Id, removedItem.Id);
                Assert.AreEqual(testObject.integerField, removedItem.integerField);
                Assert.AreEqual(testObject.StringProperty, removedItem.StringProperty);

                collectionChangedCalled = true;
            };

            ((INotifyPropertyChanged)collection).PropertyChanged += (sender, args) =>
            {
                propertyChangedCalled = true;
            };

            ((IDdpCollection)collection).Removed(testObject.Id);

            Assert.IsTrue(collectionChangedCalled);
            Assert.IsTrue(propertyChangedCalled);
            Assert.AreEqual(0, collection.Count);
        }
Esempio n. 12
0
        public void DdpCollection_Changed_ChangesObject()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();

            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject = new TestDdpObject() { Id = "11", integerField = 101, StringProperty = "FooBar" };

            ((IDdpCollection)collection).Added(testObject.Id, JObject.FromObject(testObject));

            var objectChanged = collection.First();

            Assert.AreEqual(101, objectChanged.integerField);

            ((IDdpCollection) collection).Changed(testObject.Id,
                new Dictionary<string, JToken>() {{"integerField", 900}}, new string[0]);

            Assert.AreEqual(900, objectChanged.integerField);
        }
Esempio n. 13
0
        public void DdpCollection_UpdateAsync_NullID()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();
            var collection = new DdpCollection<TestDdpObject>(remoteMethodCall.Object, "TestCollection");

            var testObject = new TestDdpObject() { Id = "11", integerField = 10, StringProperty = "FooBar" };

            PCLTesting.ExceptionAssert.Throws<ArgumentNullException>(() => collection.UpdateAsync(string.Empty, testObject));
        }
Esempio n. 14
0
        public void CollectionManager_Added_MultipleCollections()
        {
            var remoteMethodCall = new Mock<IDdpRemoteMethodCall>();

            var collectionManager = new CollectionManager(remoteMethodCall.Object);

            var objectToAdd1 = new TestDdpObject { integerField = 101, StringProperty = "addedTest"};
            var objectToAdd2 = new TestDdpObject { integerField = 101, StringProperty = "addedTest"};
            var objectToAdd3 = new TestDdpObject { integerField = 101, StringProperty = "addedTest"};

            collectionManager.Added(new Added { Collection = "Test1", Fields = JObject.FromObject(objectToAdd1), Id = "1" });
            collectionManager.Added(new Added { Collection = "Test2", Fields = JObject.FromObject(objectToAdd2), Id = "2" });
            collectionManager.Added(new Added { Collection = "Test3", Fields = JObject.FromObject(objectToAdd3), Id = "3" });

            var collection1 = collectionManager.GetCollection<TestDdpObject>("Test1");
            var collection2 = collectionManager.GetCollection<TestDdpObject>("Test2");
            var collection3 = collectionManager.GetCollection<TestDdpObject>("Test3");

            Assert.AreEqual(1, collection1.Count);
            Assert.AreEqual(1, collection2.Count);
            Assert.AreEqual(1, collection3.Count);

            objectToAdd1.Id = "1";
            objectToAdd2.Id = "2";
            objectToAdd3.Id = "3";

            AssertDdpObjectsEqual(objectToAdd1, collection1.First());
            AssertDdpObjectsEqual(objectToAdd2, collection2.First());
            AssertDdpObjectsEqual(objectToAdd3, collection3.First());
        }
Esempio n. 15
0
 private void AssertDdpObjectsEqual(TestDdpObject expected, TestDdpObject actual)
 {
     Assert.AreNotEqual(expected, actual);
     Assert.AreEqual(expected.Id, actual.Id);
     Assert.AreEqual(expected.StringProperty, actual.StringProperty);
     Assert.AreEqual(expected.integerField, actual.integerField);
 }