JavaRush /Блоги Java /Random-TG /Мо қобилияти обуна шудан ба як гурӯҳи мақолаҳоро илова ме...
Roman Beekeeper
Сатҳи

Мо қобилияти обуна шудан ба як гурӯҳи мақолаҳоро илова мекунем. (Қисми 1) - "Лоиҳаи Java аз А то Я"

Дар гурӯҳ нашр шудааст
Салом! Имрӯз мо ба як гурӯҳи мақолаҳо дар JavaRush обуна илова мекунем. Ин ба нашри JRTB-5 дар GitHub мувофиқат мекунад. Иҷозат диҳед тавзеҳ диҳам: JavaRush дорои бахше бо номи Мақолаҳо ва дар он Гурӯҳҳои мақолаҳо мавҷуданд . Идеяи он аст, ки тавассути боти телеграмм аз як ё якчанд гурӯҳ огоҳӣ дар бораи мақолаи нав гирифта шавад."Лоиҳаи Java аз A то Я": Илова кардани қобorяти обуна ба гурӯҳи мақолаҳо.  Қисми 1 - 1

Иловаи JRTB-5

Фарз мекунем, ки ман ба мақолаҳои гурӯҳи Ҳикояҳои муваффақият таваҷҷӯҳ дорам . Аз ин рӯ, ман мехоҳам ба навсозиҳои ин гурӯҳ обуна шавам ва ҳар дафъа истинод ба нашрияи нав гирам. Дар доираи ин вазифа мо бояд тарзи истифодаи API-и кушодаро барои кор бо гурӯҳҳо дар JavaRush омӯзем. Маҳз дар ҳамин лаҳза чунин чизе омад. Дар ин ҷо истинод ба тавсифи API кушода аст .
Рафикон! Оё шумо мехоҳед бидонед, ки кай рамзи нав барои лоиҳа ё мақолаи нав мебарояд? Ба канали ман обуна шавед tg . Дар он ҷо ман мақолаҳо, фикрҳо ва таҳияи сарчашмаҳои кушодаи худро ҷамъ мекунам.

Вагарна чист? Биёед ҳоло онро муайян кунем

