public void It_should_handle_OnOff_false()
        {
            // Arrange
            CommandFeatureBitDefintion def = null;
            var sb = new StringBuilder();

            SystemContext.ConsoleWriteLine = s => sb.Append(s);
            var bit = new CommandFeatureBitDefintion {
                Name = "foo", OnOff = false
            };
            var opts = new AddOptions {
                Name = "foo", OnOff = "false"
            };
            var repo = Substitute.For <IFeatureBitsRepo>();

            repo.AddAsync(Arg.Any <CommandFeatureBitDefintion>()).Returns(Task.FromResult((IFeatureBitDefinition)bit)).AndDoes(x =>
            {
                def = x.Arg <CommandFeatureBitDefintion>();
            });

            var it = new AddCommand(opts, repo);

            // Act
            var result = it.RunAsync().Result;

            // Assert
            result.Should().Be(0);
            sb.ToString().Should().Be("Feature bit added.");
            def.Should().NotBeNull();
            def.OnOff.Should().BeFalse();
        }
        public void It_should_run_and_create_a_FeatureBit_when_the_onOff_bit_is_false()
        {
            // Arrange
            var sb = new StringBuilder();

            SystemContext.ConsoleWriteLine = s => sb.Append(s);
            var bit = new CommandFeatureBitDefintion {
                Name = "foo"
            };
            var opts = new AddOptions {
                Name = "foo"
            };
            var repo = Substitute.For <IFeatureBitsRepo>();

            repo.AddAsync(bit).Returns(Task.FromResult((IFeatureBitDefinition)bit));

            var it = new AddCommand(opts, repo);

            // Act
            var result = it.RunAsync().Result;

            // Assert
            result.Should().Be(0);
            sb.ToString().Should().Be("Feature bit added.");
        }
        public void It_should_run_and_update_a_FeatureBit_if_it_already_exists_and_force_is_specified()
        {
            // Arrange
            var sb = new StringBuilder();

            SystemContext.ConsoleWriteLine = s => sb.Append(s);
            var opts = new AddOptions {
                Name = "foo", Force = true
            };
            var repo = Substitute.For <IFeatureBitsRepo>();

            repo.AddAsync(Arg.Any <IFeatureBitDefinition>()).Returns <Task <IFeatureBitDefinition> >(x => throw new DataException("Cannot add. Feature bit with name 'foo' already exists."));

            int counter = 0;

            repo.When(x => x.UpdateAsync(Arg.Any <IFeatureBitDefinition>())).Do((x => counter++));

            var it = new AddCommand(opts, repo);

            // Act
            var result = it.RunAsync().Result;

            // Assert
            sb.ToString().Should().Be("Feature bit updated.");
            result.Should().Be(0);
            counter.Should().Be(1);
        }
示例#4
0
        private static async Task <int> RunAddAndReturnExitCode(AddOptions opts)
        {
            var repo   = GetCorrectRepository(opts);
            var cmd    = new AddCommand(opts, repo);
            int result = await cmd.RunAsync();

            return(result);
        }
        public void It_should_run_and_throw_by_default_if_some_other_DataException_occurs_on_add()
        {
            // Arrange
            var sb = new StringBuilder();

            SystemContext.ConsoleErrorWriteLine = s => sb.Append(s);
            var opts = new AddOptions {
                Name = "foo"
            };
            var repo = Substitute.For <IFeatureBitsRepo>();

            repo.AddAsync(Arg.Any <IFeatureBitDefinition>()).Returns <Task <IFeatureBitDefinition> >(x => throw new DataException("Some random DataException."));

            var it = new AddCommand(opts, repo);

            // Act
            var result = it.RunAsync().Result;

            // Assert
            result.Should().Be(1);
            sb.ToString().Should().StartWith("System.Data.DataException: Some random DataException.");
        }
        public void It_should_run_and_throw_by_default_if_the_featurebit_name_already_exists()
        {
            // Arrange
            var sb = new StringBuilder();

            SystemContext.ConsoleErrorWriteLine = s => sb.Append(s);
            var opts = new AddOptions {
                Name = "foo"
            };
            var repo = Substitute.For <IFeatureBitsRepo>();

            repo.AddAsync(Arg.Any <IFeatureBitDefinition>()).Returns <Task <IFeatureBitDefinition> >(x => throw new DataException("Cannot add. Feature bit with name 'foo' already exists."));

            var it = new AddCommand(opts, repo);

            // Act
            var result = it.RunAsync().Result;

            // Assert
            result.Should().Be(1);
            sb.ToString().Should().Be("Feature bit 'foo' already exists. Use --force to overwrite existing feature bits.");
        }
        public void It_should_write_errors_to_the_console_if_theres_an_error()
        {
            // Arrange
            var sb = new StringBuilder();

            SystemContext.ConsoleErrorWriteLine = s => sb.Append(s);
            var opts = new AddOptions {
                Name = "foo"
            };
            var repo = Substitute.For <IFeatureBitsRepo>();

            repo.AddAsync(Arg.Any <IFeatureBitDefinition>()).Returns <Task <IFeatureBitDefinition> >(x => throw new Exception("Yow!"));

            var it = new AddCommand(opts, repo);

            // Act
            var result = it.RunAsync().Result;

            // Assert
            result.Should().Be(1);
            sb.ToString().Should().StartWith("System.Exception: Yow!");
        }