dimanche 7 juin 2015

Test Webservice With UnitTest Parsing Data from Webservice

Hello guys I implemented a class that retrieves the data from Web Service and it works very nice But I want to test whether my method parses the data correctly. I implemented a UnitTest but I always get this Error

java.lang.NullPointerException at de.tollcollect.portal.MasterDataSubset.MasterDataSubSetTest.callsServiceOfMasterDataSubset(MasterDataSubSetTest.java:117) ..

this my UnitTest

@RunWith(Parameterized.class)
public class MasterDataSubSetTest {

    @Mock
    private AccountServicePortType service;
    @Mock
    private  GetMasterDataSubSetResponse getResponseTest;
    @Mock
    private MasterDataSubsetPresenter presenter;

    @Mock
    GetMasterDataSubSetResponseType responseType;

    private String number;
    private String userNumber;
    private String description;
    private String expectedResult;

    private String test;

    public MasterDataSubSetTest(String number, String userNumber,String description, String expectedResult) {
        this.number = number ;
        this.userNumber = userNumber;
        this.description = description;
        this.expectedResult = expectedResult;
    }

    @Before
    public void setup(){
        MockitoAnnotations.initMocks(this);
    }



    @Parameterized.Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][]{
            {
                "0", //Number for test case
                "1000",
                "Service Test--> input UserNumber 1000083 adesso AG --> Expected ", //Adress
                "adesso AG", // expected
            }
        });
    }

    @Test
    public void callsServiceOfMasterDataSubset() throws NullPointerException, FaultMessage {

        GetMasterDataSubSet getMasterData = new GetMasterDataSubSet();
        getMasterData.setUserNumber(userNumber);

             getResponseTest= service.getMasterDataSubSet(getMasterData);
            MasterDataSubset testModel=  presenter.buildModel(getResponseTest);

        final String userNumber = "1000083";

        assertEquals("adil", testModel.getCity());
    }

and this my Code

@Component
@Scope("prototype")
public class MasterDataSubsetPresenter {

    private String userID;
    private Locale locale;
    private final MasterDataSubsetView view;
    private final ShowReferenceDataService showReferenceDataService;

    /**
     *
     * @param masterDataSubsetView
     */
    @Autowired
    public MasterDataSubsetPresenter(MasterDataSubsetView masterDataSubsetView,final ShowReferenceDataService showReferenceDataService){
        this.view = masterDataSubsetView;
        this.showReferenceDataService = showReferenceDataService;
    }

    /**
     *
     * @param userID
     */
    public void setUserID(String userID) {
        this.userID = userID;
    }

    public void setLocale(Locale locale) {
        this.locale = locale;
    }

    /**
     *  get view of Portlet
     * @return view
     */
    public MasterDataSubsetView getView() {
        view.addSubsetToLayout(getMasterDataSubset());
        return view;
    }

    private MasterDataSubset getMasterDataSubset() {
        if (userID == null) {
            throw new IllegalStateException("UserID is null before getting view.");
        }

        String userNumber = showReferenceDataService.getUserNumberByUserId(Long.parseLong(userID));
        MasterDataSubset model = buildModel(showReferenceDataService.getMasterDataSubSet(userNumber));

        return model;
    }

    /**
     *
     * @param referenceData
     * @return
     */
    public MasterDataSubset buildModel(GetMasterDataSubSetResponse referenceData) {
        MasterDataSubset masterDataSubset= new MasterDataSubset();
        GetMasterDataSubSetResponseType response = referenceData.getResponse();
        masterDataSubset.setUserNumber(response.getUserNumber());
        masterDataSubset.parseCompanyDataSubset(response.getCompany());
        masterDataSubset.parseInvoiceDate(response.getFacturaDate());
        masterDataSubset.setLocale(this.locale);
        return masterDataSubset;
    }


}


    @Service
public class ShowReferenceDataServiceImpl implements ShowReferenceDataService {

  private static final Logger LOGGER = LoggerFactory.getLogger(ShowReferenceDataServiceImpl.class);

  private final AccountServicePortType accountService;
  private final TcLiferayRoleService tcLiferayRoleService;
  private final PortalBaseConfiguration portalBaseConfiguration;
  private final TcLiferayUserService tcLiferayUserService;

  /**
   * Instantiates a new show reference data service impl.
   *
   * @param accountService the account service
   * @param tcLiferayRoleService the tc liferay role service
   * @param portalBaseConfiguration the portal base configuration
   * @param tcLiferayUserService the tc liferay user service
   */
  @Autowired
  public ShowReferenceDataServiceImpl(final AccountServicePortType accountService,
      final TcLiferayRoleService tcLiferayRoleService,
      final PortalBaseConfiguration portalBaseConfiguration,
      final TcLiferayUserService tcLiferayUserService) {
    this.accountService = accountService;
    this.tcLiferayRoleService = tcLiferayRoleService;
    this.portalBaseConfiguration = portalBaseConfiguration;
    this.tcLiferayUserService = tcLiferayUserService;
  }

  @Override
  public boolean isUserServicepartner(long userId) {
    boolean isSP = tcLiferayRoleService.isUserInRole(userId, portalBaseConfiguration.getRoleNameServicePartner());
    boolean isSPMandant = tcLiferayRoleService.isUserInRole(userId, portalBaseConfiguration.getRoleNameServicePartnerMandant());
    return (isSP || isSPMandant);
  }

  @Override
  @Nonnull
  public String getUserNumberByUserId(long userId) {
    return tcLiferayUserService.getUserNumberByUserId(userId);
  }

  @Override
  public GetMasterDataResponse getReferenceData(String userNumber) {
    GetMasterData getMasterData = new GetMasterData();
    getMasterData.setUserNumber(userNumber);

    try {
      return accountService.getMasterData(getMasterData);
    } catch (Exception e) {
      LOGGER.error("Service is not available!", e);
      throw new TcPortalException("Service is not available!", e);
    }
  }

  /**
   *
   * @param userNumber
   * @return
   */

  @Override
  @Nonnull
  public GetMasterDataSubSetResponse getMasterDataSubSet(@Nonnull String userNumber) {
    checkNotNull(userNumber, "userNumber cannot be null");

    GetMasterDataSubSet getMasterData = new GetMasterDataSubSet();
    getMasterData.setUserNumber(userNumber);

    try {
      return accountService.getMasterDataSubSet(getMasterData);
    } catch (FaultMessage e) {
      LOGGER.error("Service is not available!", e);
      throw new TcPortalException("Service is not available!", e);
    }
  }


}

Aucun commentaire:

Enregistrer un commentaire