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); }
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!"); }