github.com/ismailbayram/bigpicture@v0.0.0-20231225173155-e4b21f5efcff/internal/browser/java_test.go (about)

     1  package browser
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/ismailbayram/bigpicture/internal/graph"
     6  	"github.com/stretchr/testify/assert"
     7  	"os"
     8  	"testing"
     9  )
    10  
    11  func ChangeDirToJavaProjectRoot() {
    12  	err := os.Chdir("internal/browser/javaproject")
    13  	if err != nil {
    14  		panic(err)
    15  	}
    16  }
    17  
    18  func TestJavaBrowser_GetModuleName(t *testing.T) {
    19  	ChangeDirToJavaProjectRoot()
    20  
    21  	browser := &JavaBrowser{
    22  		ignoredPaths: []string{},
    23  		tree:         nil,
    24  	}
    25  
    26  	moduleName := browser.getModuleName()
    27  	assert.Equal(t, "javaproject", moduleName)
    28  }
    29  
    30  func TestJavaBrowser_clearNonProjectImports(t *testing.T) {
    31  
    32  	browser := &JavaBrowser{
    33  		ignoredPaths: []string{},
    34  		tree:         graph.NewTree("root"),
    35  	}
    36  	browser.tree.Nodes["cars"] = graph.NewNode("cars", "cars", graph.Dir, []string{})
    37  	browser.tree.Nodes["baskets"] = graph.NewNode("baskets", "./baskets", graph.Dir, []string{
    38  		"decimal.py",
    39  		"django/utils/translation.py",
    40  		"cars",
    41  	})
    42  
    43  	browser.clearNonProjectImports()
    44  
    45  	assert.Equal(t, 1, len(browser.tree.Nodes["baskets"].ImportRaw))
    46  	assert.Equal(t, "cars", browser.tree.Nodes["baskets"].ImportRaw[0])
    47  }
    48  
    49  func TestJavaBrowser_ParseFile(t *testing.T) {
    50  	browser := &JavaBrowser{
    51  		ignoredPaths: []string{},
    52  		tree:         nil,
    53  		rootDir:      "/",
    54  		moduleName:   "javaproject",
    55  	}
    56  	dir, err := os.Getwd()
    57  	if err != nil {
    58  		panic(err)
    59  	}
    60  	fmt.Println(dir)
    61  	parentNode := graph.NewNode("javaproject", "./", graph.Dir, nil)
    62  	node := browser.parseFile("src/main/com/shashi/service/impl/TrainServiceImpl.java", parentNode)
    63  	assert.NotNil(t, node)
    64  
    65  	assert.Equal(t, "src/main/com/shashi/service/impl/TrainServiceImpl.java", node.Path)
    66  	assert.Equal(t, "TrainServiceImpl.java", node.PackageName)
    67  	assert.Equal(t, "/com/shashi/beans/TrainBean.java", node.ImportRaw[0])
    68  	assert.Equal(t, "/com/shashi/beans/TrainException.java", node.ImportRaw[1])
    69  	assert.Equal(t, "/com/shashi/constant/ResponseCode.java", node.ImportRaw[2])
    70  	assert.Equal(t, "/com/shashi/service/TrainService.java", node.ImportRaw[3])
    71  	assert.Equal(t, "/com/shashi/utility/DBUtil.java", node.ImportRaw[4])
    72  
    73  	assert.Equal(t, 170, node.LineCount)
    74  
    75  	assert.Equal(t, 6, len(node.Functions))
    76  	funcs := map[string]int{
    77  		"addTrain":                 20,
    78  		"deleteTrainById":          15,
    79  		"updateTrain":              20,
    80  		"getTrainById":             22,
    81  		"getAllTrains":             24,
    82  		"getTrainsBetweenStations": 27,
    83  	}
    84  	for _, f := range node.Functions {
    85  		assert.Equal(t, funcs[f.Name], f.LineCount, f.Name)
    86  	}
    87  }
    88  
    89  func TestJavaBrowser_Browse(t *testing.T) {
    90  	browser := NewBrowser(LangJava, graph.NewTree("root"), []string{}, "/").(*JavaBrowser)
    91  
    92  	browser.Browse(".")
    93  	assert.Equal(t, "javaproject", browser.moduleName)
    94  	assert.NotEqual(t, 1, len(browser.tree.Nodes))
    95  }
    96  
    97  func TestJavaBrowser_browse(t *testing.T) {
    98  	browser := NewBrowser(LangJava, graph.NewTree("root"), []string{}, "/").(*JavaBrowser)
    99  
   100  	browser.browse("src/main/com/shashi/service", browser.tree.Root)
   101  
   102  	assert.Equal(t, 8, len(browser.tree.Nodes))
   103  	assert.Equal(t, browser.tree.Root.LineCount, 493)
   104  }