summaryrefslogtreecommitdiff
diff options
authorMichael Vogt <mvo@ubuntu.com>2023-05-23 21:48:03 +0200
committerMichael Vogt <michael.vogt@gmail.com>2023-07-10 10:52:47 +0200
commit18f82a8a71099f4da4ed1296f871ef9d5f467ed8 (patch)
tree6518db7dcec416a3981d599eb8fe3658d149039b
parentcb63090852696758365932a6d63261fa076f74e5 (diff)
advisor: add a small unittest
Now that we have the codecov metrics back I noticed that the advisor/backend.go code has no tests for the rollback functionality. This commit adds a simple testcase.
-rw-r--r--advisor/backend_test.go76
1 files changed, 76 insertions, 0 deletions
diff --git a/advisor/backend_test.go b/advisor/backend_test.go
new file mode 100644
index 0000000000..25b35ea6d6
--- /dev/null
+++ b/advisor/backend_test.go
@@ -0,0 +1,76 @@
+// -*- Mode: Go; indent-tabs-mode: t -*-
+
+/*
+ * Copyright (C) 2023 Canonical Ltd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package advisor_test
+
+import (
+ "os"
+
+ . "gopkg.in/check.v1"
+
+ "github.com/snapcore/snapd/advisor"
+ "github.com/snapcore/snapd/dirs"
+)
+
+type backendSuite struct{}
+
+var _ = Suite(&backendSuite{})
+
+func (s *backendSuite) SetUpTest(c *C) {
+ dirs.SetRootDir(c.MkDir())
+ c.Assert(os.MkdirAll(dirs.SnapCacheDir, 0755), IsNil)
+
+ // create an empty DB
+ db, err := advisor.Create()
+ c.Assert(err, IsNil)
+ err = db.Commit()
+ c.Assert(err, IsNil)
+}
+
+func dumpCommands(c *C) map[string]string {
+ cmds, err := advisor.DumpCommands()
+ c.Assert(err, IsNil)
+ return cmds
+}
+
+func (s *backendSuite) TestCreateCommit(c *C) {
+ expectedCommands := map[string]string{
+ "meh": `[{"snap":"foo","version":"1.0"}]`,
+ "foo": `[{"snap":"foo","version":"1.0"}]`,
+ }
+
+ db, err := advisor.Create()
+ c.Assert(err, IsNil)
+ c.Assert(db.AddSnap("foo", "1.0", "foo summary", []string{"foo", "meh"}), IsNil)
+ // adding does not change the DB
+ c.Check(dumpCommands(c), DeepEquals, map[string]string{})
+ // but commit does
+ c.Assert(db.Commit(), IsNil)
+ c.Check(dumpCommands(c), DeepEquals, expectedCommands)
+}
+
+func (s *backendSuite) TestCreateRollback(c *C) {
+ db, err := advisor.Create()
+ c.Assert(err, IsNil)
+ // adding does not change the DB
+ c.Assert(db.AddSnap("foo", "1.0", "foo summary", []string{"foo", "meh"}), IsNil)
+ // and rollback ensures any change is reverted
+ c.Assert(db.Rollback(), IsNil)
+ c.Check(dumpCommands(c), DeepEquals, map[string]string{})
+}