Skip to content

Commit

Permalink
a lesson in pointers
Browse files Browse the repository at this point in the history
  • Loading branch information
yolandeleungFT committed Oct 18, 2017
1 parent 3d238a4 commit e24b217
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 20 deletions.
2 changes: 1 addition & 1 deletion resources/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ func (h *Handler) processAggregateConceptModel(ctx context.Context, uuid string,
}

payload, err := service.ConvertAggregateConceptToESConceptModel(concept, conceptType, transactionID)
return concept, &payload, err
return concept, payload, err
}

func (h *Handler) ReadData(writer http.ResponseWriter, request *http.Request) {
Expand Down
4 changes: 2 additions & 2 deletions resources/handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -400,11 +400,11 @@ func TestProcessConceptModelWithoutTransactionID(t *testing.T) {
_, payload, err := h.processConceptModel(context.Background(), testUUID, "genres", testBody)
assert.NoError(t, err)
assert.NotNil(t, payload)
assert.NotEmpty(t, payload.(service.EsConceptModel).PublishReference)
assert.NotEmpty(t, payload.(*service.EsConceptModel).PublishReference)

assert.Equal(t, log.WarnLevel, hook.LastEntry().Level)
assert.Equal(t, "Transaction ID not found to process concept model. Generated new transaction ID", hook.LastEntry().Message)
assert.Equal(t, hook.LastEntry().Data[tid.TransactionIDKey], payload.(service.EsConceptModel).PublishReference)
assert.Equal(t, hook.LastEntry().Data[tid.TransactionIDKey], payload.(*service.EsConceptModel).PublishReference)
}

type dummyEsService struct {
Expand Down
12 changes: 4 additions & 8 deletions service/es_model_populator.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,33 +26,29 @@ func ConvertConceptToESConceptModel(concept ConceptModel, conceptType string, pu
esModel,
"false",
}
return *esPersonModel, nil
return esPersonModel, nil
default:
return esModel, nil
}
}

func ConvertAggregateConceptToESConceptModel(concept AggregateConceptModel, conceptType string, publishRef string) (interface{}, error) {
esModel := newESConceptModel(concept.PrefUUID, conceptType, concept.DirectType, concept.Aliases, concept.GetAuthorities(), concept.PrefLabel, publishRef)

switch conceptType {
case PERSON:
isFTAuthor := strconv.FormatBool(concept.IsAuthor)
if isFTAuthor == "" {
isFTAuthor = "false"
}
esPersonModel := &EsPersonConceptModel{
esModel,
isFTAuthor,
}
return *esPersonModel, nil
return esPersonModel, nil
default:
return esModel, nil
}
}

