Test assignment for the course from MTS.Teta Java Middle Developer. 2022

Overview

Сервис по планированию задач

Список фичей:

  1. Пользователь может добавлять, удалять, закрывать и заново открывать задачи
  2. Названия задач должны быть уникальными для всех пользователей (удаленные не учитываются).
  3. Пользователь может получить список всех задач любого другого пользователя, кроме удаленных.
  4. Пользователь может закрывать, удалять и заново открывать только свои задачи
  5. Задача проходит следующие состояния: CREATED <--> CLOSED -> DELETED. При этом задача в статусе CREATED не может сразу перейти в DELETED. Задача же в DELETED больше не может переходить ни в какое состояние.

Веб-сервер принимает сообщения по придуманному нами протоколу - Simple Web Protocol.

Запросы и ответы состоят из одной строки.

Формат запроса: “USER COMMAND ARG

Формат ответа: “RESULT ARG

Описание формата:

  1. USER - имя пользователя, который осуществляет действия
  2. COMMAND - команда. Варианты команд:
    1. CREATE_TASK MyTask- создать задачу с названием MyTask
    2. DELETE_TASK MyTask - удалить задачу MyTask
    3. CLOSE_TASK MyTask - закрыть задачу MyTask
    4. REOPEN_TASK MyTask - заново открыть задачу MyTask
    5. LIST_TASK USER - Получить список задач пользователя
  3. ARG - аргумент запроса или ответа. Может отсутствовать.
  4. RESULT - ответ сервера о совершении действия. Варианты ответов.
    1. CREATED - задача успешно создана
    2. DELETED - задача успешно удалена
    3. CLOSED - задача успешно закрыта
    4. REOPENED - задача успешно открыта заново
    5. TASKS [MyTask1, MyTask2] - список задач пользователя. Если задач нет, список пустой ([])
    6. WRONG_FORMAT - Неверный формат запроса
    7. ACCESS_DENIED - Нет прав на совершение операции
    8. ERROR - Любая другая ошибка
  5. Все команды, а также имена пользователей регистрозависимые
  6. Запросы валидируются в следующем порядке: формат запроса, право на совершение операции, все остальные проверки. Если первая проверка не прошла, остальные не выполняются.

Примеры запросов и ответов:

  1. VASYA CREATE_TASK CleanRoom
    1. CREATED
  2. PETYA DELETE_TASK CleanRoom
    1. ACCESS_DENIED
  3. PETYA CREATE_TASK Task1
    1. CREATED
  4. PETYA CREATE_TASK Task2
    1. CREATED
  5. VASYA LIST_TASK PETYA
    1. TASKS [Task1, Task2]
  6. VASYA CREATE_TASK CleanRoom
    1. ERROR

Definition of Done

В ServerTest необходимо добавить тест-кейсы, которые проверят корректность вышеописанных фич.

Все данные храним в оперативной памяти. Concurrency-эффекты не учитываем, так как сервер обрабатывает запросы последовательно.

Spring, прочие фреймворки и вспомогательные библиотеки использовать нельзя. Применяем только то, что уже есть в проекте.

Дополнительные баллы

Учитывается общее оформление кода, архитектурное разделение компонентов, а также наличие Unit-тестов на отдельные части проекта.

Порядок сдачи

  1. Форкаем репозиторий.
  2. Создаем новую ветку от master.
  3. Выполняем задание и пушим изменения.
  4. Создаем Pull Request из своей feature-ветки в master исходного репозитория.
  5. В комментарии оставляем ФИО и почту (тегаем @SimonHarmonicMinor)
  6. Ждем результатов :)

Для приема задания необходимо, чтобы билд проходил успешно (команда ./mvn package). Перед отправкой изменений, пожалуйста, проверьте, что команда отрабатывает локально.

You might also like...

Auto-Unit-Test-Case-Generator automatically generates high-level code-coverage JUnit test suites for Java, widely used within the ANT Group.

中文README传送门 What is Auto-Unit-Test-Case-Generator Auto-Unit-Test-Case-Generator generates JUnit test suites for Java class just as its name. During te

Dec 22, 2022

Software developer training camp

Java-Camp Software developer training camp 1. Java Temelleri - 1 2. Java Temelleri - 2 3. Java Nesne Yönelimli Programlamaya Giriş 4. Java Nesne Yönel

Dec 19, 2022

A developer oriented, headless ecommerce framework based on Spring + GraphQL + Angular.

GeekStore A developer oriented, headless ecommerce framework based on Spring + GraphQL + Angular. Headless means GeekStore only focus on the backend,

Jul 27, 2022

Stetho is a debug bridge for Android applications, enabling the powerful Chrome Developer Tools and much more.

Stetho Stetho is a sophisticated debug bridge for Android applications. When enabled, developers have access to the Chrome Developer Tools feature nat

Jan 3, 2023

Ethylene is a open-source, lightweight, general-purpose compatibility layer standing between the developer and the chaotic world of configuration file formats.

Ethylene Ethylene is a open-source, lightweight, general-purpose compatibility layer standing between the developer and the chaotic world of configura

Aug 9, 2022

InterfaceMaker is a modern plugin to handle and customize join items, hotbars and menus with a developer and administrator friendly API.

InterfaceMaker is a modern plugin to handle and customize join items, hotbars and menus with a developer and administrator friendly API.

