From becceb030a7d1cc007e2494dd0e31da5dd022407 Mon Sep 17 00:00:00 2001 From: Hawlink Date: Thu, 9 Apr 2020 17:33:35 +0200 Subject: [PATCH 1/5] added controllers --- src/main/groovy/gl51/MovieController.groovy | 29 +++++++++ .../gl51/movie/data/MovieRequest.groovy | 8 +++ src/test/groovy/MovieControllerSpec.groovy | 59 +++++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 src/main/groovy/gl51/MovieController.groovy create mode 100644 src/main/groovy/gl51/movie/data/MovieRequest.groovy create mode 100644 src/test/groovy/MovieControllerSpec.groovy diff --git a/src/main/groovy/gl51/MovieController.groovy b/src/main/groovy/gl51/MovieController.groovy new file mode 100644 index 0000000..254ee0d --- /dev/null +++ b/src/main/groovy/gl51/MovieController.groovy @@ -0,0 +1,29 @@ +package gl51 + +import gl51.movie.data.Movie +import gl51.movie.data.MovieRequest +import gl51.movie.service.MovieRegistry +import io.micronaut.http.annotation.Controller +import io.micronaut.http.annotation.Get +import io.micronaut.http.HttpStatus +import io.micronaut.http.annotation.Post + +import javax.inject.Inject + + +@Controller("/movie") +class MovieController { + + @Inject + MovieRegistry registry + + @Get("/") + List index() { + [] + } + + @Post('/') + HttpStatus addMovie(MovieRequest movieRequest) { + HttpStatus.CREATED + } +} diff --git a/src/main/groovy/gl51/movie/data/MovieRequest.groovy b/src/main/groovy/gl51/movie/data/MovieRequest.groovy new file mode 100644 index 0000000..e97f472 --- /dev/null +++ b/src/main/groovy/gl51/movie/data/MovieRequest.groovy @@ -0,0 +1,8 @@ +package gl51.movie.data + +/**Class representing a movie request**/ +class MovieRequest { + + String imdbId; + +} diff --git a/src/test/groovy/MovieControllerSpec.groovy b/src/test/groovy/MovieControllerSpec.groovy new file mode 100644 index 0000000..8dda3be --- /dev/null +++ b/src/test/groovy/MovieControllerSpec.groovy @@ -0,0 +1,59 @@ +package gl51 + +import gl51.movie.data.Movie +import gl51.movie.data.MovieRequest +import gl51.movie.service.MovieClient +import gl51.movie.service.impl.MovieRegistryImpl +import io.micronaut.http.client.annotation.Client +import io.micronaut.runtime.server.EmbeddedServer +import io.micronaut.test.annotation.MicronautTest +import io.micronaut.http.client.RxHttpClient +import io.micronaut.http.HttpResponse +import io.micronaut.http.HttpStatus +import io.reactivex.Flowable +import spock.lang.AutoCleanup +import spock.lang.Specification +import spock.lang.Shared +import io.micronaut.test.annotation.MockBean +import io.micronaut.http.HttpRequest +import io.micronaut.core.type.Argument + +import javax.inject.Inject + +@MicronautTest +class MovieControllerSpec extends Specification { + + @Shared @Inject + EmbeddedServer embeddedServer + + @Shared @AutoCleanup @Inject @Client("/") + RxHttpClient client + + @Inject + MovieRegistryImpl registry + + void "test index"() { + given: + Flowable flowable = client.retrieve(HttpRequest.GET("/movie"), Argument.listOf(Movie)) + def content = flowable.firstElement() + expect: + content.blockingGet() == [] + } + + void "test film creation"() { + given: + HttpResponse response = client.toBlocking().exchange( + HttpRequest.POST("/movie", new MovieRequest(imdbId: "aaaaa")) + ) + expect: + response.status == HttpStatus.CREATED + } + + @MockBean() + MovieClient movieClient() { + def mock = Mock(MovieClient) + mock.getMovieDetail("aaaaa") >> new Movie(imdbID: "aaaaa", title: 'my movie') + mock + } + +} From e01e622ac67eb958be298aec50b28458fc61fbe5 Mon Sep 17 00:00:00 2001 From: Hawlink Date: Fri, 10 Apr 2020 15:54:29 +0200 Subject: [PATCH 2/5] change micronautcontrollertest --- src/main/groovy/gl51/MovieController.groovy | 3 ++- src/test/groovy/MovieControllerSpec.groovy | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/groovy/gl51/MovieController.groovy b/src/main/groovy/gl51/MovieController.groovy index 254ee0d..ed2098b 100644 --- a/src/main/groovy/gl51/MovieController.groovy +++ b/src/main/groovy/gl51/MovieController.groovy @@ -19,11 +19,12 @@ class MovieController { @Get("/") List index() { - [] + registry.listFavorites() } @Post('/') HttpStatus addMovie(MovieRequest movieRequest) { + registry.addMovieToFavorites(movieRequest.imdbId) HttpStatus.CREATED } } diff --git a/src/test/groovy/MovieControllerSpec.groovy b/src/test/groovy/MovieControllerSpec.groovy index 8dda3be..57e0a5b 100644 --- a/src/test/groovy/MovieControllerSpec.groovy +++ b/src/test/groovy/MovieControllerSpec.groovy @@ -35,9 +35,9 @@ class MovieControllerSpec extends Specification { void "test index"() { given: Flowable flowable = client.retrieve(HttpRequest.GET("/movie"), Argument.listOf(Movie)) - def content = flowable.firstElement() + def content = flowable.firstElement().blockingGet() expect: - content.blockingGet() == [] + content == [] } void "test film creation"() { @@ -45,8 +45,11 @@ class MovieControllerSpec extends Specification { HttpResponse response = client.toBlocking().exchange( HttpRequest.POST("/movie", new MovieRequest(imdbId: "aaaaa")) ) + Flowable flowable = client.retrieve(HttpRequest.GET("/movie"), Argument.listOf(Movie)) + def content = flowable.firstElement().blockingGet() expect: response.status == HttpStatus.CREATED + //content.find(it.title == 'my movie' && it.imdbId == "aaaaa") } @MockBean() From 0b390acd80e473f11d37c737cf019ebdb0176376 Mon Sep 17 00:00:00 2001 From: Hawlink Date: Fri, 10 Apr 2020 16:47:04 +0200 Subject: [PATCH 3/5] added badges in readme --- README.MD | 3 +++ build.gradle | 1 + config/codenarc/codenarc.groovy | 0 config/codenarc/codenarc.xml | 0 4 files changed, 4 insertions(+) create mode 100644 README.MD create mode 100644 config/codenarc/codenarc.groovy create mode 100644 config/codenarc/codenarc.xml diff --git a/README.MD b/README.MD new file mode 100644 index 0000000..62dd0b4 --- /dev/null +++ b/README.MD @@ -0,0 +1,3 @@ +# Projet GL51 +[![CodeFactor](https://www.codefactor.io/repository/github/hawlink/gl51td1/badge)](https://www.codefactor.io/repository/github/hawlink/gl51td1) +![CI](https://github.com/Hawlink/GL51TD1/workflows/CI/badge.svg) \ No newline at end of file diff --git a/build.gradle b/build.gradle index 6ea7404..05b66e1 100644 --- a/build.gradle +++ b/build.gradle @@ -3,6 +3,7 @@ plugins { //id "com.github.johnrengelman.shadow" version "5.2.0" id "com.github.johnrengelman.shadow" version "4.0.2" id "application" + id "codenarc" } diff --git a/config/codenarc/codenarc.groovy b/config/codenarc/codenarc.groovy new file mode 100644 index 0000000..e69de29 diff --git a/config/codenarc/codenarc.xml b/config/codenarc/codenarc.xml new file mode 100644 index 0000000..e69de29 From e3037d4f8505c22ee904635017b12509ac1347f7 Mon Sep 17 00:00:00 2001 From: Hawlink Date: Thu, 16 Apr 2020 15:46:38 +0200 Subject: [PATCH 4/5] added codenarc --- config/codenarc/codenarc.groovy | 0 config/codenarc/codenarc.xml | 14 ++++++++++++++ 2 files changed, 14 insertions(+) delete mode 100644 config/codenarc/codenarc.groovy diff --git a/config/codenarc/codenarc.groovy b/config/codenarc/codenarc.groovy deleted file mode 100644 index e69de29..0000000 diff --git a/config/codenarc/codenarc.xml b/config/codenarc/codenarc.xml index e69de29..921f1be 100644 --- a/config/codenarc/codenarc.xml +++ b/config/codenarc/codenarc.xml @@ -0,0 +1,14 @@ + + + Sample rule set + + + + + + + + \ No newline at end of file From c2c026f35a9295fe44faf05b3a48f8c26f69cb32 Mon Sep 17 00:00:00 2001 From: Hawlink <33575314+Hawlink@users.noreply.github.com> Date: Thu, 16 Apr 2020 15:57:57 +0200 Subject: [PATCH 5/5] Update blank.yml --- .github/workflows/blank.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/blank.yml b/.github/workflows/blank.yml index 93ab000..e2bb99f 100644 --- a/.github/workflows/blank.yml +++ b/.github/workflows/blank.yml @@ -20,4 +20,4 @@ jobs: # do not forget `git update-index --chmod=+x gradlew` to fix permission before ! - uses: eskatos/gradle-command-action@v1 with: - arguments: test + arguments: check