github.com/leg100/ots@v0.0.7-0.20210919080622-034055ced4bd/sqlite/organization_test.go (about)

     1  package sqlite
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/leg100/go-tfe"
     7  	"github.com/leg100/ots"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestOrganization(t *testing.T) {
    12  	db, err := New(":memory:")
    13  	require.NoError(t, err)
    14  
    15  	svc := NewOrganizationDB(db)
    16  
    17  	// Create
    18  
    19  	org, err := svc.Create(&ots.Organization{
    20  		Name:  "automatize",
    21  		ID:    "org-123",
    22  		Email: "sysadmin@automatize.co.uk",
    23  	})
    24  	require.NoError(t, err)
    25  
    26  	require.Equal(t, uint(1), org.Model.ID)
    27  	require.Equal(t, "automatize", org.Name)
    28  	require.Equal(t, "sysadmin@automatize.co.uk", org.Email)
    29  
    30  	// Create second org
    31  
    32  	org, err = svc.Create(&ots.Organization{
    33  		Name:  "second",
    34  		ID:    "org-456",
    35  		Email: "sysadmin@second.org",
    36  	})
    37  	require.NoError(t, err)
    38  
    39  	require.Equal(t, uint(2), org.Model.ID)
    40  	require.Equal(t, "second", org.Name)
    41  	require.Equal(t, "sysadmin@second.org", org.Email)
    42  
    43  	// Update
    44  
    45  	org, err = svc.Update("automatize", func(org *ots.Organization) error {
    46  		org.Email = "newguy@automatize.co.uk"
    47  		return nil
    48  	})
    49  	require.NoError(t, err)
    50  
    51  	require.Equal(t, "newguy@automatize.co.uk", org.Email)
    52  
    53  	// Get
    54  
    55  	org, err = svc.Get("automatize")
    56  	require.NoError(t, err)
    57  
    58  	require.Equal(t, "newguy@automatize.co.uk", org.Email)
    59  
    60  	// List
    61  
    62  	orgs, err := svc.List(tfe.OrganizationListOptions{})
    63  	require.NoError(t, err)
    64  
    65  	require.Equal(t, 2, len(orgs.Items))
    66  
    67  	// List with pagination
    68  
    69  	orgs, err = svc.List(tfe.OrganizationListOptions{ListOptions: tfe.ListOptions{PageNumber: 1, PageSize: 1}})
    70  	require.NoError(t, err)
    71  
    72  	require.Equal(t, 1, len(orgs.Items))
    73  
    74  	orgs, err = svc.List(tfe.OrganizationListOptions{ListOptions: tfe.ListOptions{PageNumber: 2, PageSize: 1}})
    75  	require.NoError(t, err)
    76  
    77  	require.Equal(t, 1, len(orgs.Items))
    78  
    79  	// Delete
    80  
    81  	require.NoError(t, svc.Delete("automatize"))
    82  }