public void LoadDataFromServer_WhereCollection_CreatesRequest()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var requestFactory = new DicomRequestFactoryFake();
            var dataLoader = new DicomDataLoader<TestInfo>(mockProvider.GetCacheProviderFake(), mockProvider.GetCacheIndexProviderFake(), mockProvider.GetDicomClientFactoryFake(), requestFactory);
            var whereCollection = new WhereCollection<TestInfo>(mockProvider.GetDicomMappingFake());
            whereCollection.WhereEquals(DicomTags.PatientID, 1);

            // Act
            dataLoader.LoadDataFromServer(whereCollection);

            var whereItem = ((IDicomWhereCollection)requestFactory.WhereCollection).Single();

            // Assert
            Assert.That(whereItem.DicomTag, Is.EqualTo(DicomTags.PatientID));
            Assert.That(whereItem.Value, Is.EqualTo("1"));
        }
        public async void LoadDataFromCacheAsync_ReturnsFromCache()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var cacheProvider = mockProvider.GetCacheProviderFake();
            var dataLoader = new DicomDataLoader<TestInfo>(cacheProvider, mockProvider.GetCacheIndexProviderFake(), mockProvider.GetDicomClientFactoryFake(), mockProvider.GetDicomRequestFactoryFake());
            var whereCollection = new WhereCollection<TestInfo>(mockProvider.GetDicomMappingFake());
            whereCollection.WhereEquals(DicomTags.PatientID, 1);

            // Act
            var result = (await dataLoader.LoadDataFromCacheAsync(whereCollection)).Single();

            // Assert
            Assert.That(result.PatientID, Is.EqualTo(1));
            Assert.That(() => cacheProvider.Received(1).Retrieve<TestInfo>(), Throws.Nothing);
        }
        public async void LoadDataFromServerAsync_GetResponse_StoresInCache()
        {
            // Arrange
            var mockProvider = new MockProvider();
            var cacheProvider = mockProvider.GetCacheProviderFake();
            var dataLoader = new DicomDataLoader<TestInfo>(cacheProvider, mockProvider.GetCacheIndexProviderFake(), mockProvider.GetDicomClientFactoryFake(), mockProvider.GetDicomRequestFactoryFake());

            var whereCollection = new WhereCollection<TestInfo>(mockProvider.GetDicomMappingFake());
            whereCollection.WhereEquals(DicomTags.PatientID, 1);

            // Act
            var result = await dataLoader.LoadDataFromServerAsync(whereCollection);

            // Assert
            Assert.That(result.Count, Is.EqualTo(1));
            Assert.That(result.All(c=>c.PatientID == 1), Is.True);
            Assert.That(() => cacheProvider.Received(1).Store(Arg.Any<string>(), Arg.Any<object>(), Arg.Any<bool>()), Throws.Nothing);
        }