Skip to content

Commit

Permalink
🚨 : remove code duplication
Browse files Browse the repository at this point in the history
  • Loading branch information
juwit committed Aug 12, 2019
1 parent 3c9ef89 commit 7bfbd9a
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 75 deletions.
78 changes: 15 additions & 63 deletions src/main/java/io/codeka/gaia/stacks/controller/StackController.java
@@ -1,10 +1,10 @@
package io.codeka.gaia.stacks.controller;

import io.codeka.gaia.modules.repository.TerraformModuleRepository;
import io.codeka.gaia.runner.StackRunner;
import io.codeka.gaia.stacks.bo.Job;
import io.codeka.gaia.stacks.repository.JobRepository;
import io.codeka.gaia.stacks.repository.StackRepository;
import io.codeka.gaia.modules.repository.TerraformModuleRepository;
import io.codeka.gaia.runner.StackRunner;
import io.codeka.gaia.teams.bo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
Expand Down Expand Up @@ -55,38 +55,11 @@ public String editStack(@PathVariable String stackId, Model model){
return "stack";
}

@GetMapping("/stacks/{stackId}/apply")
public String applyStack(@PathVariable String stackId, Model model, User user){
// checking if the stack exists
// TODO throw an exception (404) if not
if(stackRepository.existsById(stackId)){
model.addAttribute("stackId", stackId);
}

// create a new job
var job = new Job(user);
job.setId(UUID.randomUUID().toString());
job.setStackId(stackId);

model.addAttribute("jobId", job.getId());

@GetMapping("/stacks/{stackId}/{jobType}")
public String startJob(@PathVariable String stackId, @PathVariable String jobType, Model model, User user){
// get the stack
var stack = this.stackRepository.findById(stackId).get();
// get the module
var module = this.terraformModuleRepository.findById(stack.getModuleId()).get();

this.stackRunner.apply(job, module, stack);

return "job";
}

@GetMapping("/stacks/{stackId}/preview")
public String previewStack(@PathVariable String stackId, Model model, User user){
// checking if the stack exists
// TODO throw an exception (404) if not
if(stackRepository.existsById(stackId)){
model.addAttribute("stackId", stackId);
}
var stack = this.stackRepository.findById(stackId).orElseThrow(StackNotFoundException::new);
model.addAttribute("stackId", stackId);

// create a new job
var job = new Job(user);
Expand All @@ -95,12 +68,16 @@ public String previewStack(@PathVariable String stackId, Model model, User user)

model.addAttribute("jobId", job.getId());

// get the stack
var stack = this.stackRepository.findById(stackId).get();
// get the module
var module = this.terraformModuleRepository.findById(stack.getModuleId()).get();

this.stackRunner.plan(job, module, stack);
var module = this.terraformModuleRepository.findById(stack.getModuleId()).orElseThrow();

if ("apply".equals(jobType)) {
this.stackRunner.apply(job, module, stack);
} else if ("preview".equals(jobType)) {
this.stackRunner.plan(job, module, stack);
} else if ("stop".equals(jobType)) {
this.stackRunner.stop(job, module, stack);
}

return "job";
}
Expand All @@ -125,29 +102,4 @@ public Job getJob(@PathVariable String stackId, @PathVariable String jobId){
return this.stackRunner.getJob(jobId);
}

@GetMapping("/stacks/{stackId}/stop")
public String stopStack(@PathVariable String stackId, Model model, User user){
// checking if the stack exists
// TODO throw an exception (404) if not
if(stackRepository.existsById(stackId)){
model.addAttribute("stackId", stackId);
}

// create a new job
var job = new Job(user);
job.setId(UUID.randomUUID().toString());
job.setStackId(stackId);

model.addAttribute("jobId", job.getId());

// get the stack
var stack = this.stackRepository.findById(stackId).get();
// get the module
var module = this.terraformModuleRepository.findById(stack.getModuleId()).get();

this.stackRunner.stop(job, module, stack);

return "job";
}

}
Expand Up @@ -87,17 +87,16 @@ void editStack_shouldSetModelIfStackExists() {
void applyStack_shouldReturnTheView() {
when(stackRepository.findById(anyString())).thenReturn(Optional.of(new Stack()));
when(terraformModuleRepository.findById(any())).thenReturn(Optional.of(new TerraformModule()));
var result = controller.applyStack("test_stack", model, user);
var result = controller.startJob("test_stack", "apply",model, user);

assertEquals("job", result);
}

@Test
void applyStack_shouldSetModelIfStackExists() {
when(stackRepository.existsById(anyString())).thenReturn(true);
when(stackRepository.findById(anyString())).thenReturn(Optional.of(new Stack()));
when(terraformModuleRepository.findById(any())).thenReturn(Optional.of(new TerraformModule()));
var result = controller.applyStack("test_stack", model, user);
var result = controller.startJob("test_stack", "apply", model, user);

assertEquals("job", result);
verify(model).addAttribute("stackId", "test_stack");
Expand All @@ -110,7 +109,7 @@ void applyStack_shouldConfigureAndLaunchTheJob() {

when(stackRepository.findById(anyString())).thenReturn(Optional.of(stack));
when(terraformModuleRepository.findById(any())).thenReturn(Optional.of(module));
var result = controller.applyStack("test_stack", model, user);
var result = controller.startJob("test_stack", "apply", model, user);

assertEquals("job", result);

Expand All @@ -127,17 +126,16 @@ void applyStack_shouldConfigureAndLaunchTheJob() {
void previewStack_shouldReturnTheView() {
when(stackRepository.findById(anyString())).thenReturn(Optional.of(new Stack()));
when(terraformModuleRepository.findById(any())).thenReturn(Optional.of(new TerraformModule()));
var result = controller.previewStack("test_stack", model, user);
var result = controller.startJob("test_stack", "preview", model, user);

assertEquals("job", result);
}

@Test
void previewStack_shouldSetModelIfStackExists() {
when(stackRepository.existsById(anyString())).thenReturn(true);
when(stackRepository.findById(anyString())).thenReturn(Optional.of(new Stack()));
when(terraformModuleRepository.findById(any())).thenReturn(Optional.of(new TerraformModule()));
var result = controller.previewStack("test_stack", model, user);
var result = controller.startJob("test_stack", "preview", model, user);

assertEquals("job", result);
verify(model).addAttribute("stackId", "test_stack");
Expand All @@ -150,7 +148,7 @@ void previewStack_shouldConfigureAndLaunchTheJob() {

when(stackRepository.findById(anyString())).thenReturn(Optional.of(stack));
when(terraformModuleRepository.findById(any())).thenReturn(Optional.of(module));
var result = controller.previewStack("test_stack", model, user);
var result = controller.startJob("test_stack", "preview", model, user);

assertEquals("job", result);

Expand All @@ -168,17 +166,16 @@ void previewStack_shouldConfigureAndLaunchTheJob() {
void stopStack_shouldReturnTheView() {
when(stackRepository.findById(anyString())).thenReturn(Optional.of(new Stack()));
when(terraformModuleRepository.findById(any())).thenReturn(Optional.of(new TerraformModule()));
var result = controller.stopStack("test_stack", model, user);
var result = controller.startJob("test_stack", "stop", model, user);

assertEquals("job", result);
}

@Test
void stopStack_shouldSetModelIfStackExists() {
when(stackRepository.existsById(anyString())).thenReturn(true);
when(stackRepository.findById(anyString())).thenReturn(Optional.of(new Stack()));
when(terraformModuleRepository.findById(any())).thenReturn(Optional.of(new TerraformModule()));
var result = controller.stopStack("test_stack", model, user);
var result = controller.startJob("test_stack", "stop", model, user);

assertEquals("job", result);
verify(model).addAttribute("stackId", "test_stack");
Expand All @@ -191,7 +188,7 @@ void stopStack_shouldConfigureAndLaunchTheJob() {

when(stackRepository.findById(anyString())).thenReturn(Optional.of(stack));
when(terraformModuleRepository.findById(any())).thenReturn(Optional.of(module));
var result = controller.stopStack("test_stack", model, user);
var result = controller.startJob("test_stack", "stop", model, user);

assertEquals("job", result);

Expand Down

0 comments on commit 7bfbd9a

Please sign in to comment.