Skip to content

Commit

Permalink
some more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Grodien committed Feb 7, 2025
1 parent 6d9bab8 commit 6f79e04
Showing 1 changed file with 71 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -210,4 +210,75 @@ void main() {
duration: anyNamed('duration'), curve: anyNamed('curve')))
.called(1);
});

test('test scrolls with delay after touch', () async {
final List<BaseData> journeyData = [
Signal(order: 0, kilometre: []),
Signal(order: 100, kilometre: []),
Signal(order: 200, kilometre: []),
Signal(order: 300, kilometre: []),
Signal(order: 400, kilometre: []),
];
final journeyRows = journeyData.map((data) => SignalRow(metadata: Metadata(), data: data as Signal)).toList();
final journey = Journey(
metadata: Metadata(currentPosition: journeyData[2]),
data: journeyData,
);

final scrollControllerMock = MockScrollController();
final scrollPositionMock = MockScrollPosition();
when(scrollControllerMock.positions).thenReturn([scrollPositionMock]);
when(scrollControllerMock.position).thenReturn(scrollPositionMock);
when(scrollPositionMock.maxScrollExtent).thenReturn(BaseRowBuilder.rowHeight * 4);

final testee = AutomaticAdvancementController(controller: scrollControllerMock);

testee.updateRenderedRows(journeyRows);
testee.handleJourneyUpdate(journey, TrainJourneySettings(automaticAdvancementActive: true));
testee.onTouch();

await Future.delayed(const Duration(seconds: 11));

verify(scrollControllerMock.animateTo(BaseRowBuilder.rowHeight * 2,
duration: anyNamed('duration'), curve: anyNamed('curve')))
.called(2);
});

test('test does not scroll with delay after touch if disabled', () async {
final List<BaseData> journeyData = [
Signal(order: 0, kilometre: []),
Signal(order: 100, kilometre: []),
Signal(order: 200, kilometre: []),
Signal(order: 300, kilometre: []),
Signal(order: 400, kilometre: []),
];
final journeyRows = journeyData.map((data) => SignalRow(metadata: Metadata(), data: data as Signal)).toList();
final journey = Journey(
metadata: Metadata(currentPosition: journeyData[2]),
data: journeyData,
);

final scrollControllerMock = MockScrollController();
final scrollPositionMock = MockScrollPosition();
when(scrollControllerMock.positions).thenReturn([scrollPositionMock]);
when(scrollControllerMock.position).thenReturn(scrollPositionMock);
when(scrollPositionMock.maxScrollExtent).thenReturn(BaseRowBuilder.rowHeight * 4);

final testee = AutomaticAdvancementController(controller: scrollControllerMock);

testee.updateRenderedRows(journeyRows);
testee.handleJourneyUpdate(journey, TrainJourneySettings(automaticAdvancementActive: true));

verify(scrollControllerMock.animateTo(BaseRowBuilder.rowHeight * 2,
duration: anyNamed('duration'), curve: anyNamed('curve')))
.called(1);

testee.onTouch();

testee.handleJourneyUpdate(journey, TrainJourneySettings(automaticAdvancementActive: false));

await Future.delayed(const Duration(seconds: 11));

verifyNever(scrollControllerMock.animateTo(any, duration: anyNamed('duration'), curve: anyNamed('curve')));
});
}

0 comments on commit 6f79e04

Please sign in to comment.