public void ModifiedNoteIsEncryptedAndStored() { string modelHtmlContent = "c2VjcmV0"; byte[] safeKey = new byte[] { 88 }; SettingsModel settingsModel = new SettingsModel(); SearchableHtmlConverter searchableConverter = new SearchableHtmlConverter(); Mock <IRepositoryStorageService> repositoryService = new Mock <IRepositoryStorageService>(); Mock <ISettingsService> settingsService = new Mock <ISettingsService>(); settingsService. Setup(m => m.LoadSettingsOrDefault()).Returns(settingsModel); Mock <ICryptor> cryptor = new Mock <ICryptor>(); cryptor. Setup(m => m.Decrypt(It.IsAny <byte[]>(), It.Is <byte[]>(v => v == safeKey))). Returns(CryptoUtils.StringToBytes("not secret anymore")); SafeListModel safes = new SafeListModel(new[] { new SafeModel { Id = Guid.NewGuid(), Key = safeKey }, }); NoteModel note = new NoteModel { Id = Guid.NewGuid(), HtmlContent = modelHtmlContent, SafeId = safes[0].Id }; NoteViewModel noteViewModel = new NoteViewModel( new Mock <INavigationService>().Object, new Mock <ILanguageService>().Object, new Mock <ISvgIconService>().Object, new Mock <IThemeService>().Object, new Mock <IBaseUrlService>().Object, searchableConverter, repositoryService.Object, new Mock <IFeedbackService>().Object, settingsService.Object, cryptor.Object, safes, new List <string>(), note); noteViewModel.UnlockedHtmlContent = "something new"; noteViewModel.OnStoringUnsavedData(); cryptor.Verify(m => m.Encrypt( It.Is <byte[]>(p => p.SequenceEqual(CryptoUtils.StringToBytes("something new"))), It.Is <byte[]>(p => p.SequenceEqual(safeKey)), It.IsAny <string>(), It.Is <string>(p => p == null)), Times.Once); repositoryService.Verify(m => m.TrySaveRepository(It.IsAny <NoteRepositoryModel>()), Times.Once); }
public void IsPinned_SetToTrue_MovesNotePositionToTop() { NoteRepositoryModel repository = CreateTestRepository(); NoteModel noteToBePinned = repository.Notes[1]; NoteViewModel noteViewModel = CreateMockedNoteViewModel(noteToBePinned, repository); noteViewModel.IsPinned = true; noteViewModel.OnStoringUnsavedData(); Assert.AreSame(noteToBePinned, repository.Notes[0]); // Now on first position Assert.IsTrue(noteToBePinned.IsPinned); }
public void TogglePinned_CalledTwice_DoesNotChangeNotePosition() { NoteRepositoryModel repository = CreateTestRepository(); NoteModel noteToBePinned = repository.Notes[1]; NoteViewModel noteViewModel = CreateMockedNoteViewModel(noteToBePinned, repository); noteViewModel.TogglePinnedCommand.Execute(null); noteViewModel.TogglePinnedCommand.Execute(null); noteViewModel.OnStoringUnsavedData(); Assert.AreSame(noteToBePinned, repository.Notes[1]); // No modification, no change of position Assert.IsFalse(noteToBePinned.IsPinned); }
public void IsPinned_NoPositionChange_NOTStoresPosition() { NoteRepositoryModel repository = CreateTestRepository(); var testNote = repository.Notes[0]; NoteViewModel noteViewModel = CreateMockedNoteViewModel(testNote, repository); var original = repository.OrderModifiedAt; testNote.IsPinned = true; //stays on indey 0 and does NOT refresh OrderModifiedAt noteViewModel.OnStoringUnsavedData(); Assert.IsTrue(repository.OrderModifiedAt == original); }
public void IsPinned_PositionChange_StoresPosition() { NoteRepositoryModel repository = CreateTestRepository(); var testNote = repository.Notes[2]; NoteViewModel noteViewModel = CreateMockedNoteViewModel(testNote, repository); var original = repository.OrderModifiedAt; testNote.IsPinned = true; //should be moved to index 0 and refresh OrderModifiedAt noteViewModel.OnStoringUnsavedData(); Assert.IsTrue(repository.OrderModifiedAt != original); }
public void TogglePinned_CalledTwice_DoesNotStoreRepository() { NoteModel noteToBePinned = new NoteModel { Id = new Guid("11111111-1111-1111-1111-111111111111") }; Mock <IRepositoryStorageService> repositoryStorageService = new Mock <IRepositoryStorageService>(); NoteViewModel noteViewModel = CreateMockedNoteViewModel(noteToBePinned, repositoryStorageService.Object); noteViewModel.TogglePinnedCommand.Execute(null); noteViewModel.TogglePinnedCommand.Execute(null); noteViewModel.OnStoringUnsavedData(); repositoryStorageService.Verify(m => m.TrySaveRepository(It.IsAny <NoteRepositoryModel>()), Times.Never); }
public void IsPinned_SetToFalse_MovesNotePositionPastLastPinned() { NoteRepositoryModel repository = CreateTestRepository(); repository.Notes[0].IsPinned = true; repository.Notes[1].IsPinned = true; NoteModel noteToBeUnpinned = repository.Notes[0]; NoteViewModel noteViewModel = CreateMockedNoteViewModel(noteToBeUnpinned, repository); noteViewModel.IsPinned = false; noteViewModel.OnStoringUnsavedData(); Assert.AreSame(noteToBeUnpinned, repository.Notes[1]); // Now on middle position Assert.IsFalse(noteToBeUnpinned.IsPinned); }
public void IsPinned_SetToFalse_WorksWithOnlySingleNote() { NoteRepositoryModel repository = new NoteRepositoryModel { Id = new Guid("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa") }; repository.Notes.Add(new NoteModel { Id = new Guid("11111111-1111-1111-1111-111111111111") }); NoteModel noteToBeUnpinned = repository.Notes[0]; NoteViewModel noteViewModel = CreateMockedNoteViewModel(noteToBeUnpinned, repository); noteViewModel.IsPinned = false; noteViewModel.OnStoringUnsavedData(); Assert.AreSame(noteToBeUnpinned, repository.Notes[0]); // Now on last position }