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); }
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)); }
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}"); }
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); }
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); }
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}"); }