public async Task When_adding_a_new_first_the_current_first_is_set_as_NextBiggerBucket()
        {
            //Arrange
            var newBucket = new SyncableBucket {
                Id = 278
            };

            var dataCreator = new Mock <IDataCreator <SyncableBucket> >();

            dataCreator
            .Setup(fake => fake.CreateEmptyAsync())
            .ReturnsAsync(newBucket);

            var testing = new LinkedSyncableBuckets(dataCreator.Object, new[] { new SyncableBucket {
                                                                                    Id = 314
                                                                                } });

            var currentFirstBucket = testing.First();

            //Act
            await testing.CreateEmptyBiggerThan(null);

            //Assert
            Assert.AreEqual(currentFirstBucket, newBucket.NextBiggerBucket);
        }
        public async Task Create_bigger_bucket_creates_a_new_Bucket_bigger_than_supplied_bucketAsync()
        {
            //Arrange
            var storylist = new Mock <IStorylist>();

            storylist
            .SetupGet(fake => fake.DataIsready)
            .Returns(true);

            var bucketReader  = new Mock <IBucketReader>();
            var linkedBuckets = new Mock <ILinkedSyncableBuckets>();

            bucketReader
            .Setup(fake => fake.ReadLinkedBucketsAsync())
            .ReturnsAsync(linkedBuckets.Object);

            var vm = new SortingBucketsViewModel(storylist.Object, bucketReader.Object);

            await vm.OnInitializedAsync();

            var bucket = new SyncableBucket {
                Id = 278
            };

            //Act
            await vm.OnCreateBiggerBucket(bucket);

            //Assert
            linkedBuckets.Verify(mock => mock.CreateEmptyBiggerThan(bucket), Times.Once);
        }
        public async Task The_new_bucket_gets_the_smaller_buckets_existing_NextBiggerBucket()
        {
            //Arrange
            var newBucket = new SyncableBucket {
                Id = 314
            };

            var dataCreator = new Mock <IDataCreator <SyncableBucket> >();

            dataCreator
            .Setup(fake => fake.CreateEmptyAsync())
            .ReturnsAsync(newBucket);

            var biggerBucket = new SyncableBucket {
                Id = 42
            };
            var smallerBucket = new SyncableBucket {
                Id = 278, NextBiggerBucket = biggerBucket
            };


            var testing = new LinkedSyncableBuckets(dataCreator.Object, new[] { smallerBucket, biggerBucket });

            //Act
            await testing.CreateEmptyBiggerThan(smallerBucket);

            //Assert
            Assert.AreEqual(biggerBucket, newBucket.NextBiggerBucket);
        }
Exemple #4
0
        public void ctor_throws_InvalidOperationException_if_initialised_with_collection_with_circular_NextBiggerBucket_references()
        {
            //Arrange
            var biggerBucket = new SyncableBucket {
                Id = 314
            };
            var mediumBucket = new SyncableBucket {
                Id = 42, NextBiggerBucket = biggerBucket
            };
            var circularBucket = new SyncableBucket {
                Id = 8, NextBiggerBucket = mediumBucket
            };

            biggerBucket.NextBiggerBucket = circularBucket;

            var buckets = new[]
            {
                circularBucket,
                mediumBucket,
                biggerBucket
            };
            var dataCreator = new Mock <IDataCreator <SyncableBucket> >();

            //Act & Assert
            Assert.ThrowsException <InvalidOperationException>(() => new LinkedSyncableBuckets(dataCreator.Object, buckets));
        }
Exemple #5
0
        public void Enumerator_MoveNext_sets_Current_to_NextBigger_Bucket()
        {
            //Arrange
            var biggerBucket = new SyncableBucket {
                Id = 42
            };
            var smallerBucket = new SyncableBucket {
                Id = 2, NextBiggerBucket = biggerBucket
            };
            var buckets = new[]
            {
                smallerBucket,
                biggerBucket
            };
            var dataCreator = new Mock <IDataCreator <SyncableBucket> >();
            var testing     = new LinkedSyncableBuckets(dataCreator.Object, buckets);
            var enumerator  = testing.GetEnumerator();

            //Act
            _ = enumerator.MoveNext();
            Assert.AreEqual(smallerBucket, enumerator.Current, "Test not valid. If the smaller bucket is not the first one, how are we supposed to test what follows after it?");
            _ = enumerator.MoveNext();

            //Assert
            Assert.AreEqual(biggerBucket, enumerator.Current, $"Expected Bucket with Id {biggerBucket.Id}, got Id {enumerator.Current.Id}");
        }
