diff --git a/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/conditions/InMemoryConditionRepository.kt b/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/conditions/InMemoryConditionRepository.kt index 4a50947..2ef8c85 100644 --- a/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/conditions/InMemoryConditionRepository.kt +++ b/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/conditions/InMemoryConditionRepository.kt @@ -42,8 +42,7 @@ class InMemoryConditionRepository : ConditionRepository { override fun saveIfNewerVersion(condition: Condition): Boolean { if ((this.conditions[condition.id]?.version ?: 0) < condition.version) { - this.conditions[condition.id] = condition - return true + return this.save(condition) } return false } diff --git a/src/test/kotlin/dev/pcvolkmer/oncoanalytics/monitor/conditions/InMemoryConditionRepositoryTest.kt b/src/test/kotlin/dev/pcvolkmer/oncoanalytics/monitor/conditions/InMemoryConditionRepositoryTest.kt new file mode 100644 index 0000000..c6cbe37 --- /dev/null +++ b/src/test/kotlin/dev/pcvolkmer/oncoanalytics/monitor/conditions/InMemoryConditionRepositoryTest.kt @@ -0,0 +1,47 @@ +package dev.pcvolkmer.oncoanalytics.monitor.conditions + +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test + +class InMemoryConditionRepositoryTest { + + private lateinit var conditionsRepository: InMemoryConditionRepository + + @BeforeEach + fun setup() { + this.conditionsRepository = InMemoryConditionRepository() + + // Setup initial data + this.conditionsRepository.saveIfNewerVersion(Condition(ConditionId("TEST"), "F79.9", 2)) + assertThat(this.conditionsRepository.findAll()).hasSize(1) + } + + @Test + fun shouldSaveNewerCondition() { + val success = this.conditionsRepository.saveIfNewerVersion(Condition(ConditionId("TEST"), "F79.9", 3)) + + assertThat(success).isTrue + assertThat(this.conditionsRepository.findAll()).hasSize(1) + assertThat(this.conditionsRepository.findAll()[0].version).isEqualTo(3) + } + + @Test + fun shouldNotSaveSameConditionTwice() { + val success = this.conditionsRepository.saveIfNewerVersion(Condition(ConditionId("TEST"), "F79.9", 2)) + + assertThat(success).isFalse + assertThat(this.conditionsRepository.findAll()).hasSize(1) + assertThat(this.conditionsRepository.findAll()[0].version).isEqualTo(2) + } + + @Test + fun shouldNotSaveOlderCondition() { + val success = this.conditionsRepository.saveIfNewerVersion(Condition(ConditionId("TEST"), "F79.9", 1)) + + assertThat(success).isFalse + assertThat(this.conditionsRepository.findAll()).hasSize(1) + assertThat(this.conditionsRepository.findAll()[0].version).isEqualTo(2) + } + +} \ No newline at end of file