release 0.1 #31

Manually merged
noemi3 merged 6 commits from release/0.1 into develop 2020-01-18 16:40:04 +00:00
25 changed files with 177 additions and 190 deletions

View File

@ -6,10 +6,8 @@
Client Android per Wekan sviluppato per il progetto del corso magistrale Ingegneria del Software per l'Università del Sannio.
## Authors
- Furno Umberto
- Mignone Raffaele
- Mincolelli Noemi

View File

@ -6,7 +6,6 @@ apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'io.gitlab.arturbosch.detekt'
android {
@ -32,53 +31,48 @@ android {
}
dependencies {
// standard
implementation project(':wrapper')
detektPlugins "io.gitlab.arturbosch.detekt:detekt-formatting:1.2.2"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.0.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
// wrapper
implementation project(':wrapper')
// retrofit
implementation "com.squareup.retrofit2:retrofit:2.6.2"
implementation "com.squareup.retrofit2:converter-gson:2.6.2"
implementation "com.squareup.retrofit2:retrofit:2.6.2"
// room database
implementation "androidx.room:room-runtime:$rootProject.roomVersion"
implementation "androidx.room:room-ktx:$rootProject.roomVersion"
kapt "androidx.room:room-compiler:$rootProject.roomVersion"
implementation "androidx.room:room-ktx:$rootProject.roomVersion"
implementation "androidx.room:room-runtime:$rootProject.roomVersion"
// lifecycle components
implementation "androidx.lifecycle:lifecycle-extensions:$rootProject.archLifecycleVersion"
//noinspection LifecycleAnnotationProcessorWithJava8
kapt "androidx.lifecycle:lifecycle-compiler:$rootProject.archLifecycleVersion"
// ViewModel Kotlin support
implementation "androidx.lifecycle:lifecycle-extensions:$rootProject.archLifecycleVersion"
// viewmode kotlin support
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$rootProject.archLifecycleVersion"
// Coroutines
// coroutines
api "org.jetbrains.kotlinx:kotlinx-coroutines-android:$rootProject.coroutines"
// UI
implementation "com.google.android.material:material:$rootProject.materialVersion"
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
//Card view
implementation 'androidx.cardview:cardview:1.0.0'
implementation "com.google.android.material:material:$rootProject.materialVersion"
// TESTING
testImplementation 'junit:junit:4.12'
testImplementation "io.mockk:mockk:1.9.3"
// testing
testImplementation "com.squareup.okhttp3:mockwebserver:4.2.1"
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
testImplementation "io.mockk:mockk:1.9.3"
testImplementation 'junit:junit:4.12'
// android testing
androidTestImplementation "androidx.arch.core:core-testing:$rootProject.androidxArchVersion"
androidTestImplementation "androidx.arch.core:core-testing:$rootProject.coreTestingVersion"
androidTestImplementation "androidx.room:room-testing:$rootProject.roomVersion"
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.2.0'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test:rules:1.2.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
implementation "com.squareup.retrofit2:retrofit:2.6.2"
implementation "com.squareup.retrofit2:converter-gson:2.6.2"
androidTestImplementation "androidx.room:room-testing:$rootProject.roomVersion"
androidTestImplementation "androidx.arch.core:core-testing:$rootProject.androidxArchVersion"
androidTestImplementation "androidx.arch.core:core-testing:$rootProject.coreTestingVersion"
// detekt
detektPlugins "io.gitlab.arturbosch.detekt:detekt-formatting:1.2.2"
}

View File

@ -1,24 +0,0 @@
package it.unisannio.ding.ids.wedroid.app
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.Assert.*
/**
* Instrumented test, which will execute on an Android device.
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Test
fun useAppContext() {
// Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("it.unisannio.ding.ids.wedroid.app", appContext.packageName)
}
}

View File

@ -65,7 +65,7 @@ class LoginActivity : AppCompatActivity() {
override fun onResponse(call: Call<UserPrototype>, response: Response<UserPrototype>) {
if (response.code() != 200) {
if (response.code() != HTTP_CODE_OK) {
Toast.makeText(
applicationContext,
R.string.login_wrong_field,
@ -93,5 +93,6 @@ class LoginActivity : AppCompatActivity() {
companion object {
const val LOGIN_OK = 0
const val LOGIN_ERROR = 1
const val HTTP_CODE_OK = 200
}
}

View File

@ -10,7 +10,7 @@
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="100dp"
android:layout_marginBottom="50dp"
android:ems="10"
android:hint="UserName"
android:inputType="textPersonName"
@ -22,7 +22,7 @@
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="50dp"
android:layout_marginBottom="100dp"
android:ems="10"
android:hint="Password"
android:inputType="textPassword"

View File

@ -1,17 +0,0 @@
package it.unisannio.ding.ids.wedroid.app
import org.junit.Test
import org.junit.Assert.*
/**
* Example local unit test, which will execute on the development machine (host).
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
class ExampleUnitTest {
@Test
fun addition_isCorrect() {
assertEquals(4, 2 + 2)
}
}

View File

@ -1,5 +1,3 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.3.60'
repositories {
@ -12,8 +10,6 @@ buildscript {
classpath 'com.android.tools.build:gradle:3.5.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.2.2"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

View File

@ -54,7 +54,6 @@
<property name="tokens"
value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
</module>
<module name="NeedBraces"/>
<module name="LeftCurly"/>
<module name="RightCurly">
<property name="id" value="RightCurlySame"/>
@ -191,7 +190,6 @@
<property name="allowedAbbreviationLength" value="1"/>
</module>
<module name="OverloadMethodsDeclarationOrder"/>
<module name="VariableDeclarationUsageDistance"/>
<module name="CustomImportOrder">
<property name="sortImportsInGroupAlphabetically" value="true"/>
<property name="separateLineBetweenGroups" value="true"/>

View File

@ -1,5 +1,4 @@
plugins {
// apply the java-library plugin to add support for Java Library
`java-library`
}

View File

@ -1,13 +1,17 @@
package it.unisannio.ding.ids.wedroid.wrapper.api;
import java.util.List;
import it.unisannio.ding.ids.wedroid.wrapper.entity.Board;
import it.unisannio.ding.ids.wedroid.wrapper.entity.BoardPrototype;
import it.unisannio.ding.ids.wedroid.wrapper.entity.LabelPrototype;
import it.unisannio.ding.ids.wedroid.wrapper.entity.MemberPermission;
import java.util.List;
import retrofit2.Call;
import retrofit2.http.*;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
public interface BoardService {

View File

@ -1,10 +1,14 @@
package it.unisannio.ding.ids.wedroid.wrapper.api;
import it.unisannio.ding.ids.wedroid.wrapper.entity.Comment;
import retrofit2.Call;
import retrofit2.http.*;
import java.util.List;
import retrofit2.Call;
import retrofit2.http.DELETE;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
public interface CardCommentService {

View File

@ -1,10 +1,17 @@
package it.unisannio.ding.ids.wedroid.wrapper.api;
import it.unisannio.ding.ids.wedroid.wrapper.entity.Card;
import retrofit2.Call;
import retrofit2.http.*;
import java.util.List;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
public interface CardService {
@ -72,6 +79,15 @@ public interface CardService {
Call<Card> putCard(@Path("board") String boardID, @Path("list") String listID,
@Path("card") String cardID, @Body Card card);
/**
* Move a card from a list to an other
*
* @param boardID The id of the Board
* @param oldListID The id of the source list
* @param cardID The id of the card
* @param newListId The id of the destination list
* @return The card with the matching ID
*/
@FormUrlEncoded
@PUT("/api/boards/{board}/lists/{list}/cards/{card}")
Call<Card> moveCard(

View File

@ -4,10 +4,16 @@ import it.unisannio.ding.ids.wedroid.wrapper.entity.Checklist;
import it.unisannio.ding.ids.wedroid.wrapper.entity.ChecklistItem;
import it.unisannio.ding.ids.wedroid.wrapper.entity.ChecklistItemStatus;
import it.unisannio.ding.ids.wedroid.wrapper.entity.ChecklistPrototype;
import retrofit2.Call;
import retrofit2.http.*;
import java.util.List;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
public interface ChecklistService {

View File

@ -1,11 +1,14 @@
package it.unisannio.ding.ids.wedroid.wrapper.api;
import it.unisannio.ding.ids.wedroid.wrapper.entity.WList;
import retrofit2.Call;
import retrofit2.http.*;
import java.util.List;
import retrofit2.Call;
import retrofit2.http.DELETE;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
public interface ListService {

View File

@ -1,10 +1,14 @@
package it.unisannio.ding.ids.wedroid.wrapper.api;
import it.unisannio.ding.ids.wedroid.wrapper.entity.Swimlane;
import retrofit2.Call;
import retrofit2.http.*;
import java.util.List;
import retrofit2.Call;
import retrofit2.http.DELETE;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
public interface SwimlanesService {
/**

View File

@ -3,10 +3,16 @@ package it.unisannio.ding.ids.wedroid.wrapper.api;
import it.unisannio.ding.ids.wedroid.wrapper.entity.Action;
import it.unisannio.ding.ids.wedroid.wrapper.entity.Board;
import it.unisannio.ding.ids.wedroid.wrapper.entity.User;
import retrofit2.Call;
import retrofit2.http.*;
import java.util.List;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Path;
public interface UserService {

View File

@ -4,7 +4,7 @@ public class MemberPermission {
/**
* The user is an admin of the board
*/
public final static MemberPermission ADMIN = new MemberPermission(
public static final MemberPermission ADMIN = new MemberPermission(
true,
false,
false
@ -13,7 +13,7 @@ public class MemberPermission {
/**
* The use is an normal member of the board
*/
public final static MemberPermission NORMAL = new MemberPermission(
public static final MemberPermission NORMAL = new MemberPermission(
false,
false,
false
@ -22,7 +22,7 @@ public class MemberPermission {
/**
* The user isn't allowed to make comments on the board
*/
public final static MemberPermission NO_COMMENTS = new MemberPermission(
public static final MemberPermission NO_COMMENTS = new MemberPermission(
false,
true,
false
@ -31,7 +31,7 @@ public class MemberPermission {
/**
* The user is only allowed to make comments on the board
*/
public final static MemberPermission COMMENT_ONLY = new MemberPermission(
public static final MemberPermission COMMENT_ONLY = new MemberPermission(
false,
false,
true

View File

@ -1,10 +1,18 @@
package it.unisannio.ding.ids.wedroid.wrapper.api;
import static junit.framework.TestCase.assertNotNull;
import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import it.unisannio.ding.ids.wedroid.wrapper.entity.Board;
import it.unisannio.ding.ids.wedroid.wrapper.entity.BoardBackgroundColor;
import it.unisannio.ding.ids.wedroid.wrapper.entity.BoardPermission;
import it.unisannio.ding.ids.wedroid.wrapper.entity.BoardPrototype;
import it.unisannio.ding.ids.wedroid.wrapper.entity.PresentParentTask;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.List;
import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import org.junit.After;
@ -13,12 +21,6 @@ import org.junit.Test;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.List;
import static org.junit.Assert.*;
public class BoardServiceTest {
private MockWebServer mockWebServer = new MockWebServer();
private BoardService service = null;
@ -59,8 +61,8 @@ public class BoardServiceTest {
mockWebServer.enqueue(response);
try {
List<Board> boards = service.getPublicBoards().
execute().body();
List<Board> boards = service.getPublicBoards()
.execute().body();
assertNotNull(boards);
assertEquals(2, boards.size());

View File

@ -1,6 +1,12 @@
package it.unisannio.ding.ids.wedroid.wrapper.api;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import it.unisannio.ding.ids.wedroid.wrapper.entity.Comment;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.List;
import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import org.junit.After;
@ -9,13 +15,6 @@ import org.junit.Test;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
public class CardCommentServiceTest {
private MockWebServer mockWebServer = new MockWebServer();
private CardCommentService service = null;
@ -110,17 +109,17 @@ public class CardCommentServiceTest {
}
}
private final static String COMMENT_1 = "{" +
private static final String COMMENT_1 = "{" +
"\"_id\":\"zwzAgjHdW4fNJ9YLc\"," +
"\"comment\":\"comment 1\"," +
"\"authorId\":\"Si69gNgkJfQuk6uiJ\"" +
"}";
private final static String COMMENT_2 = "{" +
private static final String COMMENT_2 = "{" +
"\"_id\":\"zwzAgjHdW4fNJ9YLt\"," +
"\"comment\":\"comment 2\"," +
"\"authorId\":\"Si69gNgkJfQuk6uiJ\"" +
"}";
private final static String COMMENT_3 = "{" +
private static final String COMMENT_3 = "{" +
"\"_id\":\"DofhD9v96DbX7Wirp\"," +
"\"userId\":\"Si69gNgkJfQuk6uiJ\"," +
"\"text\":\"commento api\"," +

View File

@ -1,22 +1,20 @@
package it.unisannio.ding.ids.wedroid.wrapper.api;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import it.unisannio.ding.ids.wedroid.wrapper.entity.Card;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import it.unisannio.ding.ids.wedroid.wrapper.entity.Card;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.List;
import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class CardServiceTest {
private MockWebServer mockWebServer = new MockWebServer();
private CardService service = null;
@ -56,8 +54,8 @@ public class CardServiceTest {
mockWebServer.enqueue(response);
try {
List<Card> cards = service.getAllCards("oKthRbLqoXZr5NNua","iA6pmp6fENvF7AaTX").
execute().body();
List<Card> cards = service.getAllCards("oKthRbLqoXZr5NNua","iA6pmp6fENvF7AaTX")
.execute().body();
assertNotNull(cards);
assertEquals("Numbero of card not ok",2, cards.size());

View File

@ -1,9 +1,15 @@
package it.unisannio.ding.ids.wedroid.wrapper.api;
import static junit.framework.TestCase.assertNotNull;
import static org.junit.Assert.assertEquals;
import it.unisannio.ding.ids.wedroid.wrapper.entity.Checklist;
import it.unisannio.ding.ids.wedroid.wrapper.entity.ChecklistItem;
import it.unisannio.ding.ids.wedroid.wrapper.entity.ChecklistItemStatus;
import it.unisannio.ding.ids.wedroid.wrapper.entity.ChecklistPrototype;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.List;
import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import org.junit.After;
@ -12,12 +18,6 @@ import org.junit.Test;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.List;
import static org.junit.Assert.*;
public class ChecklistServiceTest {
private MockWebServer mockWebServer = new MockWebServer();
private ChecklistService service = null;
@ -59,8 +59,8 @@ public class ChecklistServiceTest {
try {
List<Checklist> checklists = service.getAllChecklists(
"board id", "card id"
).
execute().body();
)
.execute().body();
assertNotNull(checklists);
assertEquals(2, checklists.size());

View File

@ -1,6 +1,12 @@
package it.unisannio.ding.ids.wedroid.wrapper.api;
import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertNotNull;
import it.unisannio.ding.ids.wedroid.wrapper.entity.WList;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.List;
import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import org.junit.After;
@ -9,12 +15,6 @@ import org.junit.Test;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.List;
import static org.junit.Assert.*;
public class ListServiceTest {
private MockWebServer mockWebServer = new MockWebServer();
private ListService service = null;

View File

@ -1,7 +1,13 @@
package it.unisannio.ding.ids.wedroid.wrapper.api;
import static junit.framework.TestCase.assertNotNull;
import static org.junit.Assert.assertEquals;
import it.unisannio.ding.ids.wedroid.wrapper.entity.Color;
import it.unisannio.ding.ids.wedroid.wrapper.entity.Swimlane;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.List;
import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import org.junit.After;
@ -10,12 +16,6 @@ import org.junit.Test;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.List;
import static org.junit.Assert.*;
public class SwimlanesServiceTest {
private MockWebServer mockWebServer = new MockWebServer();
private SwimlanesService service = null;
@ -62,6 +62,7 @@ public class SwimlanesServiceTest {
for (int i = 0; i < 2; i++)
assertEquals("title " + (i + 1), lists.get(i).getTitle());
} catch (IOException e) {
e.printStackTrace();
}
@ -108,8 +109,8 @@ public class SwimlanesServiceTest {
}
}
final static String SWIMLANE_1 = "{\n\"_id\": \"BS4AA79YABBCpDDau\",\n\"title\": \"title 1\"\n}";
final static String SWIMLANE_2 = "{" +
static final String SWIMLANE_1 = "{\n\"_id\": \"BS4AA79YABBCpDDau\",\n\"title\": \"title 1\"\n}";
static final String SWIMLANE_2 = "{" +
"\"_id\":\"JNmpXKCupbtyPkYMG\"," +
"\"title\":\"title 2\"," +
"\"boardId\":\"TtjXrJyvPkG3xsbkw\"," +

View File

@ -1,25 +1,25 @@
package it.unisannio.ding.ids.wedroid.wrapper.api;
import static junit.framework.TestCase.assertNotNull;
import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import it.unisannio.ding.ids.wedroid.wrapper.entity.Service;
import it.unisannio.ding.ids.wedroid.wrapper.entity.User;
import it.unisannio.ding.ids.wedroid.wrapper.entity.UserEmail;
import it.unisannio.ding.ids.wedroid.wrapper.entity.UserProfile;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.List;
import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
import retrofit2.Call;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import javax.jws.soap.SOAPBinding;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.List;
public class UserServiceTest {
private MockWebServer mockWebServer = new MockWebServer();
private UserService service = null;
@ -68,8 +68,7 @@ public class UserServiceTest {
assertEquals("noemi", users.get(1).getUsername());
assertEquals("jPdkf3a9bmfZWx3GR", users.get(2).getId());
assertEquals("umberto", users.get(2).getUsername());
}
catch (IOException e){
} catch (IOException e) {
e.printStackTrace();
}
}
@ -185,7 +184,7 @@ public class UserServiceTest {
"}\n" +
"}";
private final String user2 = "{" +
private static final String user2 = "{" +
"\"_id\":\"jPdkf3a9bmfZWx3GR\"," +
"\"createdAt\":\"2019-10-14T18:14:38.249Z\"," +
"\"username\":\"umberto\"," +