describe('Usługa stronicowania', function() {

  beforeEach(module('myApp.services'));

  var paginator;

  var items = [1, 2, 3, 4, 5, 6];
  var fetchFn = function(offset, limit, callback) {
    callback(items.slice(offset, offset + limit));
  };

  beforeEach(inject(function(Paginator) {
    paginator = Paginator(fetchFn, 3);
  }));

  it('Powinny być wyświetlone elementy na pierwszej stronie', function() {
    expect(paginator.currentPageItems).toEqual([1, 2, 3]);
    expect(paginator.hasNext()).toBeTruthy();
    expect(paginator.hasPrevious()).toBeFalsy();
  });

  it('Powinno nastąpić przejście na kolejną stronę', function() {
    paginator.next();
    expect(paginator.currentPageItems).toEqual([4, 5, 6]);
    expect(paginator.hasNext()).toBeFalsy();
    expect(paginator.hasPrevious()).toBeTruthy();
  });

  it('Powinno nastąpić przejście na poprzednią stronę', function() {
    paginator.next();
    expect(paginator.currentPageItems).toEqual([4, 5, 6]);
    paginator.previous();
    expect(paginator.currentPageItems).toEqual([1, 2, 3]);
  });

  it('Na ostatniej stronie nie powinno być przejścia na kolejną', function() {
    paginator.next();
    expect(paginator.currentPageItems).toEqual([4, 5, 6]);
    paginator.next();
    expect(paginator.currentPageItems).toEqual([4, 5, 6]);
  });

  it('Z pierwszej strony nie można wrócić na poprzednią', function() {
    paginator.previous();
    expect(paginator.currentPageItems).toEqual([1, 2, 3]);
  });
});
