From 5fc4e0f73d3c7230ab5a11dd23abd75d7ed40d23 Mon Sep 17 00:00:00 2001 From: Katarzyna Gorska Date: Wed, 29 Nov 2017 20:44:59 +0100 Subject: [PATCH] Add SetStatus with test SetStatus changes artifact's status in ArtifactDB. Change-Id: I3d00f1a4dce861220afee367433edb981286c40c Signed-off-by: Katarzyna Gorska --- artifacts/database/database.go | 30 ++++++++++++++++++++++++++++++ artifacts/database/database_test.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/artifacts/database/database.go b/artifacts/database/database.go index b8ba759..7049c9c 100644 --- a/artifacts/database/database.go +++ b/artifacts/database/database.go @@ -179,3 +179,33 @@ func (aDB *ArtifactDB) Select(arg interface{}) (artifacts []ArtifactInfo, err er } return artifacts, nil } + +// getID fetches ID of an artifact with provided path. +func (aDB *ArtifactDB) getID(path ArtifactPath) (int64, error) { + res, err := aDB.dbmap.SelectInt("select ID from artifacts where Path=?", path) + if err != nil { + return 0, err + } + return res, nil +} + +// SetStatus changes artifact's status in ArtifactDB. +func (aDB *ArtifactDB) SetStatus(change ArtifactStatusChange) error { + ai, err := aDB.SelectPath(change.Path) + if err != nil { + return err + } + ar := artifactInfoRecord{ + ArtifactInfo: ai, + } + + id, err := aDB.getID(ar.Path) + if err != nil { + return err + } + ar.ID = id + + ar.Status = change.NewStatus + _, err = aDB.dbmap.Update(&ar) + return err +} diff --git a/artifacts/database/database_test.go b/artifacts/database/database_test.go index ca9df77..5f4dff7 100644 --- a/artifacts/database/database_test.go +++ b/artifacts/database/database_test.go @@ -254,4 +254,32 @@ var _ = Describe("ArtifactDB", func() { Entry("filter is empty", emptyFilter, artifact, aImageReady, aYamlFailed, aTestFailed), ) }) + Describe("SetStatus", func() { + BeforeEach(func() { + for _, a := range testArtifacts { + err := goldenUnicorn.InsertArtifactInfo(&a) + Expect(err).ToNot(HaveOccurred()) + } + }) + DescribeTable("artifact status change", + func(change weles.ArtifactStatusChange, expectedErr error) { + + err := goldenUnicorn.SetStatus(change) + if expectedErr == nil { + Expect(err).ToNot(HaveOccurred()) + + a, err := goldenUnicorn.SelectPath(change.Path) + Expect(err).ToNot(HaveOccurred()) + Expect(a.Status).To(Equal(change.NewStatus)) + } else { + Expect(err).To(Equal(expectedErr)) + a, err := goldenUnicorn.SelectPath(change.Path) + Expect(err).To(HaveOccurred()) + Expect(a).To(Equal(weles.ArtifactInfo{})) + } + }, + Entry("change status of artifact not present in ArtifactDB", weles.ArtifactStatusChange{invalidPath, weles.AM_DOWNLOADING}, sql.ErrNoRows), + Entry("change status of artifact present in ArtifactDB", weles.ArtifactStatusChange{artifact.Path, weles.AM_DOWNLOADING}, nil), + ) + }) }) -- 2.7.4