Мо то ҳол дар бораи ғамхорӣ сӯҳбат накардаем. Барои онҳое, ки намедонанд, ман ба таври мухтасар мефаҳмонам: ин ҷоест, ки шумо метавонед ба API-и server ошкоро назар кунед ва кӯшиш кунед, ки ба он дархост пешниҳод кунед. Одатан, swagger дархостҳои имконпазирро гурӯҳбандӣ мекунад. Дар ҳолати мо, се гурӯҳ вуҷуд дорад: форум-савол , гурӯҳ , пост . Дар ҳар як гурӯҳ як ё якчанд дархостҳо мавҷуданд, ки ҳамаи маълумоти заруриро барои сохтани ин дархост нишон медиҳанд (яъне кадом параметрҳои иловагиро интиқол додан мумкин аст, бо онҳо чӣ кор кардан лозим аст, кадом усули http ва ғайра). Ман ба шумо маслиҳат медиҳам, ки дар ин мавзӯъ бештар хонед ва тамошо кунед, зеро ин қисми рушдест, ки қариб ҳар яки шумо бо он дучор мешавад. Барои фаҳмидани он, биёед бифаҳмем, ки дар JavaRush чанд гурӯҳ вуҷуд дорад. Барои ин, гурӯҳи назораткунандаро васеъ кунед ва Гирифтани дархост /api/1.0/rest/groups/count -ро интихоб кунед . Он ба мо шумораи гурӯҳҳоро дар JavaRush бармегардонад. Биёед бубинем: "Лоиҳаи Java аз A то Я": Илова кардани қобorяти обуна ба гурӯҳи мақолаҳо.  Қисми 1 - 2Тасвир нишон медиҳад, ки ин дархост якчанд параметрҳоро дастгирӣ мекунад (дархост, намуд, филтр). Барои санҷидани ин дархост, шумо бояд тугмаи "Кӯшиш кунед" -ро пайдо кунед , ки пас аз он ин параметрҳоро танзим кардан мумкин аст: "Лоиҳаи Java аз A то Я": Илова кардани қобorяти обуна ба гурӯҳи мақолаҳо.  Қисми 1 - 3Шумо инчунин метавонед дар он ҷо намуд, филтр ва дархостро танзим кунед (ин ҷо воқеан ҷолиб аст: ин ҷустуҷӯи матн дар гурӯҳ). Аммо ҳоло, биёед онро бидуни маҳдудият иҷро кунем ва бубинем, ки дар JavaRush чанд гурӯҳ вуҷуд дорад. Барои ин кор кардан тугмаро пахш кунед Иҷро кунед. Танҳо дар поён ба ин дархост посух (дар бахши Ҷавоби server) хоҳад буд: Мо мебинем, ки дар маҷмӯъ 30"Лоиҳаи Java аз A то Я": Илова кардани қобorяти обуна ба гурӯҳи мақолаҳо.  Қисми 1 - 4 гурӯҳ вуҷуд дорад , ин дархост дар 95ms анҷом дода шудааст ва дар посух як қатор сарлавҳаҳо мавҷуданд. Баъд, биёед кӯшиш кунем, ки баъзе параметрҳоро танзим кунем. Биёед параметри типро ба арзиши ШИРКАТ баробар интихоб кунем ва бубинем, ки натиҷа чӣ гуна тағир меёбад: 4-тои онҳо вуҷуд доранд.Инро чӣ гуна бояд тафтиш кард? Ин осон аст: шумо метавонед ба вебсайт равед, қисмати мақоларо пайдо кунед, ҳамаи гурӯҳҳоро интихоб кунед ва дар он ҷо филтри мувофиқро илова кунед ( https://javarush.com/groups/all?type=COMPANY ). Ва ҳа, дар ҳақиқат, танҳо 4-тои онҳо вуҷуд доранд . Воқеан, агар донишгоҳҳоро санҷем, ҳоло вуҷуд надорад. Танҳо барои фароғат, бубинед, ки агар шумо дар браузере, ки шумо ба Javarush ворид шудаед ва ворид нашудаед, филтр = MY -ро танзим кунед, чӣ мешавад. Муфассалтар дар бораи swagger - дар ин мақола дар бораи Habré ."Лоиҳаи Java аз A то Я": Илова кардани қобorяти обуна ба гурӯҳи мақолаҳо.  Кисми 1 — 5"Лоиҳаи Java аз A то Я": Илова кардани қобorяти обуна ба гурӯҳи мақолаҳо.  Қисми 1 - 6

Навиштани муштарӣ барои API Javarush барои гурӯҳҳо

Ҳоло, дар асоси API кушода, мо як мизоҷи Java менависем, ки метавонад дархост кунад, посух гирад ва дақиқ медонад, ки кадом an objectҳо меоянд. Мо инчунин an objectҳоро аз сваггер, аз бахши Моделҳо (дар поёни саҳифа) мегирем. Биёед бастаи нав созем ва онро javarushclient дар паҳлӯи хидматрасонӣ, репозиторий меномем. Дар оянда, мо онро ба китобхонаи алоҳидаи созмони ҷамъиятии Javarush интиқол медиҳем ва онро танҳо ҳамчун вобастагӣ истифода хоҳем кард.
Ман аллакай дар бораи эҷоди мизоҷони Java дар мақолаи "Дастур оид ба эҷоди муштарӣ барои API Skyscanner ва нашри он дар jCenter ва Maven Central" навишта будам .
Пеш аз ҳама, шумо бояд Unitrest, китобхона барои эҷоди дархостҳои http ба API JavaRush илова кунед:
<dependency>
  <groupId>com.konghq</groupId>
  <artifactId>unirest-java</artifactId>
  <version>${unirest.version}</version>
</dependency>
Ва versionро дар блоки хосиятҳо ҷойгир кунед:
<unirest.version>3.11.01</unirest.version>
Вақте ки мо вобастагӣ дорем, мо метавонем ба илова кардани code шурӯъ кунем. Биёед барои гурӯҳҳои JavaRushGroupClient муштарӣ ва амалисозӣ дар синфи JavaRushGroupClientImpl эҷод кунем. Аммо аввал ба шумо лозим аст, ки DTO (an objectҳои интиқоли маълумот) - яъне синфҳоеро эҷод кунед, ки an objectҳои онҳо ҳама маълумоти барои муштариро дарбар мегиранд. Ҳама моделҳоро метавон дар зер дидан мумкин аст.Дар поёни он қисмати Моделҳо мавҷуд аст , ки дар он шумо метавонед онҳоро ҳисоб кунед. Ин аст он чизе ки GroupDiscussionInfo дар swagger ба назар мерасад: Дар бастаи javarushclient мо як "Лоиҳаи Java аз A то Я": Илова кардани қобorяти обуна ба гурӯҳи мақолаҳо.  Қисми 1 - 7бастаи dto эҷод мекунем , ки ба он бар асоси додаҳои swagger синфҳои зеринро илова мекунем:
  • MeGroupInfoStatus :

    package com.github.javarushcommunity.jrtb.javarushclient.dto;
    
    /**
    * Member group status.
    */
    public enum MeGroupInfoStatus {
       UNKNOWN, CANDIDATE, INVITEE, MEMBER, EDITOR, MODERATOR, ADMINISTRATOR, BANNED
    }

  • MeGroupInfo :

    package com.github.javarushcommunity.jrtb.javarushclient.dto;
    
    import lombok.Data;
    
    /**
    * Group information related to authorized user. If there is no user - will be null.
    */
    @Data
    public class MeGroupInfo {
       private MeGroupInfoStatus status;
       private Integer userGroupId;
    }

  • TypeInfoType :

    package com.github.javarushcommunity.jrtb.javarushclient.dto;
    
    /**
    * Group Info type;
    */
    public enum GroupInfoType {
       UNKNOWN, CITY, COMPANY, COLLEGE, TECH, SPECIAL, COUNTRY
    }

  • UserDiscussionInfo :

    package com.github.javarushcommunity.jrtb.javarushclient.dto;
    
    import lombok.Data;
    
    /**
    * DTO for User discussion info.
    */
    @Data
    public class UserDiscussionInfo {
    
       private Boolean isBookmarked;
       private Integer lastTime;
       private Integer newCommentsCount;
    }

  • Ҳолати GroupVisibilitysd :

    package com.github.javarushcommunity.jrtb.javarushclient.dto;
    
    /**
    * Group Visibility status.
    */
    public enum GroupVisibilityStatus {
       UNKNOWN, RESTRICTED, PUBLIC, PROTECTED, PRIVATE, DISABLED, DELETED
    }

  • Сипас - GroupInfo :

    package com.github.javarushcommunity.jrtb.javarushclient.dto;
    
    import lombok.Data;
    import lombok.ToString;
    
    /**
    * Group Info DTO class.
    */
    @Data
    @ToString
    public class GroupInfo {
    
       private Integer id;
       private String avatarUrl;
       private String createTime;
       private String description;
       private String key;
       private Integer levelToEditor;
       private MeGroupInfo meGroupInfo;
       private String pictureUrl;
       private String title;
       private GroupInfoType type;
       private Integer userCount;
       private GroupVisibilityStatus visibilityStatus;
    }

Азбаски GroupInfo ва GroupDiscussionInfo тақрибан якхелаанд, биёед онҳоро дар мерос пайваст кунем - GroupDiscusionInfo :
package com.github.javarushcommunity.jrtb.javarushclient.dto;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

/**
* Group discussion info class.
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ToString(callSuper = true)
public class GroupDiscussionInfo extends GroupInfo {

   private UserDiscussionInfo userDiscussionInfo;
   private Integer commentsCount;
}
Мо инчунин ба филтр барои дархости GroupFilter ниёз дорем :
package com.github.javarushcommunity.jrtb.javarushclient.dto;

/**
* Filters for group requests.
*/
public enum GroupFilter {

   UNKNOWN, MY, ALL
}
Дар дархост барои гирифтани ID, он GroupDiscussionInfo-ро бармегардонад ва дар дархост барои маҷмӯи гурӯҳҳо, шумо метавонед ҳам GroupInfo ва ҳам GroupDiscussionInfo гиред. Азбаски дархостҳо метавонанд намуд, дархост, филтр, ҷуброн ва маҳдудият дошта бошанд, биёед синфи алоҳидаи GroupRequestArgs эҷод кунем ва онро синфи созанда созем (бихонед, ки намунаи созанда чист):
package com.github.javarushcommunity.jrtb.javarushclient.dto;

import lombok.*;

import java.util.HashMap;
import java.util.Map;

import static java.util.Objects.nonNull;

/**
* Request arguments for group requests.
*/
@Builder
@Getter
public class GroupRequestArgs {

   private final String query;
   private final GroupInfoType type;
   private final GroupFilter filter;

   /**
    * specified where to start getting groups
    */
   private final Integer offset;
   /**
    * Limited number of groups.
    */
   private final Integer limit;

   public Map populateQueries() {
       Map queries = new HashMap<>();
       if(nonNull(query)) {
           queries.put("query", query);
       }
       if(nonNull(type)) {
           queries.put("type", type);
       }
       if(nonNull(filter)) {
           queries.put("filter", filter);
       }
       if(nonNull(offset)) {
           queries.put("offset", offset);
       }
       if(nonNull(limit)) {
           queries.put("limit", limit);
       }
       return queries;
   }
}
Барои ҷустуҷӯи шумораи гурӯҳҳо, он каме фарқ мекунад. Он танҳо дархост, намуд ва филтр дорад. Ва чунин ба назар мерасад, ки шумо намехоҳед рамзро такрор кунед. Дар баробари ин, агар шумо онҳоро якҷоя кунед, ҳангоми кор бо бинокорон зишт пайдо мешавад. Аз ин рӯ, ман қарор додам, ки онҳоро ҷудо кунам ва рамзро такрор кунам. GroupCountRequestArgs чунин менамояд :
package com.github.javarushcommunity.jrtb.javarushclient.dto;

import lombok.Builder;
import lombok.Getter;

import java.util.HashMap;
import java.util.Map;

import static java.util.Objects.nonNull;

/**
* Request arguments for group count requests.
*/
@Builder
@Getter
public class GroupsCountRequestArgs {
   private final String query;
   private final GroupInfoType type;
   private final GroupFilter filter;

   public Map populateQueries() {
       Map queries = new HashMap<>();
       if (nonNull(query)) {
           queries.put("query", query);
       }
       if (nonNull(type)) {
           queries.put("type", type);
       }
       if (nonNull(filter)) {
           queries.put("filter", filter);
       }
       return queries;
   }
}
Бале, ман зикр накардаам, ки ду синфи охир усули populateQueries доранд, ки харитаро барои эҷоди дархост омода мекунад (шумо онро баъдтар хоҳед дид). Дар асоси синфҳои дар боло тавсифшуда, биёед интерфейси JavaRushGroupClient эҷод кунем :
package com.github.javarushcommunity.jrtb.javarushclient;

import com.github.javarushcommunity.jrtb.javarushclient.dto.GroupDiscussionInfo;
import com.github.javarushcommunity.jrtb.javarushclient.dto.GroupInfo;
import com.github.javarushcommunity.jrtb.javarushclient.dto.GroupRequestArgs;
import com.github.javarushcommunity.jrtb.javarushclient.dto.GroupsCountRequestArgs;

import java.util.List;

/**
 * Client for Javarush Open API corresponds to Groups.
 */
public interface JavaRushGroupClient {

    /**
     * Get all the {@link GroupInfo} filtered by provided {@link GroupRequestArgs}.
     *
     * @param requestArgs provided {@link GroupRequestArgs}.
     * @return the collection of the {@link GroupInfo} objects.
     */
    List<GroupInfo> getGroupList(GroupRequestArgs requestArgs);

    /**
     * Get all the {@link GroupDiscussionInfo} filtered by provided {@link GroupRequestArgs}.
     *
     * @param requestArgs provided {@link GroupRequestArgs}
     * @return the collection of the {@link GroupDiscussionInfo} objects.
     */
    List<GroupDiscussionInfo> getGroupDiscussionList(GroupRequestArgs requestArgs);

    /**
     * Get count of groups filtered by provided {@link GroupRequestArgs}.
     *
     * @param countRequestArgs provided {@link GroupsCountRequestArgs}.
     * @return the count of the groups.
     */
    Integer getGroupCount(GroupsCountRequestArgs countRequestArgs);

    /**
     * Get {@link GroupDiscussionInfo} by provided ID.
     *
     * @param id provided ID.
     * @return {@link GroupDiscussionInfo} object.
     */
    GroupDiscussionInfo getGroupById(Integer id);
}
Ду дархости гуногун барои парванда вақте ки мо мехоҳем маълумоти GroupInfo ё GroupDiscussionInfo илова кунем. Дар акси ҳол, ин дархостҳо якхелаанд ва танҳо фарқият дар он хоҳад буд, ки дар яке парчами дохилшуда дуруст ва дар дигараш нодуруст хоҳад буд. Аз ин рӯ, се усул не, 4 усул вуҷуд дошт. Акнун биёед ба татбиқи он шурӯъ кунем:
package com.github.javarushcommunity.jrtb.javarushclient;

import com.github.javarushcommunity.jrtb.javarushclient.dto.GroupDiscussionInfo;
import com.github.javarushcommunity.jrtb.javarushclient.dto.GroupInfo;
import com.github.javarushcommunity.jrtb.javarushclient.dto.GroupRequestArgs;
import com.github.javarushcommunity.jrtb.javarushclient.dto.GroupsCountRequestArgs;
import kong.unirest.GenericType;
import kong.unirest.Unirest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.List;

/**
* Implementation of the {@link JavaRushGroupClient} interface.
*/
@Component
public class JavaRushGroupClientImpl implements JavaRushGroupClient {

   private final String javarushApiGroupPath;

   public JavaRushGroupClientImpl(@Value("${javarush.api.path}") String javarushApi) {
       this.javarushApiGroupPath = javarushApi + "/groups";
   }

   @Override
   public List<GroupInfo> getGroupList(GroupRequestArgs requestArgs) {
       return Unirest.get(javarushApiGroupPath)
               .queryString(requestArgs.populateQueries())
               .asObject(new GenericType<list<GroupInfo>>() {
               })
               .getBody();
   }

   @Override
   public List<GroupDiscussionInfo> getGroupDiscussionList(GroupRequestArgs requestArgs) {
       return Unirest.get(javarushApiGroupPath)
               .queryString(requestArgs.populateQueries())
               .asObject(new GenericType<list<GroupDiscussionInfo>>() {
               })
               .getBody();
   }

   @Override
   public Integer getGroupCount(GroupsCountRequestArgs countRequestArgs) {
       return Integer.valueOf(
               Unirest.get(String.format("%s/count", javarushApiGroupPath))
                       .queryString(countRequestArgs.populateQueries())
                       .asString()
                       .getBody()
       );
   }

   @Override
   public GroupDiscussionInfo getGroupById(Integer id) {
       return Unirest.get(String.format("%s/group%s", javarushApiGroupPath, id.toString()))
               .asObject(GroupDiscussionInfo.class)
               .getBody();
   }


}
Ман роҳро ба API дар созанда бо истифода аз шарҳи арзиши аллакай шинос илова мекунам. Ин маънои онро дорад, ки арзиши дохor эзоҳ ба майдони файли хосиятҳо мувофиқат мекунад. Аз ин рӯ, биёед ба application.properties хати нав илова кунем:
javarush.api.path=https://javarush.com/api/1.0/rest
Ин арзиш ҳоло дар як ҷо барои ҳамаи муштариёни API хоҳад буд ва агар роҳи API тағир ёбад, мо онро зуд навсозӣ мекунем. Пештар ман бо микроскоп мех мехкӯб мекардам, аз дархости http тавассути Unirest посух гирифтам, онро ба сатр тарҷума кардам ва сипас ин сатрро тавассути Ҷексон таҳлил кардам... Ин даҳшатнок, дилгиркунанда ва бисёр чизҳои иловагиро талаб мекард. Дар ин китобхона шумо метавонед бубинед, ки он чӣ гуна аст. Ҳамин ки ман онро ба даст меорам, ман ҳама чизро ислоҳ мекунам.
Ҳар касе, ки мехоҳад ин китобхонаро навсозӣ кунад - танҳо бо истифода аз асбобҳои китобхонаи unirest an objectҳои қабулкунандаро илова кунад - дар паёми шахсӣ ё ҳамчун шумораи нав дар худи китобхона нависед. Ин барои шумо таҷрибаи воқеии корӣ хоҳад буд, аммо ман зид нестам. Ман баррасии пурраи codeро анҷом медиҳам ва агар лозим бошад, кӯмак мекунам.
Акнун савол ин аст: оё рамзи мо тавре кор мекунад, ки мо интизор будем? Ҷавоб осон аст: ба шумо танҳо лозим аст, ки барои онҳо санҷишҳо нависед. Тавре ки ман зиёда аз як маротиба гуфта будам, таҳиягарон бояд санҷишҳоро навишта тавонанд. Аз ин рӯ, бо истифода аз интерфейси Swagger UI, мо дархостҳо мефиристем, ҷавобҳоро дида мебароем ва онҳоро ҳамчун натиҷаи интизоршуда ба озмоишҳо иваз мекунем. Шояд шумо фавран пай бурдед, ки шумораи гурӯҳҳо статикӣ нест ва метавонад тағир ёбад. Ва шумо дуруст мегӯед. Ягона савол ин аст, ки ин рақам чанд маротиба тағйир меёбад? Хеле кам, бинобар ин дар тӯли якчанд моҳ мо гуфта метавонем, ки ин арзиш статикӣ хоҳад буд. Ва агар чизе тағир ёбад, мо санҷишҳоро нав мекунем. Вохӯред - JavaRushGroupClientTest:
package com.github.javarushcommunity.jrtb.javarushclient;

import com.github.javarushcommunity.jrtb.javarushclient.dto.GroupDiscussionInfo;
import com.github.javarushcommunity.jrtb.javarushclient.dto.GroupInfo;
import com.github.javarushcommunity.jrtb.javarushclient.dto.GroupRequestArgs;
import com.github.javarushcommunity.jrtb.javarushclient.dto.GroupsCountRequestArgs;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import java.util.List;

import static com.github.javarushcommunity.jrtb.javarushclient.dto.GroupInfoType.TECH;

@DisplayName("Integration-level testing for JavaRushGroupClientImplTest")
class JavaRushGroupClientTest {

   private final JavaRushGroupClient groupClient = new JavaRushGroupClientImpl("https://javarush.com/api/1.0/rest");

   @Test
   public void shouldProperlyGetGroupsWithEmptyArgs() {
       //given
       GroupRequestArgs args = GroupRequestArgs.builder().build();

       //when
       List<GroupInfo> groupList = groupClient.getGroupList(args);

       //then
       Assertions.assertNotNull(groupList);
       Assertions.assertFalse(groupList.isEmpty());
   }

   @Test
   public void shouldProperlyGetWithOffSetAndLimit() {
       //given
       GroupRequestArgs args = GroupRequestArgs.builder()
               .offset(1)
               .limit(3)
               .build();

       //when
       List<GroupInfo> groupList = groupClient.getGroupList(args);

       //then
       Assertions.assertNotNull(groupList);
       Assertions.assertEquals(3, groupList.size());
   }

   @Test
   public void shouldProperlyGetGroupsDiscWithEmptyArgs() {
       //given
       GroupRequestArgs args = GroupRequestArgs.builder().build();

       //when
       List<GroupDiscussionInfo> groupList = groupClient.getGroupDiscussionList(args);

       //then
       Assertions.assertNotNull(groupList);
       Assertions.assertFalse(groupList.isEmpty());
   }

   @Test
   public void shouldProperlyGetGroupDiscWithOffSetAndLimit() {
       //given
       GroupRequestArgs args = GroupRequestArgs.builder()
               .offset(1)
               .limit(3)
               .build();

       //when
       List<GroupDiscussionInfo> groupList = groupClient.getGroupDiscussionList(args);

       //then
       Assertions.assertNotNull(groupList);
       Assertions.assertEquals(3, groupList.size());
   }

   @Test
   public void shouldProperlyGetGroupCount() {
       //given
       GroupsCountRequestArgs args = GroupsCountRequestArgs.builder().build();

       //when
       Integer groupCount = groupClient.getGroupCount(args);

       //then
       Assertions.assertEquals(30, groupCount);
   }

   @Test
   public void shouldProperlyGetGroupTECHCount() {
       //given
       GroupsCountRequestArgs args = GroupsCountRequestArgs.builder()
               .type(TECH)
               .build();

       //when
       Integer groupCount = groupClient.getGroupCount(args);

       //then
       Assertions.assertEquals(7, groupCount);
   }

   @Test
   public void shouldProperlyGetGroupById() {
       //given
       Integer androidGroupId = 16;

       //when
       GroupDiscussionInfo groupById = groupClient.getGroupById(androidGroupId);

       //then
       Assertions.assertNotNull(groupById);
       Assertions.assertEquals(16, groupById.getId());
       Assertions.assertEquals(TECH, groupById.getType());
       Assertions.assertEquals("android", groupById.getKey());
   }
}
Санҷишҳо бо ҳамон услуби қаблӣ навишта мешаванд. Барои ҳар як дархост якчанд санҷишҳо мавҷуданд. Санҷидани ҳама чиз ҷоиз нест, зеро ман фикр мекунам, ки ин API аллакай ба таври беҳтарин санҷида шудааст.

Хулоса

Дар доираи ин мақола мо ба JavaRush API муштарии Java барои гурӯҳҳо илова кардем. Чунон ки мегуянд, зиндагй ва ёд гир. Ҳангоми навиштани ин муштарӣ, ман аз ҳуҷҷатҳои онҳо истифода бурдам ва кор бо an objectҳое, ки онҳо пешниҳод мекунанд, ба осонӣ истифода кардам. Диққати шуморо ба вазифае, ки ман пешниҳод кардам, ҷалб мекунам. Агар касе таваҷҷӯҳ дошта бошад, ба ман паёми хусусӣ нависед, ман беш аз он боварӣ дорам, ки ин як таҷрибаи хеле ҷолиб хоҳад буд. Ин қисми аввал буд. Дар дуюм, мо бевосита фармони иловаро иҷро мекунем ва (агар мо онро дар як мақола ҷойгир кунем) мо рӯйхати гурӯҳҳоеро, ки корбар ба онҳо обуна шудааст, илова мекунем. Баъдан, ҳар касе, ки хоҳиш ва истеъдоди навиштани матн барои бот дорад, лутфан ба ман дар PM нависед. Ман дар ин масъала коршинос нестам ва ҳама гуна кӯмак хеле муфид хоҳад буд. Биёед ҳамаи инро ҳамчун таҳияи сарчашмаи кушод ба расмият орем, ҷолиб хоҳад буд! Хуб, чун маъмулӣ - лайк монед, обуна шавед, занг занед , ба лоиҳаи мо ситора диҳед , шарҳҳо нависед ва мақоларо баҳо диҳед!
истинодҳои муфид

Рӯйхати ҳамаи маводҳои силсила дар аввали ин мақола аст.

Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION