From 7acb2b3e40e3832e3ca4c16bcae854e2965a512c Mon Sep 17 00:00:00 2001 From: Fabrice Lecomte Date: Wed, 31 Jul 2019 23:42:46 +0200 Subject: [PATCH] feature #6: Add simple test for article routes --- .../sql/functions/article/find_articles.sql | 2 +- .../sql/migrations/0000-init_schema.up.sql | 4 +- test/ApplicationTest.kt | 20 ------ test/ArticleRouteTest.kt | 62 +++++++++++++++++++ 4 files changed, 65 insertions(+), 23 deletions(-) delete mode 100644 test/ApplicationTest.kt create mode 100644 test/ArticleRouteTest.kt diff --git a/resources/sql/functions/article/find_articles.sql b/resources/sql/functions/article/find_articles.sql index 143ac7a..7706049 100644 --- a/resources/sql/functions/article/find_articles.sql +++ b/resources/sql/functions/article/find_articles.sql @@ -16,7 +16,7 @@ begin a.*, find_citizen_by_id(a.created_by_id) as created_by from article as a - where title ilike '%'||"search"||'%' + where "search" is null or title ilike '%'||"search"||'%' order by case direction when 'asc' then case sort diff --git a/resources/sql/migrations/0000-init_schema.up.sql b/resources/sql/migrations/0000-init_schema.up.sql index 254ad84..1644479 100644 --- a/resources/sql/migrations/0000-init_schema.up.sql +++ b/resources/sql/migrations/0000-init_schema.up.sql @@ -65,14 +65,14 @@ begin into generated_number from article as t where t.version_id = _version_id - order by version_number + order by version_number desc limit 1; elseif tablename = 'constitution'::regclass then select version_number + 1 into generated_number from constitution as t where t.version_id = _version_id - order by version_number + order by version_number desc limit 1; else raise exception '% is not implemented', tablename::text; diff --git a/test/ApplicationTest.kt b/test/ApplicationTest.kt deleted file mode 100644 index c07e918..0000000 --- a/test/ApplicationTest.kt +++ /dev/null @@ -1,20 +0,0 @@ -package fr.dcproject - -import io.ktor.http.HttpMethod -import io.ktor.http.HttpStatusCode -import io.ktor.server.testing.handleRequest -import io.ktor.server.testing.withTestApplication -import kotlin.test.Test -import kotlin.test.assertEquals - -class ApplicationTest { - @Test - fun testRoot() { - withTestApplication({ module() }) { - handleRequest(HttpMethod.Get, "/articles").apply { - assertEquals(HttpStatusCode.OK, response.status()) - assertEquals("todo", response.content) - } - } - } -} diff --git a/test/ArticleRouteTest.kt b/test/ArticleRouteTest.kt new file mode 100644 index 0000000..c75caa4 --- /dev/null +++ b/test/ArticleRouteTest.kt @@ -0,0 +1,62 @@ +package fr.dcproject + +import io.ktor.http.ContentType +import io.ktor.http.HttpHeaders +import io.ktor.http.HttpMethod +import io.ktor.http.HttpStatusCode +import io.ktor.server.testing.handleRequest +import io.ktor.server.testing.setBody +import io.ktor.server.testing.withTestApplication +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertTrue + +class ArticleRouteTest { + private val article: String = """{ + "id" : "8e8dd0aa-2b2b-41e1-bff5-ea613c988774", + "version_id" : "e3ec9ea8-87ac-46ac-8321-8f2bc8c687bc", + "version_number" : 1, + "title" : "title13", + "annonymous" : false, + "content" : "content13", + "description" : "description13", + "tags" : [ "sky", "nuclear" ], + "created_at" : "2019-07-30T14:08:51.420Z", + "created_by" : { + "id" : "d821a211-10d6-4d65-b0db-e0bd33d21761", + "name" : { + "civility" : "m", + "last_name" : "LAST NAME13", + "first_name" : "first name13" + }, + "birthday" : "1994-07-30", + "user_id" : "127b9979-1474-4da1-8453-1e10462ae593", + "vote_annonymous" : false, + "follow_annonymous" : false, + "user" : null, + "created_at" : "2019-07-30T14:08:49.742Z" + } + }""" + + @Test + fun testRoot() { + withTestApplication({ module() }) { + handleRequest(HttpMethod.Get, "/articles").apply { + assertEquals(HttpStatusCode.OK, response.status()) + } + + handleRequest(HttpMethod.Post, "/articles") { + this.setBody(article) + this.addHeader(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + }.apply { + assertEquals(HttpStatusCode.OK, response.status()) + } + + handleRequest(HttpMethod.Get, "/articles/8e8dd0aa-2b2b-41e1-bff5-ea613c988774").apply { + assertEquals(HttpStatusCode.OK, response.status()) + assertTrue(response.content!!.contains("8e8dd0aa-2b2b-41e1-bff5-ea613c988774")) + } + } + + } +}