public void Can_discard_volatile_visited_state() { try { List <IWorkItem> items = _repository.GetItems().ToList(); items.ForEach(item => Assert.False(item.Visited)); IWorkItem first = items.First(); Assert.False(first.Visited); first.Visited = true; first.Status = WorkItemStatus.Done; _repository.UpdateVolatileState(items); items = _repository.GetItems().ToList(); first = items.First(); Assert.True(first.Visited); Assert.AreEqual(WorkItemStatus.Done, first.Status); _repository.Discard(); items = _repository.GetItems().ToList(); first = items.First(); Assert.False(first.Visited); Assert.AreEqual(WorkItemStatus.Todo, first.Status); } finally { // reset visited state //List<IWorkItem> items = _repository.GetItems().ToList(); //items.First().Visited = false; //items.First().Status = WorkItemStatus.Todo; //_repository.UpdateVolatileState(items); //_repository.Commit(); } }