Interface Maker InterfaceMaker is a modern plugin to handle and customize join items, hotbars and menus with a developer friendly API. Features Simple

Nov 27, 2022

The code examples of the "Effective Software Testing: A Developer's Guide" book

Effective software testing This repository contains the code examples of the Software Testing: A Developer's Guide book, by Maurício Aniche. Each fold

Dec 29, 2022

a program to periodically synchronize the tanzu developer portal profile page with my latest-and-greatest

Tanzu Developer Center Feed Processor 2.0 This is meant to be a logical successor to the original feeds processor. The program pulls in data from the

Jul 9, 2022

Team 5468's 2022 FRC robot code. This code is written in Java and is based off of WPILib's Java control system and utilizes a command based system

FRC 2022 Team 5468's 2022 FRC robot code. This code is written in Java and is based off of WPILib's Java control system and utilizes a command based s

Oct 4, 2022
Comments
  • Не дает запушить. Permission denied.

    Не дает запушить. Permission denied.

    ERROR: Permission to SimonHarmonicMinor/mts-teta-entrance-exam-java-middle-2022.git denied to obasileo. fatal: Could not read from remote repository.

    Please make sure you have the correct access rights and the repository exists.

    opened by obasileo 1
  • Ошибки в тестах

    Ошибки в тестах

    Привет!

    В тестах ниже кажется есть ошибки.

    1. Тут мы создаем таски, закрываем их, но не удаляем, а в конце проверяем что у пользователя нет тасок.

    https://github.com/SimonHarmonicMinor/mts-teta-entrance-exam-java-middle-2022/blob/8c461d7dcc817ff66492f193bcd9c98934e5940f/src/test/java/com/example/demo/ServerTest.java#L221

    1. Тут ошибка аффектит два теста, в одном ожидается ERROR, в другом REOPENED. Но если мы следуем правилу, что у нас все регистрозависимое, то у нас должна быть проверка на ACCESS_DENIED, так как первый параметр %S превращает user в строку в верхнем регистре, а создавались и закрывались таски без преобразований user.

    https://github.com/SimonHarmonicMinor/mts-teta-entrance-exam-java-middle-2022/blob/8c461d7dcc817ff66492f193bcd9c98934e5940f/src/test/java/com/example/demo/ServerTest.java#L233

    opened by ni032mas 1
  • Дописать тесты для тестового задания Java Middle

    Дописать тесты для тестового задания Java Middle

    Необходимо дописать тесты и формулировку задания так, чтобы корректность выполнения ДЗ проверялась на моменте создания pull request.

    Заранее написаны E2E-тесты, которые проверяют работоспособность системы. Студенты должны написать код так, чтобы они проходили.

    opened by SimonHarmonicMinor 1
Owner
Semyon Kirekov
I like to write software that brings benefits to other people.
Semyon Kirekov
Professional Java Developer Career Starter: Java Foundations Course Exercise Solutions

java-foundations-solutions Professional Java Developer Career Starter: Java Foundations Course Exercise Solutions The solutions are generally to be fo

Neutrino Systems Inc 41 Dec 28, 2022
This repository is related to the Java Web Developer (ND035), Course - Web Services and APIs

About this Repository This repository is related to the Java Web Developer (ND035), Course - Web Services and APIs It contains the following folders:

Rasha Omran 1 Jan 28, 2022
Section B of Assignment 1. Setup project and collaborate on GitHub by writing test fixtures.

Task Each member (including the team leader) should create a branch (use student number as the branch name) and include a small program in the branch

Quinn Frost 1 Apr 6, 2022
Public course repository for ENSF 409, WS 2022.

ENSF409 This is an instructional project for the course ENSF 409 at the Schulich School of Engineering at the University of Calgary. It is not a free/

null 14 May 19, 2022
Hacktoberfest 2022 : Repository for open-source contributions towards Hacktoberfest 2022

Hacktoberfest 2022 OPEN Pull Request - FREE T-SHIRT's ?? DON'T COMMIT ~ PR REPO HAS BEEN EXCULDED ( DON'T KNOW THE EXACT REASON ~ RUMORS ARE THAT THIS

Saurabh Kumar 112 Jan 9, 2023
Java Practical CO1212 exercises and assignment answers.

CO1212 Exercises Java Practical CO1212 exercises and assignment answers. Contribute to this You can find the questions in their respective directories

Dilshan Karunarathne 4 Apr 12, 2022
☕️🚀🚨 This repository consists of solutions for the Community Classroom complete DSA Java Bootcamp assignment problems.

Java DSA Bootcamp ?? Assignments Go to Kunal Kushwaha's ????‍?? course repository : ☕️ Java DSA Bootcamp ⚠️ ?? this repository is now inactive due to

Milind Mishra⚡️ 106 Dec 12, 2022
Angular Final Assignment - Keep Note frontend

Angular Final Assignment - Keep Note frontend Objective The Objective of this level of Keep is to cover the following areas : Components Design Compon

Baskaran Murugesan 1 Jan 29, 2022
Distributed Systems Assignment 1

DSYS_A1 Distributed Systems Assignment 1 The application that I have decided to have as my assignment is a testing application. The supervisor server

Owais Quadri 3 Dec 14, 2021
All the Assignment Programs given by College

OOPs-Assignment This is a Repo holding the Assignments or test programs given by the College in the 5th Semester. We will try to include as much as pr

Raunak Mandal 4 Jul 16, 2022