public void Constructor_PublishConfiguration_AllParametersAreSet_ObjectIsInstantiated()
        {
            // Arrange
            var filesystemAccessor = new Mock<IFilesystemAccessor>();
            var objectSerializer = new Mock<IObjectSerializer<PublishConfiguration>>();

            // Act
            var filesystemPersistence = new FilesystemPersistence<PublishConfiguration>(filesystemAccessor.Object, objectSerializer.Object);

            // Assert
            Assert.IsNotNull(filesystemPersistence);
        }
        public void Load_PublishConfiguration_ObjectDeserializerReturnsEmptyPublishConfiguration_ResultIsEmptyPublishConfiguration()
        {
            // Arrange
            PublishConfiguration objectReturnedByDeserializer = new PublishConfiguration();
            string storageLocation = "temp-file";

            var filesystemAccessor = new Mock<IFilesystemAccessor>();
            var objectSerializer = new Mock<IObjectSerializer<PublishConfiguration>>();

            filesystemAccessor.Setup(f => f.FileExists(It.IsAny<string>())).Returns(true);
            filesystemAccessor.Setup(f => f.GetFileContent(It.IsAny<string>())).Returns("some content");
            objectSerializer.Setup(s => s.Deserialize(It.IsAny<string>())).Returns(objectReturnedByDeserializer);

            var filesystemPersistence = new FilesystemPersistence<PublishConfiguration>(filesystemAccessor.Object, objectSerializer.Object);

            // Act
            var result = filesystemPersistence.Load(storageLocation);

            // Assert
            Assert.AreEqual(objectReturnedByDeserializer, result);
        }
        public void Setup()
        {
            this.applicationInformation = ApplicationInformationProvider.GetApplicationInformation();
            IEncodingProvider encodingProvider = new DefaultFileEncodingProvider();
            IFilesystemAccessor filesystemAccessor = new PhysicalFilesystemAccessor(encodingProvider);
            IPackageServerFactory packageServerFactory = new PackageServerFactory();
            IPublishConfigurationFactory publishConfigurationFactory = new PublishConfigurationFactory();
            IObjectSerializer<PublishConfiguration[]> publishConfigurationSerializer = new JSONObjectSerializer<PublishConfiguration[]>();
            IFilesystemPersistence<PublishConfiguration[]> publishConfigurationPersistence = new FilesystemPersistence<PublishConfiguration[]>(filesystemAccessor, publishConfigurationSerializer);
            this.publishConfigurationAccessor = new ConfigFilePublishConfigurationAccessor(this.applicationInformation, publishConfigurationFactory, publishConfigurationPersistence);

            this.publishingService = new PublishingService(filesystemAccessor, packageServerFactory, this.publishConfigurationAccessor);

            this.localPublishingFolder = Path.Combine(this.applicationInformation.StartupFolder, "publish-target");
            this.samplePackageFilepath = Path.Combine(this.applicationInformation.StartupFolder, "IntegrationTests", "Publishing", SamplePackageFilename);
        }
        public void Setup()
        {
            var applicationInformation = ApplicationInformationProvider.GetApplicationInformation();

            var encodingProvider = new DefaultFileEncodingProvider();
            var fileSystemAccessor = new PhysicalFilesystemAccessor(encodingProvider);
            var objectSerializer = new JSONObjectSerializer<PackageInfo[]>();
            IFilesystemPersistence<PackageInfo[]> packageInfoFilesystemPersistence = new FilesystemPersistence<PackageInfo[]>(
                fileSystemAccessor, objectSerializer);

            this.packageConfigurationAccessor = new PackageConfigurationAccessor(applicationInformation, packageInfoFilesystemPersistence);
        }
        public void Save_PublishConfiguration_WriteSerializedJsonToStoreageLocation_Suceeeds_ResultIsTrue()
        {
            // Arrange
            var objectToPersist = new PublishConfiguration();
            string storageLocation = "temp-file";

            var filesystemAccessor = new Mock<IFilesystemAccessor>();
            var objectSerializer = new Mock<IObjectSerializer<PublishConfiguration>>();

            objectSerializer.Setup(o => o.Serialize(It.IsAny<PublishConfiguration>())).Returns("[]");
            filesystemAccessor.Setup(f => f.WriteContentToFile(It.IsAny<string>(), It.IsAny<string>())).Returns(true);

            var filesystemPersistence = new FilesystemPersistence<PublishConfiguration>(filesystemAccessor.Object, objectSerializer.Object);

            // Act
            var result = filesystemPersistence.Save(objectToPersist, storageLocation);

            // Assert
            Assert.IsTrue(result);
        }
        public void Save_PublishConfiguration_StorageLocationIsInvalid_ArgumentExceptionIsThrown(string storageLocation)
        {
            // Arrange
            var objectToPersist = new PublishConfiguration();

            var filesystemAccessor = new Mock<IFilesystemAccessor>();
            var objectSerializer = new Mock<IObjectSerializer<PublishConfiguration>>();

            var filesystemPersistence = new FilesystemPersistence<PublishConfiguration>(filesystemAccessor.Object, objectSerializer.Object);

            // Act
            filesystemPersistence.Save(objectToPersist, storageLocation);
        }
        public void Save_PublishConfiguration_ObjectToPersistIsNull_ArgumentNullExceptionIsThrown()
        {
            // Arrange
            PublishConfiguration objectToPersist = null;
            string storageLocation = "temp-file";

            var filesystemAccessor = new Mock<IFilesystemAccessor>();
            var objectSerializer = new Mock<IObjectSerializer<PublishConfiguration>>();

            var filesystemPersistence = new FilesystemPersistence<PublishConfiguration>(filesystemAccessor.Object, objectSerializer.Object);

            // Act
            filesystemPersistence.Save(objectToPersist, storageLocation);
        }
        public void Save_PublishConfiguration_ObjectSerializerReturnInvalidResult_ResultIsFalse(string objectSerializerResult)
        {
            // Arrange
            var objectToPersist = new PublishConfiguration();
            string storageLocation = "temp-file";

            var filesystemAccessor = new Mock<IFilesystemAccessor>();
            var objectSerializer = new Mock<IObjectSerializer<PublishConfiguration>>();

            objectSerializer.Setup(o => o.Serialize(It.IsAny<PublishConfiguration>())).Returns(objectSerializerResult);

            var filesystemPersistence = new FilesystemPersistence<PublishConfiguration>(filesystemAccessor.Object, objectSerializer.Object);

            // Act
            var result = filesystemPersistence.Save(objectToPersist, storageLocation);

            // Assert
            Assert.IsFalse(result);
        }
        public void Load_PublishConfiguration_StorageLocationIsInvalid(string storageLocation)
        {
            // Arrange
            var filesystemAccessor = new Mock<IFilesystemAccessor>();
            var objectSerializer = new Mock<IObjectSerializer<PublishConfiguration>>();

            var filesystemPersistence = new FilesystemPersistence<PublishConfiguration>(filesystemAccessor.Object, objectSerializer.Object);

            // Act
            filesystemPersistence.Load(storageLocation);
        }
        public void Load_PublishConfiguration_StorageLocationDoesNotExist_ResultIsNull()
        {
            // Arrange
            string storageLocation = "temp-file";

            var filesystemAccessor = new Mock<IFilesystemAccessor>();
            var objectSerializer = new Mock<IObjectSerializer<PublishConfiguration>>();

            filesystemAccessor.Setup(f => f.FileExists(It.IsAny<string>())).Returns(false);

            var filesystemPersistence = new FilesystemPersistence<PublishConfiguration>(filesystemAccessor.Object, objectSerializer.Object);

            // Act
            var result = filesystemPersistence.Load(storageLocation);

            // Assert
            Assert.IsNull(result);
        }
        public void Setup()
        {
            var applicationInformation = ApplicationInformationProvider.GetApplicationInformation();

            var encodingProvider = new DefaultFileEncodingProvider();
            var sourceRepositoryConfigurationFactory = new SourceRepositoryConfigurationFactory();
            var objectSerializer = new JSONObjectSerializer<SourceRepositoryConfiguration[]>();
            var filesystemAccessor = new PhysicalFilesystemAccessor(encodingProvider);
            var filesystemPersistence = new FilesystemPersistence<SourceRepositoryConfiguration[]>(filesystemAccessor, objectSerializer);

            this.sourceRepositoryProvider = new ConfigFileSourceRepositoryProvider(applicationInformation, sourceRepositoryConfigurationFactory, filesystemPersistence);
        }