From 06261d32ba7d8e93206788816654cff35a686547 Mon Sep 17 00:00:00 2001 From: Harrison Healey Date: Thu, 28 Feb 2019 10:32:52 -0500 Subject: [PATCH] MM-14082 Don't print warnings when saving duplicate metadata (#10376) * MM-14082 Don't print warnings when saving duplicate metadata * Fix order of arguments passed to assert.Equal --- store/sqlstore/link_metadata_store.go | 2 +- store/storetest/link_metadata_store.go | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/store/sqlstore/link_metadata_store.go b/store/sqlstore/link_metadata_store.go index dcc77c664f..c9f2487d00 100644 --- a/store/sqlstore/link_metadata_store.go +++ b/store/sqlstore/link_metadata_store.go @@ -45,7 +45,7 @@ func (s SqlLinkMetadataStore) Save(metadata *model.LinkMetadata) store.StoreChan metadata.PreSave() err := s.GetMaster().Insert(metadata) - if err != nil { + if err != nil && !IsUniqueConstraintError(err, []string{"PRIMARY", "linkmetadata_pkey"}) { result.Err = model.NewAppError("SqlLinkMetadataStore.Save", "store.sql_link_metadata.save.app_error", nil, "url="+metadata.URL+", "+err.Error(), http.StatusInternalServerError) return } diff --git a/store/storetest/link_metadata_store.go b/store/storetest/link_metadata_store.go index 2521f294a4..354d315998 100644 --- a/store/storetest/link_metadata_store.go +++ b/store/storetest/link_metadata_store.go @@ -98,7 +98,7 @@ func testLinkMetadataStoreSave(t *testing.T, ss store.Store) { assert.Equal(t, *metadata, *result.Data.(*model.LinkMetadata)) }) - t.Run("should fail to save with duplicate URL and timestamp", func(t *testing.T) { + t.Run("should not save with duplicate URL and timestamp, but should not return an error", func(t *testing.T) { metadata := &model.LinkMetadata{ URL: "http://example.com", Timestamp: getNextLinkMetadataTimestamp(), @@ -108,10 +108,18 @@ func testLinkMetadataStoreSave(t *testing.T, ss store.Store) { result := <-ss.LinkMetadata().Save(metadata) require.Nil(t, result.Err) + assert.Equal(t, &model.PostImage{}, result.Data.(*model.LinkMetadata).Data) + + metadata.Data = &model.PostImage{Height: 10, Width: 20} result = <-ss.LinkMetadata().Save(metadata) + require.Nil(t, result.Err) + assert.Equal(t, result.Data.(*model.LinkMetadata).Data, &model.PostImage{Height: 10, Width: 20}) - assert.NotNil(t, result.Err) + // Should return the original result, not the duplicate one + result = <-ss.LinkMetadata().Get(metadata.URL, metadata.Timestamp) + require.Nil(t, result.Err) + assert.Equal(t, &model.PostImage{}, result.Data.(*model.LinkMetadata).Data) }) }