Commit 00da43eb authored by Florian VANDENBULCKE's avatar Florian VANDENBULCKE

init project

parents
.classpath
.project
.settings/
target/
\ No newline at end of file
# Memory Java-Spring
Bravo ! Si tu es là, c'est que tu as retenu notre attention ! On aimerait maintenant voir comment cela se passe avec un exercice pratique.
Bonne chance !
## But de l'exercice
Implémenter une API HTTP qui permet de gérer un jeu memory :
![image](https://gitlab.ippon.fr/recrutement/memory/uploads/52857af9ea7e535efb1bdc2d7b0c221c/image.png)
Pour résumer, un jeu memory consiste à retrouver des duos de cartes identiques dans un set de cartes retournées.
Si ce jeu ne te parle pas, n'hésite pas à demander des explications.
### Que dois-je faire concrètement ?
Rassure-toi tout de suite : le jeu ne sera pas fini en 1h :)
Le but est donc d'identifier et d'implémenter les fonctionnalités que tu juges les plus importantes pour démarrer.
Pour t'aider un peu, voici les 2 premières choses à faire :
- Faire fonctionner l'initialisation du jeu : il doit être retourné via une requête HTTP POST sur http://localhost:8080/memory. Il semble que l'implémentation n'ait pas été terminée !
- Ensuite, la première fonctionnalité sera de retourner une carte.
Produis le code comme si tu le faisais "en vrai", sauf qu'on se concentre sur le code métier : pas besoin de gérer les logs, base de données, sécurité...
### Que faire si j'ai oublié la syntaxe ?
Pour information, tu as le droit d'utiliser tous les outils que tu veux : Javadoc, Documentation en ligne, StackOverflow, Google... fais en bon usage.
## Prérequis
Java 11 et Maven.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>fr.lille.ippon.recrutement</groupId>
<artifactId>memory-java-spring</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>memory-java-spring</name>
<description>Exercice d'implementation d'un jeu de memory</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
package fr.lille.ippon.challenge.memory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MemoryApplication {
public static void main(String[] args) {
SpringApplication.run(MemoryApplication.class, args);
}
}
package fr.lille.ippon.challenge.memory.domain;
public class MemoryCard {
private String content;
public MemoryCard(String content) {
this.content = content;
}
public String getContent() {
return this.content;
}
public void setContent(String content) {
this.content = content;
}
}
\ No newline at end of file
package fr.lille.ippon.challenge.memory.domain;
enum MemoryCardStatus {
HIDDEN,
VISIBLE
}
\ No newline at end of file
package fr.lille.ippon.challenge.memory.domain;
public class MemoryGame {
private final String contents = "😀🎉💖🎩🐶🐱🦄🐬🌍🌛🌞💫🍎🍌🍓🍐🍟🍿";
public MemoryGame(Integer size) {
}
}
package fr.lille.ippon.challenge.memory.http.api;
import java.util.List;
import fr.lille.ippon.challenge.memory.domain.MemoryCard;
public class MemoryController {
public List<MemoryCard> getGame() {
// TODO faire fonctionner. Refactorer ?
return List.of(new MemoryCard("my first card"));
}
}
package fr.lille.ippon.challenge.kanban;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.web.servlet.MockMvc;
import fr.lille.ippon.challenge.memory.MemoryApplication;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = MemoryApplication.class)
@AutoConfigureMockMvc
class MemoryApplicationTests {
@Autowired
private MockMvc mvc;
@Test
void contextLoads() throws Exception {
mvc.perform(get("/memory")
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content()
.contentTypeCompatibleWith(MediaType.APPLICATION_JSON));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment