-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfactory_nested_pointer_slice_test.go
121 lines (99 loc) · 3.73 KB
/
factory_nested_pointer_slice_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// Copyright 2021 Harold Campbell. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package salem_test
import (
"go-salem"
"testing"
"github.com/stretchr/testify/assert"
)
type datastoreCellModel struct {
GUID string
ProjectGUID string
DatastoreGUID string
CellName string // The name of the header
RecordType string // The data type for the record e.g. Date, Number, Text, VarChar, etc
CellOrdIndex int // ordinal index of the cell
}
type columnAggregate struct {
GUID string
Cell datastoreCellModel
DisplayTitle string
AggregateOperation string
}
type datastoreModel struct {
GUID string // Datastore guid
ProjectGUID string
ResourceName string // The raw name of the file
}
type groupByColumn struct {
GUID string // Guid for this record
Cell datastoreCellModel
DisplayTitle string
ColumnAggregates []columnAggregate
}
type filterColumn struct {
GUID string
Cell datastoreCellModel
FilterOrdIndex int // Ordinality of the Filter
}
type filterItem struct {
FilterValue interface{}
IsActive bool
FilterColumnGUID string
}
type dataGroupModel struct {
GUID string // represents the datagroup guid
ProjectGUID string
GroupName string
Datastore *datastoreModel
FilterColumns []*filterColumn
AggregatedColumns []*columnAggregate
GroupByColumns []*groupByColumn
FilterItems []*filterItem // <- Not needed on the client interface
}
type placeHolder struct {
Inside []*groupByColumn
}
func Test_FactoryNestedPointerSlice(t *testing.T) {
mockProjectGUID := "PGUID-101"
mockDataGroupGUID := "DGUID-202"
mockDatastoreGUID := "DSUID-303"
mockFilterColumnsGUID := "FilterValue101"
dc1 := salem.Mock(datastoreCellModel{}).
Ensure("ProjectGUID", mockProjectGUID).
ExecuteToType().([]datastoreCellModel)[0]
mockGroupByColumns := salem.Mock(&groupByColumn{}).
Ensure("Cell", dc1).
Ensure("ColumnAggregates.Cell", dc1).
ExecuteToType().([]*groupByColumn)
assert.Equal(t, dc1, mockGroupByColumns[0].Cell)
assert.Equal(t, dc1, mockGroupByColumns[0].ColumnAggregates[0].Cell)
mockDataGroupModel := salem.Mock(dataGroupModel{}).
Ensure("GUID", mockDataGroupGUID).
EnsureConstraint("GroupName", salem.ConstrainStringLength(1, 39)).
Ensure("ProjectGUID", mockProjectGUID).
Ensure("Datastore.ProjectGUID", mockProjectGUID).
Ensure("Datastore.GUID", mockDatastoreGUID).
Ensure("Datastore.ResourceName", "R101").
Ensure("FilterColumns.GUID", mockFilterColumnsGUID).
Ensure("FilterColumns.Cell", dc1).
Ensure("AggregatedColumns.GUID", "@@@@@").
Ensure("AggregatedColumns.Cell", dc1).
Ensure("GroupByColumns", mockGroupByColumns).
ExecuteToType().([]dataGroupModel)[0]
// // str := utils.PrettyMongoString(mockDataGroupModel)
// // fmt.Printf("mockDataGroupModel: %v\n", str)
assert.Equal(t, mockDataGroupGUID, mockDataGroupModel.GUID)
assert.Equal(t, mockProjectGUID, mockDataGroupModel.ProjectGUID)
assert.Equal(t, mockDatastoreGUID, mockDataGroupModel.Datastore.GUID)
assert.Equal(t, mockProjectGUID, mockDataGroupModel.Datastore.ProjectGUID)
assert.Equal(t, "R101", mockDataGroupModel.Datastore.ResourceName)
assert.Equal(t, mockFilterColumnsGUID, mockDataGroupModel.FilterColumns[0].GUID)
assert.Equal(t, dc1, mockDataGroupModel.FilterColumns[0].Cell)
assert.Equal(t, "@@@@@", mockDataGroupModel.AggregatedColumns[0].GUID)
assert.Equal(t, dc1, mockDataGroupModel.AggregatedColumns[0].Cell)
assert.Equal(t, mockGroupByColumns, mockDataGroupModel.GroupByColumns)
assert.Equal(t, dc1, mockDataGroupModel.GroupByColumns[0].Cell)
assert.Equal(t, dc1, mockDataGroupModel.GroupByColumns[0].ColumnAggregates[0].Cell)
}