Skip to content

Commit

Permalink
Change Register DataProvider to Lazyi and remove use Activator for CF…
Browse files Browse the repository at this point in the history
…G command, change it to DI
  • Loading branch information
vladimir-nikonov committed Nov 21, 2024
1 parent 316d3fd commit 2d4daf6
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 14 deletions.
2 changes: 1 addition & 1 deletion clio.tests/Command/BaseClioModuleTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public virtual void Setup(){
FileSystem = CreateFs();

BindingsModule bindingModule = new(FileSystem);
Container = bindingModule.Register(EnvironmentSettings, true, AdditionalRegistrations);
Container = bindingModule.Register(EnvironmentSettings, AdditionalRegistrations);
}

#endregion
Expand Down
1 change: 0 additions & 1 deletion clio.tests/Command/DownloadSettingsToManifestCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,6 @@ private IContainer InternalGetContainer() {
};
IContainer container = bm.Register(
settings: environmentSettings,
registerNullSettingsForTest: false,
additionalRegistrations: builder => {
builder.RegisterInstance(dataProviderMock).As<IDataProvider>();
});
Expand Down
4 changes: 2 additions & 2 deletions clio.tests/Command/PingAppCommandTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public void PingAppCommandShouldBeUsesAllRetryOptions(bool isNetCore) {
EnvironmentSettings.IsNetCore = isNetCore;
FileSystem = CreateFs();
BindingsModule bindingModule = new(FileSystem);
Container = bindingModule.Register(EnvironmentSettings, true, AdditionalRegistrations);
Container = bindingModule.Register(EnvironmentSettings, AdditionalRegistrations);

PingAppCommand command = Container.Resolve<PingAppCommand>();
PingAppOptions options = new PingAppOptions() { TimeOut = 1, RetryCount = 2, RetryDelay = 3 };
Expand All @@ -52,7 +52,7 @@ public void PingAppCommandShouldBeUsesAllRetryOptionsOnNet6Environment(bool isNe
//Arrange
FileSystem = CreateFs();
BindingsModule bindingModule = new(FileSystem);
Container = bindingModule.Register(EnvironmentSettings, true, AdditionalRegistrations);
Container = bindingModule.Register(EnvironmentSettings, AdditionalRegistrations);
PingAppCommand command = Container.Resolve<PingAppCommand>();
PingAppOptions options = new PingAppOptions() {
TimeOut = 1,
Expand Down
36 changes: 36 additions & 0 deletions clio.tests/Command/RegWebAppCommandTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
using Autofac;
using Clio.Command;
using Clio.UserEnvironment;
using NSubstitute;
using NUnit.Framework;

namespace Clio.Tests.Command
{
[TestFixture]
public class RegAppCommandTests: BaseClioModuleTests
{
private ISettingsRepository _settingsRepository;

protected override void AdditionalRegistrations(ContainerBuilder containerBuilder) {
base.AdditionalRegistrations(containerBuilder);
_settingsRepository = Substitute.For<ISettingsRepository>();
containerBuilder.RegisterInstance(_settingsRepository).As<ISettingsRepository>();
}

[Test]
public void RegAppCommandTests_ActivateFromDI_ShouldReturnInstance() {
var command = Container.Resolve<RegAppCommand>();
Assert.That(command != null);
}

[Test]
public void RegAppCommand_ShouldNotThrowException_WithCfgOpenParaameters() {
var command = Container.Resolve<RegAppCommand>();
RegAppOptions openCfgOpts = new RegAppOptions() {
EnvironmentName = "open"
};
Assert.DoesNotThrow(() => command.Execute(openCfgOpts));
_settingsRepository.Received(1).OpenFile();
}
}
}
15 changes: 7 additions & 8 deletions clio/BindingsModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public BindingsModule(IFileSystem fileSystem = null){
_fileSystem = fileSystem;
}

public IContainer Register(EnvironmentSettings settings = null, bool registerNullSettingsForTest = false,
public IContainer Register(EnvironmentSettings settings = null,
Action<ContainerBuilder> additionalRegistrations = null) {

var containerBuilder = new ContainerBuilder();
Expand All @@ -50,18 +50,17 @@ public IContainer Register(EnvironmentSettings settings = null, bool registerNul

containerBuilder.RegisterInstance(ConsoleLogger.Instance).As<ILogger>().SingleInstance();

if (settings != null || registerNullSettingsForTest) {
containerBuilder.RegisterInstance(settings);
if (!registerNullSettingsForTest) {
if (settings != null) {
containerBuilder.Register<IDataProvider>(provider => {
var creatioClientInstance = new ApplicationClientFactory().CreateClient(settings);
containerBuilder.RegisterInstance(creatioClientInstance).As<IApplicationClient>();
IDataProvider provider = string.IsNullOrEmpty(settings.Login) switch {
IDataProvider dataProvider = string.IsNullOrEmpty(settings.Login) switch {
true => new RemoteDataProvider(settings.Uri, settings.AuthAppUri, settings.ClientId, settings.ClientSecret, settings.IsNetCore),
false => new RemoteDataProvider(settings.Uri, settings.Login, settings.Password, settings.IsNetCore)
};
containerBuilder.RegisterInstance(provider).As<IDataProvider>();
}

return dataProvider;
});
containerBuilder.RegisterInstance(settings);
}

containerBuilder.Register<Kubernetes>( provider => {
Expand Down
5 changes: 3 additions & 2 deletions clio/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -640,8 +640,9 @@ private static int ConvertPackage(ConvertOptions opts) {
ExecuteAssemblyOptions opts => CreateRemoteCommand<AssemblyCommand>(opts).Execute(opts),
RestartOptions opts => CreateRemoteCommand<RestartCommand>(opts).Execute(opts),
ClearRedisOptions opts => CreateRemoteCommand<RedisCommand>(opts).Execute(opts),
RegAppOptions opts => CreateCommand<RegAppCommand>(
new SettingsRepository(), new ApplicationClientFactory(), new PowerShellFactory()).Execute(opts),
RegAppOptions opts => Resolve<RegAppCommand>(opts).Execute(opts),
//RegAppOptions opts => CreateCommand<RegAppCommand>(
// new SettingsRepository(), new ApplicationClientFactory(), new PowerShellFactory()).Execute(opts),
AppListOptions opts => CreateCommand<ShowAppListCommand>(new SettingsRepository()).Execute(opts),
UnregAppOptions opts => CreateCommand<UnregAppCommand>(new SettingsRepository()).Execute(opts),
GeneratePkgZipOptions opts => Resolve<CompressPackageCommand>().Execute(opts),
Expand Down

0 comments on commit 2d4daf6

Please sign in to comment.