Exemple #6
0
        public void ctor_throws_InvalidOperationException_if_initialised_with_collection_with_more_than_one_smallest_bucket()
        {
            //Arrange
            var biggerBucket = new SyncableBucket {
                Id = 314
            };
            var mediumBucket = new SyncableBucket {
                Id = 42, NextBiggerBucket = biggerBucket
            };


            var buckets = new[]
            {
                new SyncableBucket {
                    Id = 8, NextBiggerBucket = mediumBucket
                },
                new SyncableBucket {
                    Id = 10, NextBiggerBucket = biggerBucket
                },
                mediumBucket,
                biggerBucket
            };
            var dataCreator = new Mock <IDataCreator <SyncableBucket> >();

            //Act & Assert
            Assert.ThrowsException <InvalidOperationException>(() => new LinkedSyncableBuckets(dataCreator.Object, buckets));
        }
        public void Setting_NextBiggerBucketId_manually_is_NotSupported()
        {
            //Arrange
            var bucket = new SyncableBucket();

            //Act && Assert
            Assert.ThrowsException <NotSupportedException>(() => bucket.NextBiggerBucketId = 314);
        }
        public void Add_Sets_added_story_IsInBucket()
        {
            //Arrange
            var bucket = new SyncableBucket();
            var story  = new Story();

            Assert.IsFalse(story.IsInBucket, "Test assumptions have changed!");

            //Act
            bucket.Add(story);

            //Assert
            Assert.IsTrue(story.IsInBucket);
        }
        public void Mapping_from_Bucket_maps_Id()
        {
            //Arrange
            var bucket = new Bucket
            {
                Id = 278
            };

            //Act
            var mapped = new SyncableBucket(bucket);


            //Assert
            Assert.AreEqual(bucket.Id, mapped.Id);
        }
        public void Setting_NextBiggerBucket_sets_NextBiggerBucketId()
        {
            //Arrange
            var bucket            = new SyncableBucket();
            var newBiggerBucketId = 278;

            //Act
            bucket.NextBiggerBucket = new SyncableBucket {
                Id = newBiggerBucketId
            };


            //Assert
            Assert.AreEqual(newBiggerBucketId, bucket.NextBiggerBucketId);
        }
        public void Add_AddsStory()
        {
            //Arrange
            var bucket = new SyncableBucket();
            var story  = new Mock <Story>();

            //Act
            var countBefore = bucket.Stories.Count;

            bucket.Add(story.Object);


            //Assert
            Assert.AreEqual(countBefore + 1, bucket.Stories.Count);
        }
        public void Mapping_from_Bucket_maps_NextBiggerBucketId()
        {
            //Arrange
            var bucket = new Bucket
            {
                Id = 278,
                NextBiggerBucketId = 314
            };

            //Act
            var mapped = new SyncableBucket(bucket);


            //Assert
            Assert.AreEqual(bucket.NextBiggerBucketId, mapped.NextBiggerBucketId);
        }
