protected virtual void InitializeCommand(object command, DataEngineCommand innerCommand)
 {
   var cmd = command as IDataEngineCommand;
   if (cmd != null)
   {
     cmd.Initialize(innerCommand);
   }
 }
    protected CommandTestBase()
    {
      this.database = Database.GetDatabase("master");
      this.dataStorage = Substitute.For<DataStorage>(this.database);

      this.innerCommand = Substitute.For<DataEngineCommand>(this.dataStorage);
      this.innerCommand.DataStorage.Returns(this.dataStorage);
    }
    public void ShouldGetDataStorageFromSwitcher(DataEngineCommand sut, DataStorageSwitcher switcher)
    {
      // arrange
      var databaseName = sut.DataStorage.Database.Name;

      // act && assert
      sut.DataStorage.Should().Be(DataStorageSwitcher.CurrentValue(databaseName));
    }
    public void ShouuldReceiveDataStorage()
    {
      // act
      var command = new DataEngineCommand(dataStorage);

      // assert
      command.DataStorage.Should().Be(dataStorage);
    }
    public void ShouldSetDataStorage()
    {
      // arrange
      var command = new DataEngineCommand();

      // act
      command.Initialize(this.dataStorage);

      // assert
      command.DataStorage.Should().Be(this.dataStorage);
    }
    public void ShouldCreateInstance()
    {
      // arrange
      var command = new DataEngineCommand(this.dataStorage);

      // act
      var newCommand = command.CreateInstance<Sitecore.Data.Engines.DataCommands.GetItemCommand, GetItemCommand>();

      // assert
      newCommand.Should().NotBeNull();
      newCommand.Should().BeAssignableTo<Sitecore.Data.Engines.DataCommands.GetItemCommand>();
      newCommand.Should().BeOfType<GetItemCommand>();
    }
    public override void Process(InitDbArgs args)
    {
      var commands = args.Database.Engines.DataEngine.Commands;
      var innerCommand = new DataEngineCommand(args.DataStorage);

      this.InitializeCommand(commands.AddFromTemplatePrototype, innerCommand);
      this.InitializeCommand(commands.AddVersionPrototype, innerCommand);
      this.InitializeCommand(commands.CreateItemPrototype, innerCommand);
      this.InitializeCommand(commands.DeletePrototype, innerCommand);
      this.InitializeCommand(commands.GetChildrenPrototype, innerCommand);
      this.InitializeCommand(commands.GetItemPrototype, innerCommand);
      this.InitializeCommand(commands.GetParentPrototype, innerCommand);
      this.InitializeCommand(commands.GetRootItemPrototype, innerCommand);
      this.InitializeCommand(commands.GetVersionsPrototype, innerCommand);
      this.InitializeCommand(commands.HasChildrenPrototype, innerCommand);
      this.InitializeCommand(commands.ResolvePathPrototype, innerCommand);
      this.InitializeCommand(commands.SaveItemPrototype, innerCommand);
    }
 public virtual void Initialize(DataEngineCommand command)
 {
   this.innerCommand = command;
 }