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 When_smaller_bucket_is_null_the_new_bucket_becomes_the_first()
        {
            //Arrange
            var newBucket = new Mock <SyncableBucket>().Object;

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

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

            var testing = new LinkedSyncableBuckets(dataCreator.Object, new List <SyncableBucket>());

            //Act
            await testing.CreateEmptyBiggerThan(null);

            //Assert
            Assert.AreEqual(newBucket, testing.First());
        }
        public async Task Newly_added_buckets_can_be_used_as_smallerBucket()
        {
            //Arrange
            var dataCreator = new Mock <IDataCreator <SyncableBucket> >();

            dataCreator
            .Setup(fake => fake.CreateEmptyAsync())
            .ReturnsAsync(new SyncableBucket {
                Id = 42
            });

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

            await testing.CreateEmptyBiggerThan(null);

            var newlyAdded = testing.First();

            //Act
            await testing.CreateEmptyBiggerThan(newlyAdded);

            //Assert: Success if no exception
        }