@Test
public void testRecordUpdate()
throws IOException {
Scene scene = EasyMock.createMock(Scene.class);
EasyMock.expect(scene.isSequential()).andReturn(false).anyTimes();
RecordedHttpExchange recordedHttpExchange1 = EasyMock.createStrictMock(RecordedHttpExchange.class);
RecordedHttpExchange recordedHttpExchange2 = EasyMock.createStrictMock(RecordedHttpExchange.class);
RecordedHttpRequest recordedHttpRequest1 = EasyMock.createStrictMock(RecordedHttpRequest.class);
EasyMock.expect(recordedHttpExchange1.getRecordedHttpRequest()).andReturn(recordedHttpRequest1);
RecordedHttpRequest incomingHttpRequest = EasyMock.createStrictMock(RecordedHttpRequest.class);
RecordedHttpResponse incomingHttpResponse = EasyMock.createStrictMock(RecordedHttpResponse.class);
ArrayList<RecordedHttpExchange> recordedHttpExchangeArrayList = new ArrayList<>();
recordedHttpExchangeArrayList.add(recordedHttpExchange1);
recordedHttpExchangeArrayList.add(recordedHttpExchange2);
EasyMock.expect(scene.getRecordedHttpExchangeList()).andReturn(recordedHttpExchangeArrayList).times(3);
SceneWriter sceneWriter = EasyMock.createStrictMock(SceneWriter.class);
MatchRule matchRule = EasyMock.createStrictMock(MatchRule.class);
EasyMock.expect(matchRule.test(incomingHttpRequest, recordedHttpRequest1)).andReturn(true);
sceneWriter.writeScene(scene);
EasyMock.expectLastCall();
EasyMock.replay(scene, sceneWriter, recordedHttpExchange1, matchRule);
SceneAccessLayer sceneAccessLayer = new SceneAccessLayer(scene, sceneWriter, matchRule);
sceneAccessLayer.record(incomingHttpRequest, incomingHttpResponse);
sceneAccessLayer.flush();
List<RecordedHttpExchange> recordedHttpExchangeList = scene.getRecordedHttpExchangeList();
Assert.assertEquals(recordedHttpExchangeList.size(), 2);
Assert.assertEquals(recordedHttpExchangeList.get(0).getRecordedHttpRequest(), incomingHttpRequest);
Assert.assertEquals(recordedHttpExchangeList.get(0).getRecordedHttpResponse(), incomingHttpResponse);
EasyMock.verify(scene, sceneWriter, recordedHttpExchange1, matchRule);
}