describe('VolumesController', function () {
  var $scope, $httpBackend, $routeParams;

  beforeEach(module('portainer'));
  beforeEach(inject(function (_$httpBackend_, $controller, _$routeParams_) {
    $scope = {};
    $httpBackend = _$httpBackend_;
    $routeParams = _$routeParams_;
    $controller('VolumesController', {
      $scope: $scope,
      $routeParams: $routeParams,
    });
  }));

  it('initializes correctly', function () {
    expectGetVolumes();
    $httpBackend.flush();
  });

  it('issues correct remove calls to the remote API', function () {
    expectGetVolumes();
    $httpBackend.flush();
    $scope.volumes[0].Checked = true;
    $scope.volumes[2].Checked = true;
    $httpBackend.expectDELETE('dockerapi/volumes/tardis').respond(200);
    $httpBackend.expectDELETE('dockerapi/volumes/bar').respond(200);
    $scope.removeAction();
    $httpBackend.flush();
  });
  it('issues a correct volume creation call to the remote API', function () {
    expectGetVolumes();
    var createBody = {
      Name: 'tardis',
      Driver: 'local',
    };
    $httpBackend.expectPOST('dockerapi/volumes/create', createBody).respond(201);
    expectGetVolumes();
    $scope.addVolume(createBody);
    $httpBackend.flush();
  });

  function expectGetVolumes() {
    $httpBackend.expectGET('dockerapi/volumes').respond({
      Volumes: [
        {
          Name: 'tardis',
          Driver: 'local',
          Mountpoint: '/var/lib/docker/volumes/tardis',
        },
        {
          Name: 'foo',
          Driver: 'local',
          Mountpoint: '/var/lib/docker/volumes/foo',
        },
        {
          Name: 'bar',
          Driver: 'local',
          Mountpoint: '/var/lib/docker/volumes/bar',
        },
      ],
    });
  }
});