public async Task A_single_page_of_contacts_is_fetched(ListContactFilter sut, IReadOnlyList <Property> properties)
        {
            var list = fixture.Build <ContactList>()
                       .With(p => p.HasMore, false)
                       .Without(p => p.ContactOffset)
                       .Create();

            mockListClient.Setup(p => p.GetContactsInListAsync(It.IsAny <long>(), It.IsAny <IReadOnlyList <IProperty> >(), It.IsAny <PropertyMode>(), It.IsAny <FormSubmissionMode>(), It.IsAny <bool>(), It.IsAny <int>(), It.IsAny <long?>()))
            .ReturnsAsync(list);

            var response = await sut.GetContacts(mockClient.Object, properties);

            CollectionAssert.AreEquivalent(response, list.Contacts);

            mockListClient.Verify(p => p.GetContactsInListAsync(It.IsAny <long>(), properties, PropertyMode.ValueOnly, FormSubmissionMode.None, false, It.IsAny <int>(), null), Times.Once);
        }
        public async Task Multiple_pages_of_contacts_are_fetched(ListContactFilter sut, IReadOnlyList <Property> properties)
        {
            var listBuilder = fixture.Build <ContactList>();

            var lists = new[]
            {
                listBuilder.With(p => p.HasMore, true).With(p => p.ContactOffset).Create(),
                listBuilder.With(p => p.HasMore, false).Without(p => p.ContactOffset).Create()
            };

            mockListClient.SetupSequence(p => p.GetContactsInListAsync(It.IsAny <long>(), It.IsAny <IReadOnlyList <IProperty> >(), It.IsAny <PropertyMode>(), It.IsAny <FormSubmissionMode>(), It.IsAny <bool>(), It.IsAny <int>(), It.IsAny <long?>()))
            .ReturnsSequenceAsync(lists);

            var response = await sut.GetContacts(mockClient.Object, properties);

            CollectionAssert.AreEquivalent(lists.SelectMany(l => l.Contacts), response);

            mockListClient.Verify(p => p.GetContactsInListAsync(It.IsAny <long>(), properties, PropertyMode.ValueOnly, FormSubmissionMode.None, false, It.IsAny <int>(), null), Times.Once);
            mockListClient.Verify(p => p.GetContactsInListAsync(It.IsAny <long>(), properties, PropertyMode.ValueOnly, FormSubmissionMode.None, false, It.IsAny <int>(), lists.First().ContactOffset), Times.Once);
        }