public SingleBuildScenario(
            IFixture fixture,
            ITeamCityClient client,
            IBuildConfigXmlClient buildConfigXmlClient,
            long buildId,
            string buildConfigId   = null,
            string buildConfigName = null,
            List <ScenarioDependency> dependencies = null,
            Properties buildParameters             = null)
        {
            var projectId = fixture.Create <string>();

            buildConfigId = buildConfigId ?? fixture.Create <string>();

            BuildConfig = fixture.Build <BuildConfig>()
                          .WithId(buildConfigId)
                          .WithProjectId(projectId)
                          .WithName(buildConfigName ?? fixture.Create <string>())
                          .WithParameters(buildParameters ?? fixture.Create <Properties>())
                          .WithDependencies(dependencies?.Select(d => d.AsDependencyDefinition()).ToArray() ??
                                            fixture.CreateMany <DependencyDefinition>().ToArray())
                          .Create();

            BuildConfigXml = new BuildConfigXmlGenerator(buildConfigXmlClient)
                             .WithProjectId(projectId)
                             .WithId(buildConfigId)
                             .WithName(buildConfigName ?? fixture.Create <string>())
                             .WithParameters(buildParameters ?? fixture.Create <Properties>())
                             .WithDependencies(dependencies?.Select(d => d.AsDependencyDefinition()).ToArray() ??
                                               fixture.CreateMany <DependencyDefinition>().ToArray())
                             .Create();

            Build = fixture.Build <Build>()
                    .WithId(buildId)
                    .WithDependencies(dependencies?.Select(d => d.AsDependency()).ToArray() ??
                                      fixture.CreateMany <Dependency>().ToArray())
                    .WithBuildConfigSummary(BuildConfig)
                    .Create();

            Project = fixture.Build <Project>()
                      .WithId(Build.BuildConfig.ProjectId)
                      .WithBuildConfigSummary(BuildConfig)
                      .Create();

            client.Builds
            .ById(buildId)
            .Returns(Task.FromResult(Build));

            client.Builds
            .ByNumber(Build.Number, BuildConfig.Id)
            .Returns(Task.FromResult(Build));

            client.Projects
            .GetById(Project.Id)
            .Returns(Task.FromResult(Project));

            client.BuildConfigs
            .GetByConfigurationId(BuildConfig.Id)
            .Returns(Task.FromResult(BuildConfig));

            buildConfigXmlClient
            .Read(BuildConfigXml.ProjectId, BuildConfigXml.BuildConfigId)
            .Returns(BuildConfigXml);

            buildConfigXmlClient
            .ReadAsOf(BuildConfigXml.ProjectId, BuildConfigXml.BuildConfigId, Arg.Any <DateTime>())
            .Returns(BuildConfigXml);

            var clonedBuildConfig = BuildConfig.CloneViaJson();

            clonedBuildConfig.Id   = BuildConfig.Id + "_Clone";
            clonedBuildConfig.Name = buildConfigName + Consts.SuffixSeparator + "Clone";

            client.BuildConfigs.GenerateUniqueBuildConfigId(projectId, clonedBuildConfig.Name)
            .Returns(Task.FromResult(clonedBuildConfig.Id));
        }