github.com/wawandco/oxpecker@v1.5.7-0.20210910201653-5958d4afdd89/lifecycle/dev/command_test.go (about)

     1  package dev_test
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/wawandco/oxpecker/lifecycle/dev"
     9  	"github.com/wawandco/oxpecker/plugins"
    10  )
    11  
    12  type (
    13  	plugin struct {
    14  		ran bool
    15  	}
    16  
    17  	developer struct {
    18  		plugin
    19  
    20  		ranAt time.Time
    21  	}
    22  
    23  	beforeDeveloper struct {
    24  		plugin
    25  
    26  		ranAt time.Time
    27  	}
    28  )
    29  
    30  func (pl plugin) Name() string {
    31  	return "aaa"
    32  }
    33  
    34  func (d *developer) Develop(context.Context, string) error {
    35  	d.ran = true
    36  	d.ranAt = time.Now()
    37  	return nil
    38  }
    39  
    40  func (d *beforeDeveloper) BeforeDevelop(context.Context, string) error {
    41  	d.ranAt = time.Now()
    42  	d.ran = true
    43  	time.Sleep(10 * time.Millisecond)
    44  
    45  	return nil
    46  }
    47  
    48  func TestCommand(t *testing.T) {
    49  
    50  	plb := plugin{}
    51  
    52  	pls := []plugins.Plugin{
    53  		&plb,
    54  		&developer{},
    55  		&beforeDeveloper{},
    56  	}
    57  
    58  	c := dev.Command{}
    59  	c.Receive(pls)
    60  
    61  	err := c.Run(context.Background(), "", []string{})
    62  	if err != nil {
    63  		t.Errorf("error should be nil, got %v", err)
    64  	}
    65  
    66  	if plb.ran == true {
    67  		t.Errorf("plugin should not have ran in true")
    68  	}
    69  
    70  	if pls[1].(*developer).ran == false {
    71  		t.Errorf("developer plugin should run")
    72  	}
    73  
    74  	if pls[2].(*beforeDeveloper).ran == false {
    75  		t.Errorf("beforeDeveloper plugin should run")
    76  	}
    77  
    78  	if pls[2].(*beforeDeveloper).ranAt.After(pls[1].(*developer).ranAt) {
    79  		t.Errorf("beforeDeveloper plugin should run before developer plugin")
    80  	}
    81  }