private string AssertParser <T>(ElasticsearchInstallationModel model, string key, T value,
                                        Action <ElasticsearchInstallationModel, T> assert)
        {
            var args   = new[] { $"{key.Split('.').Last()}={value}" };
            var models = model.AllSteps.Cast <IValidatableReactiveObject>().Concat(new[] { model }).ToList();
            var viewModelArgumentParser = new ElasticsearchArgumentParser(models, args);

            assert(model, value);

            var msiParams = model.ToMsiParamsString();

            msiParams.Should().NotBeEmpty();
            return(msiParams);
        }
            public string Assert(Action <ElasticsearchInstallationModel> assert)
            {
                var args   = this.Arguments.Select(t => $"{t.Item1.Split('.').Last()}={t.Item3}").ToArray();
                var models = this._model.AllSteps.Cast <IValidatableReactiveObject>().Concat(new[] { this._model }).ToList();
                var viewModelArgumentParser = new ElasticsearchArgumentParser(models, args);

                assert(this._model);

                var msiParams = this._model.ToMsiParamsString();

                msiParams.Should().NotBeEmpty();
                foreach (var t in this.Arguments)
                {
                    msiParams.Should().Contain($"{t.Item1.ToUpperInvariant()}=\"{t.Item3}\"");
                }
                return(msiParams);
            }