@Before public void setUp() { datenbasisFactory = new DatenbasisFactory(); registerFactory = mock(RegisterFactory.class); datenbasisFactory.setRegisterFactory(registerFactory); dataInputFacade = mock(DataInputFacade.class); dataOutputFacade = mock(DataOutputFacade.class); }
@Test public void getInstanceCallsFacadeCorrectly() throws IOException, UnknownBuchungTypeException, ParseException { when(dataInputFacade.getDataString()).thenReturn(ANY_STRING_VALUE); when(dataInputFacade.getInt()).thenReturn(33); datenbasisFactory.getInstance(dataInputFacade); verify(dataInputFacade, times(34)).getDataString(); // 1x version; 33x register name verify(dataInputFacade).getInt(); }
@Test public void getInstanceProducesThreeRegisterEntriesWithSameName() throws IOException, UnknownBuchungTypeException, ParseException { when(dataInputFacade.getDataString()).thenReturn(ANY_STRING_VALUE); when(dataInputFacade.getInt()).thenReturn(3); when(registerFactory.getInstance(any(DataInputFacade.class), anyString())) .thenReturn(new Register(ANY_STRING_VALUE)); datenbasisFactory.getInstance(dataInputFacade); verify(registerFactory, times(3)).getInstance(dataInputFacade, ANY_STRING_VALUE); }
@Test public void saveDatenbasis() throws IOException { Datenbasis datenbasis = new Datenbasis(); datenbasis.setVersionInfo(ANY_VERSION_INFORMATION); List<Register> registerList = createRegisterList(); datenbasis.setRegisterList(registerList); datenbasisFactory.saveData(dataOutputFacade, datenbasis); verify(dataOutputFacade).writeString(ANY_VERSION_INFORMATION); verify(dataOutputFacade).writeInt(registerList.size()); verify(registerFactory).saveData(dataOutputFacade, registerList.get(0)); verify(registerFactory).saveData(dataOutputFacade, registerList.get(1)); }
@Test public void getInstanceCallsRegisterFactorySeveralTimes() throws IOException, UnknownBuchungTypeException, ParseException { when(dataInputFacade.getDataString()).thenReturn(ANY_REGISTER_NAME); when(dataInputFacade.getInt()).thenReturn(3); when(registerFactory.getInstance(any(DataInputFacade.class), anyString())) .thenReturn(new Register(ANY_REGISTER_NAME)); Datenbasis actualDatenbasis = datenbasisFactory.getInstance(dataInputFacade); List<Register> registers = actualDatenbasis.getRegisterList(); assertThat(registers).hasSize(3); assertThat(registers.get(0).getName()).isEqualTo(ANY_REGISTER_NAME); assertThat(registers.get(1).getName()).isEqualTo(ANY_REGISTER_NAME); assertThat(registers.get(2).getName()).isEqualTo(ANY_REGISTER_NAME); verify(registerFactory, times(3)).getInstance(dataInputFacade, ANY_REGISTER_NAME); }