func newESConceptModel(uuid string, conceptType string, directType string, aliases []string, authorities []string, prefLabel string, publishRef string) EsConceptModel {
esModel := EsConceptModel{}
func newESConceptModel(uuid string, conceptType string, directType string, aliases []string, authorities []string, prefLabel string, publishRef string) *EsConceptModel {
esModel := &EsConceptModel{}
esModel.ApiUrl = mapper.APIURL(uuid, []string{directType}, "")
esModel.Id = mapper.IDURL(uuid)
esModel.Types = mapper.TypeURIs(getTypes(directType))
Expand Down
2 changes: 1 addition & 1 deletion service/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ type EsConceptModel struct {
}

type EsPersonConceptModel struct {
EsConceptModel
*EsConceptModel
IsFTAuthor string `json:"isFTAuthor"`
}

Expand Down
16 changes: 8 additions & 8 deletions service/model_conversion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ func TestConvertToESConceptModel(t *testing.T) {
testTID := tid.NewTransactionID()

actual, _ := ConvertConceptToESConceptModel(testModel.conceptModel, "organisations", testTID)
esModel := actual.(EsConceptModel)
esModel := actual.(*EsConceptModel)
assert.Equal(t, testModel.esConceptModel.Id, esModel.Id, fmt.Sprintf("Expected Id %s differs from actual id %s ", testModel.esConceptModel.Id, esModel.Id))
assert.Equal(t, testModel.esConceptModel.ApiUrl, esModel.ApiUrl, fmt.Sprintf("Expected ApiUrl %s differs from actual ApiUrl %s ", testModel.esConceptModel.ApiUrl, esModel.ApiUrl))
assert.Equal(t, testModel.esConceptModel.DirectType, esModel.DirectType, fmt.Sprintf("Expected DirectType %s differs from actual DirectType %s ", testModel.esConceptModel.DirectType, esModel.DirectType))
Expand Down Expand Up @@ -209,7 +209,7 @@ func TestConvertAggregateConceptToESConceptModel(t *testing.T) {
testTID := tid.NewTransactionID()

actual, _ := ConvertAggregateConceptToESConceptModel(testModel.conceptModel, "organisations", testTID)
esModel := actual.(EsConceptModel)
esModel := actual.(*EsConceptModel)
assert.Equal(t, testModel.esConceptModel.Id, esModel.Id, fmt.Sprintf("Expected Id %s differs from actual id %s ", testModel.esConceptModel.Id, esModel.Id))
assert.Equal(t, testModel.esConceptModel.ApiUrl, esModel.ApiUrl, fmt.Sprintf("Expected ApiUrl %s differs from actual ApiUrl %s ", testModel.esConceptModel.ApiUrl, esModel.ApiUrl))
assert.Equal(t, testModel.esConceptModel.DirectType, esModel.DirectType, fmt.Sprintf("Expected DirectType %s differs from actual DirectType %s ", testModel.esConceptModel.DirectType, esModel.DirectType))
Expand Down Expand Up @@ -296,7 +296,7 @@ func TestConvertPersonToESConceptModel(t *testing.T) {
Aliases: []string{},
},
EsPersonConceptModel{
EsConceptModel: EsConceptModel{
EsConceptModel: &EsConceptModel{
Id: "http://api.ft.com/things/0f07d468-fc37-3c44-bf19-a81f2aae9f36",
ApiUrl: "http://api.ft.com/people/0f07d468-fc37-3c44-bf19-a81f2aae9f36",
PrefLabel: "Martin Wolf",
Expand All @@ -317,7 +317,7 @@ func TestConvertPersonToESConceptModel(t *testing.T) {
testTID := tid.NewTransactionID()

actual, _ := ConvertConceptToESConceptModel(testModel.conceptModel, "people", testTID)
esModel := actual.(EsPersonConceptModel)
esModel := actual.(*EsPersonConceptModel)
assert.Equal(testModel.esPersonConceptModel.Id, esModel.Id, fmt.Sprintf("Expected Id %s differs from actual id %s ", testModel.esPersonConceptModel.Id, esModel.Id))
assert.Equal(testModel.esPersonConceptModel.ApiUrl, esModel.ApiUrl, fmt.Sprintf("Expected ApiUrl %s differs from actual ApiUrl %s ", testModel.esPersonConceptModel.ApiUrl, esModel.ApiUrl))
assert.Equal(testModel.esPersonConceptModel.DirectType, esModel.DirectType, fmt.Sprintf("Expected DirectType %s differs from actual DirectType %s ", testModel.esPersonConceptModel.DirectType, esModel.DirectType))
Expand Down Expand Up @@ -348,7 +348,7 @@ func TestConvertPersonToAggregateConceptModel(t *testing.T) {
Aliases: []string{},
},
EsPersonConceptModel{
EsConceptModel: EsConceptModel{
EsConceptModel: &EsConceptModel{
Id: "http://api.ft.com/things/0f07d468-fc37-3c44-bf19-a81f2aae9f36",
ApiUrl: "http://api.ft.com/people/0f07d468-fc37-3c44-bf19-a81f2aae9f36",
PrefLabel: "Martin Wolf",
Expand All @@ -372,7 +372,7 @@ func TestConvertPersonToAggregateConceptModel(t *testing.T) {
IsAuthor: true,
},
EsPersonConceptModel{
EsConceptModel: EsConceptModel{
EsConceptModel: &EsConceptModel{
Id: "http://api.ft.com/things/0f07d468-fc37-3c44-bf19-a81f2aae9f36",
ApiUrl: "http://api.ft.com/people/0f07d468-fc37-3c44-bf19-a81f2aae9f36",
PrefLabel: "Martin Wolf",
Expand All @@ -396,7 +396,7 @@ func TestConvertPersonToAggregateConceptModel(t *testing.T) {
IsAuthor: false,
},
EsPersonConceptModel{
EsConceptModel: EsConceptModel{
EsConceptModel: &EsConceptModel{
Id: "http://api.ft.com/things/0f07d468-fc37-3c44-bf19-a81f2aae9f36",
ApiUrl: "http://api.ft.com/people/0f07d468-fc37-3c44-bf19-a81f2aae9f36",
PrefLabel: "Martin Wolf",
Expand All @@ -417,7 +417,7 @@ func TestConvertPersonToAggregateConceptModel(t *testing.T) {
testTID := tid.NewTransactionID()

actual, _ := ConvertAggregateConceptToESConceptModel(testModel.aggregateConceptModel, "people", testTID)
esModel := actual.(EsPersonConceptModel)
esModel := actual.(*EsPersonConceptModel)
assert.Equal(testModel.esPersonConceptModel.Id, esModel.Id, fmt.Sprintf("Expected Id %s differs from actual id %s ", testModel.esPersonConceptModel.Id, esModel.Id))
assert.Equal(testModel.esPersonConceptModel.ApiUrl, esModel.ApiUrl, fmt.Sprintf("Expected ApiUrl %s differs from actual ApiUrl %s ", testModel.esPersonConceptModel.ApiUrl, esModel.ApiUrl))
assert.Equal(testModel.esPersonConceptModel.DirectType, esModel.DirectType, fmt.Sprintf("Expected DirectType %s differs from actual DirectType %s ", testModel.esPersonConceptModel.DirectType, esModel.DirectType))
Expand Down

0 comments on commit e24b217

Please sign in to comment.