Exemple #13
0
        public void ctor_throws_InvalidOperationException_if_initialised_with_collection_where_some_NextBiggerBucket_is_not_in_collection()
        {
            //Arrange
            var biggerBucket = new SyncableBucket {
                Id = 3
            };

            var buckets = new[]
            {
                new SyncableBucket {
                    Id = 1, NextBiggerBucket = biggerBucket
                },
            };
            var dataCreator = new Mock <IDataCreator <SyncableBucket> >();

            //Act & Assert
            Assert.ThrowsException <InvalidOperationException>(() => new LinkedSyncableBuckets(dataCreator.Object, buckets));
        }
        public void Setting_NextBiggerBucket_triggers_update()
        {
            //Arrange
            var bucket = new SyncableBucket();

            var eventWasTriggered = false;

            bucket.Updated += (o, e) => {
                eventWasTriggered = true;
            };

            //Act
            bucket.NextBiggerBucket = new SyncableBucket();


            //Assert
            Assert.IsTrue(eventWasTriggered, "Event was not triggered");
        }
        public void Triggering_update_happens_after_Setting_the_NextBiggerBucket()
        {
            //Arrange
            var bucket = new SyncableBucket();

            Bucket biggerBucketWhenEventTriggered = null;

            bucket.Updated += (o, e) => {
                biggerBucketWhenEventTriggered = (o as SyncableBucket).NextBiggerBucket;
            };

            var biggerBucket = new SyncableBucket();

            //Act
            bucket.NextBiggerBucket = biggerBucket;


            //Assert
            Assert.AreEqual(biggerBucket, biggerBucketWhenEventTriggered);
        }
        public async Task Calls_DataCreator_to_create_a_new_bucket()
        {
            //Arrange
            var dataCreator = new Mock <IDataCreator <SyncableBucket> >();

            dataCreator
            .Setup(fake => fake.CreateEmptyAsync())
            .ReturnsAsync(new Mock <SyncableBucket>().Object);

            var smallerBucket = new SyncableBucket {
                Id = 32
            };

            var testing = new LinkedSyncableBuckets(dataCreator.Object, new[] { smallerBucket });

            //Act
            await testing.CreateEmptyBiggerThan(smallerBucket);

            //Assert
            dataCreator.Verify(mock => mock.CreateEmptyAsync(), Times.Once);
        }
        public void Mapping_from_Bucket_maps_Stories()
        {
            //Arrange
            var story = new Story {
                Id = 278, Title = "Foobar", IsInBucket = true
            };
            var bucket = new Bucket(new[] { story })
            {
                Id = 278
            };

            //Act
            var mapped = new SyncableBucket(bucket);


            //Assert
            var mappedStory = mapped.Stories.Single();

            Assert.AreEqual(story.Id, mappedStory.Id);
            Assert.AreEqual(story.Title, mappedStory.Title);
            Assert.AreEqual(story.IsInBucket, mappedStory.IsInBucket);
        }
        public void Adding_Story_triggers_Updated_event_after_Adding_story()
        {
            //Arrange
            var bucket = new SyncableBucket();
            var story  = new Story();

            var   eventWasTriggered = false;
            Story singleStoryInBucketWhenEventTriggered = null;

            bucket.Updated += (o, e) => {
                eventWasTriggered = true;
                singleStoryInBucketWhenEventTriggered = (o as SyncableBucket).Stories.Single();
            };

            //Act
            bucket.Add(story);


            //Assert
            Assert.IsTrue(eventWasTriggered);
            Assert.AreEqual(story, singleStoryInBucketWhenEventTriggered);
        }
        public async Task When_a_smaller_bucket_is_given_that_one_gets_the_new_as_NextBiggerBucket()
        {
            //Arrange
            var newBucket = new Mock <SyncableBucket>().Object;

            var dataCreator = new Mock <IDataCreator <SyncableBucket> >();

            dataCreator
            .Setup(fake => fake.CreateEmptyAsync())
            .ReturnsAsync(newBucket);

            var smallerBucket = new SyncableBucket {
                Id = 278
            };

            var testing = new LinkedSyncableBuckets(dataCreator.Object, new[] { smallerBucket });

            //Act
            await testing.CreateEmptyBiggerThan(smallerBucket);

            //Assert
            Assert.AreEqual(newBucket, smallerBucket.NextBiggerBucket);
        }
Exemple #20
0
        public void Enumerator_MoveNext_sets_the_first_Current_to_the_only_one_that_is_not_bigger_than_any_of_the_others()
        {
            //Arrange
            var biggerBucket = new SyncableBucket {
                Id = 42
            };
            var smallerBucket = new SyncableBucket {
                Id = 2, NextBiggerBucket = biggerBucket
            };
            var buckets = new[]
            {
                biggerBucket,
                smallerBucket
            };
            var dataCreator = new Mock <IDataCreator <SyncableBucket> >();
            var testing     = new LinkedSyncableBuckets(dataCreator.Object, buckets);
            var enumerator  = testing.GetEnumerator();

            //Act
            _ = enumerator.MoveNext();

            //Assert
            Assert.AreEqual(smallerBucket, enumerator.Current, $"Expected Bucket with Id {smallerBucket.Id}, got Id {enumerator.Current.Id}");
        }