From b8f6b27246edc0f1567614fb7fad9c6cab772a40 Mon Sep 17 00:00:00 2001 From: sknirmalkar89 <59080585+sknirmalkar89@users.noreply.github.com> Date: Thu, 23 Sep 2021 13:52:22 +0530 Subject: [PATCH] SB-26876 Reverting back the notification feed (#953) * SB-26876:Reverting notification feed code changes --- .../main/java/org/sunbird/keys/JsonKey.java | 4 +- .../org/sunbird/actor/feed/UserFeedActor.java | 31 +++- .../actor/user/TenantMigrationActor.java | 1 + .../sunbird/service/feed/IFeedService.java | 11 +- .../service/feed/impl/FeedServiceImpl.java | 148 ++++++------------ .../java/org/sunbird/util/feed/FeedUtil.java | 17 +- .../sunbird/actor/user/UserFeedActorTest.java | 53 ++----- .../feed/impl/FeedServiceImplTest.java | 80 +++------- 8 files changed, 123 insertions(+), 222 deletions(-) diff --git a/core/platform-common/src/main/java/org/sunbird/keys/JsonKey.java b/core/platform-common/src/main/java/org/sunbird/keys/JsonKey.java index 6072be732..a9d3a0c6a 100644 --- a/core/platform-common/src/main/java/org/sunbird/keys/JsonKey.java +++ b/core/platform-common/src/main/java/org/sunbird/keys/JsonKey.java @@ -502,7 +502,6 @@ public final class JsonKey { public static final String USER_FEED_DB = "user_feed"; public static final String USER_FEED = "userFeed"; public static final String FEED_DATA = "data"; - public static final String FEEDS = "feeds"; public static final String REJECT = "reject"; public static final String FEED_ID = "feedId"; public static final String LICENSE = "license"; @@ -641,8 +640,7 @@ public final class JsonKey { public static final String TENANT_PREFERENCE_V2_DB = "tenant_preference_v2"; public static final String UPDATE_ORG_STATUS = "updateOrgStatus"; public static final String SUNBIRD_WEB_URL = "sunbird_web_url"; - public static final String IDS = "ids"; - public static final String NOTIFICATIONS = "notifications"; + private JsonKey() {} } diff --git a/service/src/main/java/org/sunbird/actor/feed/UserFeedActor.java b/service/src/main/java/org/sunbird/actor/feed/UserFeedActor.java index 614c43662..05c098ce6 100644 --- a/service/src/main/java/org/sunbird/actor/feed/UserFeedActor.java +++ b/service/src/main/java/org/sunbird/actor/feed/UserFeedActor.java @@ -17,6 +17,7 @@ import org.sunbird.telemetry.dto.TelemetryEnvKey; import org.sunbird.util.ProjectUtil; import org.sunbird.util.Util; + public class UserFeedActor extends BaseActor { IFeedService feedService = FeedFactory.getInstance(); @@ -59,15 +60,31 @@ public class UserFeedActor extends BaseActor { } private void createUserFeed(Request request, RequestContext context) { - request.getRequest().put(JsonKey.CREATED_BY,(String) request.getContext().get(JsonKey.REQUESTED_BY)); - Response feedCreateResponse = feedService.insert(request, context); + Feed feed = mapper.convertValue(request.getRequest(), Feed.class); + feed.setStatus(FeedStatus.UNREAD.getfeedStatus()); + feed.setCreatedBy((String) request.getContext().get(JsonKey.REQUESTED_BY)); + Response feedCreateResponse = feedService.insert(feed, context); sender().tell(feedCreateResponse, self()); // Delete the old user feed + Map<String, Object> reqMap = new WeakHashMap<>(2); + reqMap.put(JsonKey.USER_ID, feed.getUserId()); + List<Feed> feedList = feedService.getFeedsByProperties(reqMap, context); + if (feedList.size() >= Integer.parseInt(ProjectUtil.getConfigValue(JsonKey.FEED_LIMIT))) { + feedList.sort(Comparator.comparing(Feed::getCreatedOn)); + Feed delRecord = feedList.get(0); + feedService.delete( + delRecord.getId(), delRecord.getUserId(), delRecord.getCategory(), context); + } } private void deleteUserFeed(Request request, RequestContext context) { Response feedDeleteResponse = new Response(); - feedService.delete(request,context); + Map<String, Object> deleteRequest = request.getRequest(); + feedService.delete( + (String) deleteRequest.get(JsonKey.FEED_ID), + (String) deleteRequest.get(JsonKey.USER_ID), + (String) deleteRequest.get(JsonKey.CATEGORY), + context); feedDeleteResponse.getResult().put(JsonKey.RESPONSE, JsonKey.SUCCESS); sender().tell(feedDeleteResponse, self()); } @@ -75,9 +92,11 @@ public class UserFeedActor extends BaseActor { private void updateUserFeed(Request request, RequestContext context) { Map<String, Object> updateRequest = request.getRequest(); String feedId = (String) updateRequest.get(JsonKey.FEED_ID); - updateRequest.put(JsonKey.IDS, Arrays.asList(feedId)); - updateRequest.put(JsonKey.UPDATED_BY, request.getContext().get(JsonKey.REQUESTED_BY)); - Response feedUpdateResponse = feedService.update(request, context); + Feed feed = mapper.convertValue(updateRequest, Feed.class); + feed.setId(feedId); + feed.setStatus(FeedStatus.READ.getfeedStatus()); + feed.setUpdatedBy((String) request.getContext().get(JsonKey.REQUESTED_BY)); + Response feedUpdateResponse = feedService.update(feed, context); sender().tell(feedUpdateResponse, self()); } } diff --git a/service/src/main/java/org/sunbird/actor/user/TenantMigrationActor.java b/service/src/main/java/org/sunbird/actor/user/TenantMigrationActor.java index d31210de2..02062fd90 100644 --- a/service/src/main/java/org/sunbird/actor/user/TenantMigrationActor.java +++ b/service/src/main/java/org/sunbird/actor/user/TenantMigrationActor.java @@ -337,4 +337,5 @@ public class TenantMigrationActor extends BaseActor { } return userRequest; } + } diff --git a/service/src/main/java/org/sunbird/service/feed/IFeedService.java b/service/src/main/java/org/sunbird/service/feed/IFeedService.java index 1aab537aa..4dc8fbcb3 100644 --- a/service/src/main/java/org/sunbird/service/feed/IFeedService.java +++ b/service/src/main/java/org/sunbird/service/feed/IFeedService.java @@ -3,7 +3,6 @@ package org.sunbird.service.feed; import java.util.List; import java.util.Map; import org.sunbird.model.user.Feed; -import org.sunbird.request.Request; import org.sunbird.request.RequestContext; import org.sunbird.response.Response; @@ -14,21 +13,21 @@ public interface IFeedService { * this method will be responsible to insert the feed in the user_feed table and sync the data * with the ES * - * @param request + * @param feed * @param context * @return response */ - Response insert(Request request, RequestContext context); + Response insert(Feed feed, RequestContext context); /** * this method will be responsible to update the feed in the user_feed table and sync the data * with the ES * - * @param request + * @param feed * @param context * @return response */ - Response update(Request request, RequestContext context); + Response update(Feed feed, RequestContext context); /** * this method will be responsible to get the records by userId from the user_feed table @@ -45,5 +44,5 @@ public interface IFeedService { * @param request * @param context */ - Response delete(Request request, RequestContext context); + void delete(String id, String userId, String action, RequestContext context); } diff --git a/service/src/main/java/org/sunbird/service/feed/impl/FeedServiceImpl.java b/service/src/main/java/org/sunbird/service/feed/impl/FeedServiceImpl.java index bd901f9e6..a1f68ddaf 100644 --- a/service/src/main/java/org/sunbird/service/feed/impl/FeedServiceImpl.java +++ b/service/src/main/java/org/sunbird/service/feed/impl/FeedServiceImpl.java @@ -2,11 +2,12 @@ package org.sunbird.service.feed.impl; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.sql.Timestamp; -import java.util.*; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collections; +import java.util.List; +import java.util.Map; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; @@ -15,16 +16,13 @@ import org.sunbird.dao.feed.IFeedDao; import org.sunbird.dao.feed.impl.FeedDaoImpl; import org.sunbird.exception.ProjectCommonException; import org.sunbird.exception.ResponseCode; -import org.sunbird.http.HttpClientUtil; import org.sunbird.keys.JsonKey; import org.sunbird.logging.LoggerUtil; import org.sunbird.model.user.Feed; -import org.sunbird.request.Request; import org.sunbird.request.RequestContext; import org.sunbird.response.Response; import org.sunbird.service.feed.IFeedService; import org.sunbird.util.ProjectUtil; -import com.fasterxml.jackson.core.JsonProcessingException; public class FeedServiceImpl implements IFeedService { private static LoggerUtil logger = new LoggerUtil(FeedServiceImpl.class); @@ -32,127 +30,79 @@ public class FeedServiceImpl implements IFeedService { private ObjectMapper mapper = new ObjectMapper(); @Override - public Response insert(Request request, RequestContext context) { + public Response insert(Feed feed, RequestContext context) { logger.debug(context, "FeedServiceImpl:insert method called : "); - String notification_service_base_url = System.getenv("notification_service_base_url"); - String NOTIFICATION_SERVICE_URL = notification_service_base_url + "/private/v2/notification/send"; - logger.debug( - context, - "FeedServiceImpl:insert :: calling notification service URL :" - + NOTIFICATION_SERVICE_URL); - Response response = new Response(); - Request req = new Request(); - Map<String,Object> reqObj = new HashMap<>(); - reqObj.put(JsonKey.NOTIFICATIONS,Arrays.asList(request.getRequest())); - req.setRequest(reqObj); + Map<String, Object> dbMap = mapper.convertValue(feed, Map.class); + String feedId = ProjectUtil.generateUniqueId(); + dbMap.put(JsonKey.ID, feedId); + dbMap.put(JsonKey.CREATED_ON, new Timestamp(Calendar.getInstance().getTimeInMillis())); try { - String json = mapper.writeValueAsString(req); - json = new String(json.getBytes(), StandardCharsets.UTF_8); - Map<String, String> headers = new HashMap<>(); - headers.put("Accept", "application/json"); - headers.put("Content-type", "application/json"); - headers.put("requestId", request.getRequestId()); - - ProjectUtil.setTraceIdInHeader(headers, context); - String responseStr = HttpClientUtil.post(NOTIFICATION_SERVICE_URL, json, headers, context); - logger.info( - context, - "FeedServiceImpl:insert :: Response =" + response); - response = mapper.readValue(responseStr, Response.class); + if (MapUtils.isNotEmpty(feed.getData())) { + dbMap.put(JsonKey.FEED_DATA, mapper.writeValueAsString(feed.getData())); + } } catch (Exception ex){ logger.error(context, "FeedServiceImpl:insert Exception occurred while mapping.", ex); ProjectCommonException.throwServerErrorException(ResponseCode.SERVER_ERROR); } - return response; + return iFeedDao.insert(dbMap, context); } @Override - public Response update(Request request, RequestContext context) { + public Response update(Feed feed, RequestContext context) { logger.debug(context, "FeedServiceImpl:update method called : "); + Map<String, Object> dbMap = mapper.convertValue(feed, Map.class); String notification_service_base_url = System.getenv("notification_service_base_url"); String NOTIFICATION_SERVICE_URL = notification_service_base_url + "/private/v1/notification/feed/update"; Response response = new Response(); try { - String json = mapper.writeValueAsString(request); - json = new String(json.getBytes(), StandardCharsets.UTF_8); - Map<String, String> headers = new HashMap<>(); - headers.put("Accept", "application/json"); - headers.put("Content-type", "application/json"); - headers.put("requestId", request.getRequestId()); - - ProjectUtil.setTraceIdInHeader(headers, context); - String responseStr = HttpClientUtil.patch(NOTIFICATION_SERVICE_URL, json, headers, context); - logger.info( - context, - "FeedServiceImpl:insert :: Response =" + response); - response = mapper.readValue(responseStr, Response.class); + if (MapUtils.isNotEmpty(feed.getData())) { + dbMap.put(JsonKey.FEED_DATA, mapper.writeValueAsString(feed.getData())); + } } catch (Exception ex) { logger.error(context, "FeedServiceImpl:update Exception occurred while mapping.", ex); ProjectCommonException.throwServerErrorException(ResponseCode.SERVER_ERROR); } - return response; + dbMap.remove(JsonKey.CREATED_ON); + dbMap.put(JsonKey.UPDATED_ON, new Timestamp(Calendar.getInstance().getTimeInMillis())); + return iFeedDao.update(dbMap, context); } @Override public List<Feed> getFeedsByProperties(Map<String, Object> properties, RequestContext context) { logger.debug(context, "FeedServiceImpl:getFeedsByUserId method called : "); - String notification_service_base_url = System.getenv("notification_service_base_url"); - String NOTIFICATION_SERVICE_URL = notification_service_base_url + "/private/v1/notification/feed/read/"+properties.get(JsonKey.USER_ID); - logger.debug( - context, - "FeedServiceImpl:insert :: calling notification service URL :" - + NOTIFICATION_SERVICE_URL); - Map<String, String> headers = new HashMap<>(); - headers.put("Accept", "application/json"); - headers.put("Content-type", "application/json"); + Response dbResponse = iFeedDao.getFeedsByProperties(properties, context); + List<Map<String, Object>> responseList = null; List<Feed> feedList = new ArrayList<>(); - try { - ProjectUtil.setTraceIdInHeader(headers, context); - String response = HttpClientUtil.get(NOTIFICATION_SERVICE_URL,headers, context); - logger.info( - context, - "FeedServiceImpl:callNotificationService :: Response =" + response); - if (!StringUtils.isBlank(response)) { - Response notificationRes = mapper.readValue(response, Response.class); - List<Map<String, Object>> feeds = (List<Map<String, Object>>)notificationRes.getResult().get(JsonKey.FEEDS); - if (CollectionUtils.isNotEmpty(feeds)) { - for (Map<String,Object> feed:feeds) { - feedList.add(mapper.convertValue(feed, Feed.class)); - } - } + if (null != dbResponse && null != dbResponse.getResult()) { + responseList = (List<Map<String, Object>>) dbResponse.getResult().get(JsonKey.RESPONSE); + if (CollectionUtils.isNotEmpty(responseList)) { + responseList.forEach( + s -> { + try { + String data = (String) s.get(JsonKey.FEED_DATA); + if (StringUtils.isNotBlank(data)) { + s.put( + JsonKey.FEED_DATA, + mapper.readValue(data, new TypeReference<Map<String, Object>>() {})); + } else { + s.put(JsonKey.FEED_DATA, Collections.emptyMap()); + } + feedList.add(mapper.convertValue(s, Feed.class)); + } catch (Exception ex) { + logger.error( + context, + "FeedServiceImpl:getRecordsByUserId :Exception occurred while mapping feed data.", + ex); + } }); } - } catch (Exception ex) { - logger.error(context, "FeedServiceImpl:read Exception occurred while mapping.", ex); - ProjectCommonException.throwServerErrorException(ResponseCode.SERVER_ERROR); } return feedList; } @Override - public Response delete(Request request, RequestContext context) { - String notification_service_base_url = System.getenv("notification_service_base_url"); - String NOTIFICATION_SERVICE_URL = notification_service_base_url + "/private/v1/notification/feed/delete"; - Response response = new Response(); - request.getRequest().put(JsonKey.IDS,Arrays.asList(request.getRequest().get(JsonKey.FEED_ID))); - try { - String json = mapper.writeValueAsString(request); - json = new String(json.getBytes(), StandardCharsets.UTF_8); - Map<String, String> headers = new HashMap<>(); - headers.put("Accept", "application/json"); - headers.put("Content-type", "application/json"); - headers.put("requestId", request.getRequestId()); - - ProjectUtil.setTraceIdInHeader(headers, context); - String responseStr = HttpClientUtil.post(NOTIFICATION_SERVICE_URL, json, headers, context); - logger.info( - context, - "FeedServiceImpl:insert :: Response =" + response); - response = mapper.readValue(responseStr, Response.class); - - } catch (Exception ex) { - logger.error(context, "FeedServiceImpl:read Exception occurred while mapping.", ex); - ProjectCommonException.throwServerErrorException(ResponseCode.SERVER_ERROR); - } - return response; + public void delete(String id, String userId, String category, RequestContext context) { + logger.debug( + context, "FeedServiceImpl:delete method called for feedId : " + id + "user-id:" + userId); + iFeedDao.delete(id, userId, category, context); } } diff --git a/service/src/main/java/org/sunbird/util/feed/FeedUtil.java b/service/src/main/java/org/sunbird/util/feed/FeedUtil.java index 8735cafe1..0a0054868 100644 --- a/service/src/main/java/org/sunbird/util/feed/FeedUtil.java +++ b/service/src/main/java/org/sunbird/util/feed/FeedUtil.java @@ -7,10 +7,10 @@ import java.util.Map; import java.util.Objects; import java.util.concurrent.CopyOnWriteArrayList; import java.util.stream.IntStream; +import org.apache.commons.lang3.StringUtils; import org.sunbird.client.org.OrganisationClient; import org.sunbird.client.org.impl.OrganisationClientImpl; import org.sunbird.model.ShadowUser; -import org.sunbird.request.Request; import org.sunbird.service.feed.IFeedService; import org.sunbird.service.feed.FeedFactory; import org.sunbird.keys.JsonKey; @@ -21,8 +21,6 @@ import org.sunbird.model.user.FeedAction; import org.sunbird.model.user.FeedStatus; import org.sunbird.request.RequestContext; import org.sunbird.response.Response; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.commons.lang3.StringUtils; /** this class will be used as a Util for inserting Feed in table */ public class FeedUtil { @@ -62,18 +60,12 @@ public class FeedUtil { (ArrayList<Map<String, String>>) data.get(JsonKey.PROSPECT_CHANNELS_IDS); orgList.addAll(getOrgDetails(shadowUser.getChannel(), context)); } - Request request = new Request(); - ObjectMapper mapper = new ObjectMapper(); - request.setRequest(mapper.convertValue(feedList.get(index),Map.class)); - response = feedService.update(request, context); - + response = feedService.update(feedList.get(index), context); } return response; } - private static Request createFeedObj(ShadowUser shadowUser, String userId, RequestContext context) { - Request request = new Request(); - ObjectMapper mapper = new ObjectMapper(); + private static Feed createFeedObj(ShadowUser shadowUser, String userId, RequestContext context){ Feed feed = new Feed(); feed.setPriority(1); feed.setCreatedBy(shadowUser.getAddedBy()); @@ -87,8 +79,7 @@ public class FeedUtil { JsonKey.PROSPECT_CHANNELS_IDS, getOrgDetails(shadowUser.getChannel(), context)); feed.setData(prospectsChannel); feed.setUserId(userId); - request.setRequest(mapper.convertValue(feed,Map.class)); - return request; + return feed; } private static List<Map<String, String>> getOrgDetails(String channel, RequestContext context) { diff --git a/service/src/test/java/org/sunbird/actor/user/UserFeedActorTest.java b/service/src/test/java/org/sunbird/actor/user/UserFeedActorTest.java index 5a6cb6280..ff8b1f0b3 100644 --- a/service/src/test/java/org/sunbird/actor/user/UserFeedActorTest.java +++ b/service/src/test/java/org/sunbird/actor/user/UserFeedActorTest.java @@ -3,14 +3,13 @@ package org.sunbird.actor.user; import static akka.testkit.JavaTestKit.duration; import static org.junit.Assert.assertTrue; import static org.powermock.api.mockito.PowerMockito.mock; -import static org.junit.Assert.assertFalse; import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.Props; import akka.testkit.javadsl.TestKit; - -import java.util.*; - +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -28,11 +27,9 @@ import org.sunbird.common.Constants; import org.sunbird.exception.ProjectCommonException; import org.sunbird.exception.ResponseCode; import org.sunbird.helper.ServiceFactory; -import org.sunbird.http.HttpClientUtil; import org.sunbird.keys.JsonKey; import org.sunbird.operations.ActorOperations; import org.sunbird.request.Request; -import org.sunbird.request.RequestContext; import org.sunbird.response.Response; import org.sunbird.service.feed.IFeedService; import org.sunbird.service.feed.impl.FeedServiceImpl; @@ -46,8 +43,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; CassandraOperationImpl.class, IFeedService.class, FeedServiceImpl.class, - org.sunbird.datasecurity.impl.ServiceFactory.class, - HttpClientUtil.class + org.sunbird.datasecurity.impl.ServiceFactory.class }) @SuppressStaticInitializationFor("org.sunbird.common.ElasticSearchUtil") @PowerMockIgnore({ @@ -65,7 +61,7 @@ public class UserFeedActorTest { private static CassandraOperation cassandraOperation = null; @Before - public void setUp() throws JsonProcessingException{ + public void setUp(){ PowerMockito.mockStatic(ServiceFactory.class); userFeed.put(JsonKey.ID, "123-456-789"); response = new Response(); @@ -79,17 +75,18 @@ public class UserFeedActorTest { Map<String, Object> responseMap2 = new HashMap<>(); responseMap2.put(Constants.RESPONSE, Constants.SUCCESS); upsertResponse.getResult().putAll(responseMap2); - ObjectMapper Obj = new ObjectMapper(); - String jsonStr = Obj.writeValueAsString(upsertResponse); - PowerMockito.mockStatic(HttpClientUtil.class); - PowerMockito.when(HttpClientUtil.post(Mockito.anyString(),Mockito.anyString(),Mockito.anyMap(),Mockito.any())).thenReturn(jsonStr); - PowerMockito.when(HttpClientUtil.patch(Mockito.anyString(),Mockito.anyString(),Mockito.anyMap(),Mockito.any())).thenReturn(jsonStr); - PowerMockito.when(HttpClientUtil.get(Mockito.anyString(),Mockito.anyMap(),Mockito.any())).thenReturn(getUserFeedData()); - + PowerMockito.when( + cassandraOperation.insertRecord( + Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any())) + .thenReturn(upsertResponse); + PowerMockito.when( + cassandraOperation.updateRecord( + Mockito.any(), Mockito.any(), Mockito.anyMap(), Mockito.anyMap(), Mockito.any())) + .thenReturn(upsertResponse); } @Test - public void getUserFeedTest() throws JsonProcessingException{ + public void getUserFeedTest() { TestKit probe = new TestKit(system); ActorRef subject = system.actorOf(props); Request reqObj = new Request(); @@ -97,7 +94,7 @@ public class UserFeedActorTest { reqObj.setOperation(ActorOperations.GET_USER_FEED_BY_ID.getValue()); reqObj.put(JsonKey.USER_ID, "123-456-789"); subject.tell(reqObj, probe.getRef()); - Response res = probe.expectMsgClass(duration("30 second"), Response.class); + Response res = probe.expectMsgClass(duration("10 second"), Response.class); Assert.assertTrue(null != res && res.getResponseCode() == ResponseCode.OK); } @@ -143,7 +140,6 @@ public class UserFeedActorTest { } public boolean testScenario(Request reqObj, ResponseCode errorCode) { - TestKit probe = new TestKit(system); ActorRef subject = system.actorOf(props); subject.tell(reqObj, probe.getRef()); @@ -159,23 +155,4 @@ public class UserFeedActorTest { } } - - public String getUserFeedData () { - Response response = new Response(); - Map<String,Object> result = new HashMap<>(); - List<Map<String,Object>> feeds = new ArrayList<>(); - Map<String,Object> feed = new HashMap<>(); - feed.put(JsonKey.ID,"12312312"); - feeds.add(feed); - result.put(JsonKey.FEEDS,feeds); - response.putAll(result); - ObjectMapper Obj = new ObjectMapper(); - String jsonStr=null; - try { - jsonStr = Obj.writeValueAsString(response); - }catch (Exception e){ - assertFalse(false); - } - return jsonStr; - } } diff --git a/service/src/test/java/org/sunbird/service/feed/impl/FeedServiceImplTest.java b/service/src/test/java/org/sunbird/service/feed/impl/FeedServiceImplTest.java index 276bb4886..f23e922e9 100644 --- a/service/src/test/java/org/sunbird/service/feed/impl/FeedServiceImplTest.java +++ b/service/src/test/java/org/sunbird/service/feed/impl/FeedServiceImplTest.java @@ -11,7 +11,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; -import static org.junit.Assert.assertFalse; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @@ -20,16 +19,11 @@ import org.sunbird.common.Constants; import org.sunbird.dao.feed.IFeedDao; import org.sunbird.dao.feed.impl.FeedDaoImpl; import org.sunbird.helper.ServiceFactory; -import org.sunbird.http.HttpClientUtil; import org.sunbird.keys.JsonKey; import org.sunbird.model.user.Feed; -import org.sunbird.request.Request; import org.sunbird.response.Response; import org.sunbird.service.feed.FeedFactory; import org.sunbird.service.feed.IFeedService; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.core.JsonProcessingException; @RunWith(PowerMockRunner.class) @@ -37,9 +31,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; ServiceFactory.class, CassandraOperationImpl.class, FeedDaoImpl.class, - IFeedDao.class, - HttpClientUtil.class - + IFeedDao.class }) @PowerMockIgnore({ "javax.management.*", @@ -52,7 +44,7 @@ public class FeedServiceImplTest { private static IFeedService feedService; @Before - public void setUp() throws JsonProcessingException{ + public void setUp(){ PowerMockito.mockStatic(FeedDaoImpl.class); IFeedDao iFeedDao = PowerMockito.mock(FeedDaoImpl.class); PowerMockito.when(FeedDaoImpl.getInstance()).thenReturn(iFeedDao); @@ -64,13 +56,13 @@ public class FeedServiceImplTest { Map<String, Object> responseMap = new HashMap<>(); responseMap.put(Constants.RESPONSE, Arrays.asList(getFeedMap())); response.getResult().putAll(responseMap); - ObjectMapper Obj = new ObjectMapper(); - String jsonStr = Obj.writeValueAsString(upsertResponse); - PowerMockito.mockStatic(HttpClientUtil.class); - PowerMockito.when(HttpClientUtil.post(Mockito.anyString(),Mockito.anyString(),Mockito.anyMap(),Mockito.any())).thenReturn(jsonStr); - PowerMockito.when(HttpClientUtil.patch(Mockito.anyString(),Mockito.anyString(),Mockito.anyMap(),Mockito.any())).thenReturn(jsonStr); - PowerMockito.when(HttpClientUtil.get(Mockito.anyString(),Mockito.anyMap(),Mockito.any())).thenReturn(getUserFeedData()); - + PowerMockito.when(iFeedDao.insert(Mockito.anyMap(), Mockito.any())).thenReturn(upsertResponse); + PowerMockito.when(iFeedDao.update(Mockito.anyMap(), Mockito.any())).thenReturn(upsertResponse); + PowerMockito.doNothing() + .when(iFeedDao) + .delete(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.any()); + PowerMockito.when(iFeedDao.getFeedsByProperties(Mockito.anyMap(), Mockito.any())) + .thenReturn(response); feedService = FeedFactory.getInstance(); } @@ -83,11 +75,22 @@ public class FeedServiceImplTest { @Test public void testUpdate() { - Response res = feedService.update(getFeedUpdate(true), null); + Response res = feedService.update(getFeed(true), null); Assert.assertTrue( ((String) res.getResult().get(JsonKey.RESPONSE)).equalsIgnoreCase(JsonKey.SUCCESS)); } + @Test + public void testDelete() { + boolean response = false; + try { + feedService.delete("123-456-789", null, null, null); + response = true; + } catch (Exception ex) { + Assert.assertTrue(response); + } + Assert.assertTrue(response); + } @Test public void testGetRecordsByProperties() { @@ -105,8 +108,7 @@ public class FeedServiceImplTest { return fMap; } - private Request getFeed(boolean needId) { - Request request = new Request(); + private Feed getFeed(boolean needId) { Feed feed = new Feed(); feed.setUserId("123-456-7890"); feed.setCategory("category"); @@ -118,43 +120,7 @@ public class FeedServiceImplTest { channelList.add("SI"); map.put(JsonKey.PROSPECT_CHANNELS, channelList); feed.setData(map); - request.setRequest(new ObjectMapper().convertValue(feed,Map.class)); - return request; + return feed; } - private Request getFeedUpdate(boolean needId) { - Request request = new Request(); - Feed feed = new Feed(); - feed.setUserId("123-456-7890"); - feed.setCategory("category"); - if (needId) { - feed.setId("123-456-789"); - } - Map<String, Object> map = new HashMap<>(); - List<String> channelList = new ArrayList<>(); - channelList.add("SI"); - map.put(JsonKey.PROSPECT_CHANNELS, channelList); - feed.setData(map); - request.setRequest(new ObjectMapper().convertValue(feed,Map.class)); - return request; - } - - public String getUserFeedData () { - Response response = new Response(); - Map<String,Object> result = new HashMap<>(); - List<Map<String,Object>> feeds = new ArrayList<>(); - Map<String,Object> feed = new HashMap<>(); - feed.put(JsonKey.ID,"12312312"); - feeds.add(feed); - result.put(JsonKey.FEEDS,feeds); - response.putAll(result); - ObjectMapper Obj = new ObjectMapper(); - String jsonStr=null; - try { - jsonStr = Obj.writeValueAsString(response); - }catch (Exception e){ - assertFalse(false); - } - return jsonStr; - } } -- GitLab