github.com/enbility/spine-go@v0.7.0/model/timetable_additions_test.go (about)

     1  package model
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/enbility/spine-go/util"
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestTimeTableListDataType_Update(t *testing.T) {
    11  	sut := TimeTableListDataType{
    12  		TimeTableData: []TimeTableDataType{
    13  			{
    14  				TimeTableId: util.Ptr(TimeTableIdType(0)),
    15  				RecurrenceInformation: &RecurrenceInformationType{
    16  					ExecutionCount: util.Ptr(uint(1)),
    17  				},
    18  			},
    19  			{
    20  				TimeTableId: util.Ptr(TimeTableIdType(1)),
    21  				RecurrenceInformation: &RecurrenceInformationType{
    22  					ExecutionCount: util.Ptr(uint(1)),
    23  				},
    24  			},
    25  		},
    26  	}
    27  
    28  	newData := TimeTableListDataType{
    29  		TimeTableData: []TimeTableDataType{
    30  			{
    31  				TimeTableId: util.Ptr(TimeTableIdType(1)),
    32  				RecurrenceInformation: &RecurrenceInformationType{
    33  					ExecutionCount: util.Ptr(uint(10)),
    34  				},
    35  			},
    36  		},
    37  	}
    38  
    39  	// Act
    40  	_, success := sut.UpdateList(false, true, &newData, NewFilterTypePartial(), nil)
    41  	assert.True(t, success)
    42  
    43  	data := sut.TimeTableData
    44  	// check the non changing items
    45  	assert.Equal(t, 2, len(data))
    46  	item1 := data[0]
    47  	assert.Equal(t, 0, int(*item1.TimeTableId))
    48  	assert.Equal(t, 1, int(*item1.RecurrenceInformation.ExecutionCount))
    49  	// check properties of updated item
    50  	item2 := data[1]
    51  	assert.Equal(t, 1, int(*item2.TimeTableId))
    52  	assert.Equal(t, 10, int(*item2.RecurrenceInformation.ExecutionCount))
    53  }
    54  
    55  func TestTimeTableConstraintsListDataType_Update(t *testing.T) {
    56  	sut := TimeTableConstraintsListDataType{
    57  		TimeTableConstraintsData: []TimeTableConstraintsDataType{
    58  			{
    59  				TimeTableId:  util.Ptr(TimeTableIdType(0)),
    60  				SlotCountMin: util.Ptr(TimeSlotCountType(1)),
    61  			},
    62  			{
    63  				TimeTableId:  util.Ptr(TimeTableIdType(1)),
    64  				SlotCountMin: util.Ptr(TimeSlotCountType(1)),
    65  			},
    66  		},
    67  	}
    68  
    69  	newData := TimeTableConstraintsListDataType{
    70  		TimeTableConstraintsData: []TimeTableConstraintsDataType{
    71  			{
    72  				TimeTableId:  util.Ptr(TimeTableIdType(1)),
    73  				SlotCountMin: util.Ptr(TimeSlotCountType(10)),
    74  			},
    75  		},
    76  	}
    77  
    78  	// Act
    79  	_, success := sut.UpdateList(false, true, &newData, NewFilterTypePartial(), nil)
    80  	assert.True(t, success)
    81  
    82  	data := sut.TimeTableConstraintsData
    83  	// check the non changing items
    84  	assert.Equal(t, 2, len(data))
    85  	item1 := data[0]
    86  	assert.Equal(t, 0, int(*item1.TimeTableId))
    87  	assert.Equal(t, 1, int(*item1.SlotCountMin))
    88  	// check properties of updated item
    89  	item2 := data[1]
    90  	assert.Equal(t, 1, int(*item2.TimeTableId))
    91  	assert.Equal(t, 10, int(*item2.SlotCountMin))
    92  }
    93  
    94  func TestTimeTableDescriptionListDataType_Update(t *testing.T) {
    95  	sut := TimeTableDescriptionListDataType{
    96  		TimeTableDescriptionData: []TimeTableDescriptionDataType{
    97  			{
    98  				TimeTableId: util.Ptr(TimeTableIdType(0)),
    99  				Description: util.Ptr(DescriptionType("old")),
   100  			},
   101  			{
   102  				TimeTableId: util.Ptr(TimeTableIdType(1)),
   103  				Description: util.Ptr(DescriptionType("old")),
   104  			},
   105  		},
   106  	}
   107  
   108  	newData := TimeTableDescriptionListDataType{
   109  		TimeTableDescriptionData: []TimeTableDescriptionDataType{
   110  			{
   111  				TimeTableId: util.Ptr(TimeTableIdType(1)),
   112  				Description: util.Ptr(DescriptionType("new")),
   113  			},
   114  		},
   115  	}
   116  
   117  	// Act
   118  	_, success := sut.UpdateList(false, true, &newData, NewFilterTypePartial(), nil)
   119  	assert.True(t, success)
   120  
   121  	data := sut.TimeTableDescriptionData
   122  	// check the non changing items
   123  	assert.Equal(t, 2, len(data))
   124  	item1 := data[0]
   125  	assert.Equal(t, 0, int(*item1.TimeTableId))
   126  	assert.Equal(t, "old", string(*item1.Description))
   127  	// check properties of updated item
   128  	item2 := data[1]
   129  	assert.Equal(t, 1, int(*item2.TimeTableId))
   130  	assert.Equal(t, "new", string(*item2.Description))
   131  }