abapGit/src/zcl_abapgit_repo.clas.testclasses.abap
pokrakam 00e01c7232
Extend unit tests to handle edge cases (#3952)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2020-09-29 07:46:25 +02:00

174 lines
4.4 KiB
ABAP

*"* use this source file for your ABAP unit test classes
CLASS ltcl_find_remote_dot_abapgit DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
CONSTANTS: c_dummy_repo_key TYPE zif_abapgit_persistence=>ty_value VALUE '000000001'.
METHODS:
positive FOR TESTING RAISING cx_static_check,
bigger_repo_needs_dot_abapgit FOR TESTING RAISING cx_static_check,
new_repo_needs_no_dot_abapgit FOR TESTING RAISING cx_static_check,
given_any_repo,
when_find_remote_dot_abapgit,
then_dot_abapgit_is_bound,
then_no_exception_is_raised,
given_dot_abapgit_file,
given_no_dot_abapgit_file,
then_dot_abapgit_is_not_bound,
then_exception_is_raised,
given_repo_has_files
IMPORTING
iv_number_of_files TYPE i.
DATA:
mo_repo TYPE REF TO zcl_abapgit_repo,
mx_error TYPE REF TO zcx_abapgit_exception,
mo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit.
ENDCLASS.
CLASS ltcl_find_remote_dot_abapgit IMPLEMENTATION.
METHOD positive.
given_any_repo( ).
given_dot_abapgit_file( ).
when_find_remote_dot_abapgit( ).
then_dot_abapgit_is_bound( ).
then_no_exception_is_raised( ).
ENDMETHOD.
METHOD new_repo_needs_no_dot_abapgit.
given_any_repo( ).
given_repo_has_files( zcl_abapgit_repo=>c_new_repo_size ).
given_no_dot_abapgit_file( ).
when_find_remote_dot_abapgit( ).
then_dot_abapgit_is_not_bound( ).
then_no_exception_is_raised( ).
ENDMETHOD.
METHOD bigger_repo_needs_dot_abapgit.
given_any_repo( ).
given_repo_has_files( zcl_abapgit_repo=>c_new_repo_size + 1 ).
given_no_dot_abapgit_file( ).
when_find_remote_dot_abapgit( ).
then_dot_abapgit_is_not_bound( ).
then_exception_is_raised( ).
ENDMETHOD.
METHOD given_any_repo.
DATA: ls_data TYPE zif_abapgit_persistence=>ty_repo.
ls_data-key = c_dummy_repo_key.
" online/offline doesn't matter...
CREATE OBJECT mo_repo TYPE zcl_abapgit_repo_offline
EXPORTING
is_data = ls_data.
ENDMETHOD.
METHOD given_dot_abapgit_file.
DATA:
lt_files TYPE zif_abapgit_definitions=>ty_files_tt,
ls_file LIKE LINE OF lt_files.
ls_file-path = zif_abapgit_definitions=>c_root_dir.
ls_file-filename = zif_abapgit_definitions=>c_dot_abapgit.
ls_file-data = zcl_abapgit_convert=>string_to_xstring(
|<?xml version="1.0" encoding="utf-8"?>|
&& |<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">|
&& | <asx:values>|
&& | <DATA>|
&& | <MASTER_LANGUAGE>E</MASTER_LANGUAGE>|
&& | <STARTING_FOLDER>/src/</STARTING_FOLDER>|
&& | <FOLDER_LOGIC>PREFIX</FOLDER_LOGIC>|
&& | <IGNORE>|
&& | <item>/.gitignore</item>|
&& | <item>/LICENSE</item>|
&& | <item>/README.md</item>|
&& | <item>/package.json</item>|
&& | <item>/.travis.yml</item>|
&& | </IGNORE>|
&& | </DATA>|
&& | </asx:values>|
&& |</asx:abap>| ).
INSERT ls_file INTO TABLE lt_files.
mo_repo->set_files_remote( lt_files ).
ENDMETHOD.
METHOD given_no_dot_abapgit_file.
ENDMETHOD.
METHOD when_find_remote_dot_abapgit.
TRY.
mo_dot_abapgit = mo_repo->find_remote_dot_abapgit( ).
CATCH zcx_abapgit_exception INTO mx_error.
ENDTRY.
ENDMETHOD.
METHOD then_dot_abapgit_is_bound.
cl_abap_unit_assert=>assert_bound( mo_dot_abapgit ).
ENDMETHOD.
METHOD then_no_exception_is_raised.
cl_abap_unit_assert=>assert_not_bound( mx_error ).
ENDMETHOD.
METHOD then_dot_abapgit_is_not_bound.
cl_abap_unit_assert=>assert_not_bound( mo_dot_abapgit ).
ENDMETHOD.
METHOD then_exception_is_raised.
cl_abap_unit_assert=>assert_bound( mx_error ).
ENDMETHOD.
METHOD given_repo_has_files.
DATA: lt_files TYPE zif_abapgit_definitions=>ty_files_tt,
ls_file LIKE LINE OF lt_files.
ls_file-path = zif_abapgit_definitions=>c_root_dir.
DO iv_number_of_files TIMES.
ls_file-filename = |File_{ sy-index }|.
INSERT ls_file INTO TABLE lt_files.
ENDDO.
mo_repo->set_files_remote( lt_files ).
ENDMETHOD.
ENDCLASS.