$.TaskRestFT.java Source code

Java tutorial

Introduction

Here is the source code for $.TaskRestFT.java

Source

    #set($symbol_pound='#')#set($symbol_dollar='$')#set($symbol_escape='\')
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package ${package}.functional.rest;

    import static org.assertj.core.api.Assertions.*;

    import java.net.URI;
    import java.util.ArrayList;
    import java.util.Map;

    import org.apache.commons.lang3.StringUtils;
    import org.junit.Test;
    import org.junit.experimental.categories.Category;
    import org.springframework.http.HttpStatus;
    import org.springframework.web.client.HttpStatusCodeException;
    import org.springframework.web.client.RestTemplate;
import ${package}.data.TaskData;
import ${package}.entity.Task;
import ${package}.functional.BaseFunctionalTestCase;
    import org.springside.modules.mapper.JsonMapper;
    import org.springside.modules.test.category.Smoke;

    /**
     * ?, ?JavaScript???.
     * 
     * @author calvin
     */
    public class TaskRestFT extends BaseFunctionalTestCase {

        private static String resourceUrl = baseUrl + "/api/v1/task";

        private final RestTemplate restTemplate = new RestTemplate();
        private final JsonMapper jsonMapper = new JsonMapper();

        /**
         * .
         */
        @Test
        @Category(Smoke.class)
        public void listTasks() {
            TaskList tasks = restTemplate.getForObject(resourceUrl, TaskList.class);
            assertThat(tasks).hasSize(5);
            assertThat(tasks.get(0).getTitle()).isEqualTo("Study PlayFramework 2.0");
        }

        /**
         * ?.
         */
        @Test
        @Category(Smoke.class)
        public void getTask() {
            Task task = restTemplate.getForObject(resourceUrl + "/{id}", Task.class, 1L);
            assertThat(task.getTitle()).isEqualTo("Study PlayFramework 2.0");
        }

        /**
         * //.
         */
        @Test
        @Category(Smoke.class)
        public void createUpdateAndDeleteTask() {

            // create
            Task task = TaskData.randomTask();

            URI createdTaskUri = restTemplate.postForLocation(resourceUrl, task);
            System.out.println(createdTaskUri.toString());
            Task createdTask = restTemplate.getForObject(createdTaskUri, Task.class);
            assertThat(createdTask.getTitle()).isEqualTo(task.getTitle());

            // update
            String id = StringUtils.substringAfterLast(createdTaskUri.toString(), "/");
            task.setId(new Long(id));
            task.setTitle(TaskData.randomTitle());

            restTemplate.put(createdTaskUri, task);

            Task updatedTask = restTemplate.getForObject(createdTaskUri, Task.class);
            assertThat(updatedTask.getTitle()).isEqualTo(task.getTitle());

            // delete
            restTemplate.delete(createdTaskUri);

            try {
                restTemplate.getForObject(createdTaskUri, Task.class);
                fail("Get should fail while feth a deleted task");
            } catch (HttpStatusCodeException e) {
                assertThat(e.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
            }
        }

        @Test
        public void invalidInput() {

            // create
            Task titleBlankTask = new Task();
            try {
                restTemplate.postForLocation(resourceUrl, titleBlankTask);
                fail("Create should fail while title is blank");
            } catch (HttpStatusCodeException e) {
                assertThat(e.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
                Map messages = jsonMapper.fromJson(e.getResponseBodyAsString(), Map.class);
                assertThat(messages).hasSize(1);
                assertThat(messages.get("title")).isIn("may not be empty", "?");
            }

            // update
            titleBlankTask.setId(1L);
            try {
                restTemplate.put(resourceUrl + "/1", titleBlankTask);
                fail("Update should fail while title is blank");
            } catch (HttpStatusCodeException e) {
                assertThat(e.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
                Map messages = jsonMapper.fromJson(e.getResponseBodyAsString(), Map.class);
                assertThat(messages).hasSize(1);
                assertThat(messages.get("title")).isIn("may not be empty", "?");
            }
        }

        // ArrayList<Task>RestTemplate????
        private static class TaskList extends ArrayList<Task> {
        }
    }