27 private $wrapperSelectMock;
32 private $connectionMock;
42 private $correlationName;
52 private $rangeFieldAlias;
61 $this->batchSize = 10;
62 $this->correlationName =
'correlationName';
63 $this->rangeField =
'rangeField';
64 $this->rangeFieldAlias =
'rangeFieldAlias';
66 $this->selectMock = $this->createMock(Select::class);
67 $this->wrapperSelectMock = $this->createMock(Select::class);
68 $this->connectionMock = $this->createMock(AdapterInterface::class);
69 $this->connectionMock->expects($this->any())->method(
'select')->willReturn($this->wrapperSelectMock);
70 $this->selectMock->expects($this->once())->method(
'getConnection')->willReturn($this->connectionMock);
71 $this->connectionMock->expects($this->any())->method(
'quoteIdentifier')->willReturnArgument(0);
76 $this->correlationName,
78 $this->rangeFieldAlias
91 $filed = $this->correlationName .
'.' . $this->rangeField;
93 $this->selectMock->expects($this->once())->method(
'where')->with($filed .
' > ?', 0);
94 $this->selectMock->expects($this->once())->method(
'limit')->with($this->batchSize);
95 $this->selectMock->expects($this->once())->method(
'order')->with($filed .
' ASC');
96 $this->assertEquals($this->selectMock, $this->model->current());
97 $this->assertEquals($this->selectMock, $this->model->current());
98 $this->assertEquals(0, $this->model->key());
134 $this->connectionMock->expects($this->at($startCallIndex))
136 ->willReturn([
'max' => 10,
'cnt' => 10]);
138 $this->connectionMock->expects($this->at($startCallIndex += $stepCall))
140 ->willReturn([
'max' => 20,
'cnt' => 10]);
142 $this->connectionMock->expects($this->at($startCallIndex += $stepCall))
144 ->willReturn([
'max' => 25,
'cnt' => 5]);
146 $this->connectionMock->expects($this->at($startCallIndex += $stepCall))
148 ->willReturn([
'max' =>
null,
'cnt' => 0]);
156 foreach ($this->model as $key =>
$select) {
158 $this->assertEquals($iteration, $key);
161 $this->assertCount(3,
$result);
175 $filed = $this->correlationName .
'.' . $this->rangeField;
176 $this->selectMock->expects($this->at(0))->method(
'where')->with($filed .
' > ?', 0);
177 $this->selectMock->expects($this->exactly(3))->method(
'limit')->with($this->batchSize);
178 $this->selectMock->expects($this->exactly(3))->method(
'order')->with($filed .
' ASC');
179 $this->selectMock->expects($this->at(3))->method(
'where')->with($filed .
' > ?', 25);
181 $this->wrapperSelectMock->expects($this->exactly(3))->method(
'from')->with(
184 new \
Zend_Db_Expr(
'MAX(' . $this->rangeFieldAlias .
') as max'),
188 $this->connectionMock->expects($this->exactly(3))
190 ->with($this->wrapperSelectMock)
191 ->willReturn([
'max' => 25,
'cnt' => 10]);
193 $this->assertEquals($this->selectMock, $this->model->next());
194 $this->assertEquals(1, $this->model->key());
196 $this->assertEquals($this->selectMock, $this->model->next());
197 $this->assertEquals($this->selectMock, $this->model->current());
198 $this->assertEquals(2, $this->model->key());