[gnote] Fix creating note from template



commit f1ef128d335d690d8cf9a5acf466fd58790be558
Author: Aurimas Černius <aurisc4 gmail com>
Date:   Mon Apr 13 17:30:21 2020 +0300

    Fix creating note from template

 src/notemanagerbase.cpp             |  5 +++++
 src/test/unit/notemanagerutests.cpp | 45 +++++++++++++++++++++++++++++++++++++
 2 files changed, 50 insertions(+)
---
diff --git a/src/notemanagerbase.cpp b/src/notemanagerbase.cpp
index 82f08d11..772e1270 100644
--- a/src/notemanagerbase.cpp
+++ b/src/notemanagerbase.cpp
@@ -305,6 +305,11 @@ NoteBase::Ptr NoteManagerBase::create_note(Glib::ustring title, Glib::ustring bo
 
   Glib::ustring content;
   if(body.empty()) {
+    auto template_note = find_template_note();
+    if(template_note) {
+      return create_note_from_template(title, template_note, guid);
+    }
+
     // Use a simple "Describe..." body and highlight
     // it so it can be easily overwritten
     content = get_note_template_content(title);
diff --git a/src/test/unit/notemanagerutests.cpp b/src/test/unit/notemanagerutests.cpp
index 5e759b0c..2d671925 100644
--- a/src/test/unit/notemanagerutests.cpp
+++ b/src/test/unit/notemanagerutests.cpp
@@ -43,6 +43,13 @@ SUITE(NoteManager)
       char *notes_dir = g_mkdtemp(notes_dir_tmpl);
       return notes_dir;
     }
+
+    gnote::NoteBase::Ptr create_template_note()
+    {
+      auto templ = manager.get_or_create_template_note();
+      templ->set_xml_content(Glib::ustring::compose("<note-content><note-title>%1</note-title>\n\ntest 
template content</note-content>", templ->get_title()));
+      return templ;
+    }
   };
 
 
@@ -84,6 +91,14 @@ SUITE(NoteManager)
     CHECK_EQUAL(2, manager.get_notes().size());
   }
 
+  TEST_FIXTURE(Fixture, create_no_args_from_template)
+  {
+    auto templ = create_template_note();
+    auto note = manager.create();
+    CHECK_EQUAL("New Note 1", note->get_title());
+    CHECK(note->data().text().find("test template content") != Glib::ustring::npos);
+  }
+
   TEST_FIXTURE(Fixture, create_with_title)
   {
     auto note = manager.create("test");
@@ -92,6 +107,15 @@ SUITE(NoteManager)
     CHECK_EQUAL(1, manager.get_notes().size());
   }
 
+  TEST_FIXTURE(Fixture, create_with_title_from_template)
+  {
+    auto templ = create_template_note();
+    auto note = manager.create("test");
+    CHECK_EQUAL("test", note->get_title());
+    CHECK(note->data().text().find("test template content") != Glib::ustring::npos);
+    CHECK_EQUAL(2, manager.get_notes().size());
+  }
+
   TEST_FIXTURE(Fixture, create_with_text_content)
   {
     auto note = manager.create("test\ntest content");
@@ -100,6 +124,15 @@ SUITE(NoteManager)
     CHECK_EQUAL(1, manager.get_notes().size());
   }
 
+  TEST_FIXTURE(Fixture, create_with_text_content_having_template)
+  {
+    auto templ = create_template_note();
+    auto note = manager.create("test\ntest content");
+    CHECK_EQUAL("test", note->get_title());
+    CHECK(note->data().text().find("test content") != Glib::ustring::npos);
+    CHECK_EQUAL(2, manager.get_notes().size());
+  }
+
   TEST_FIXTURE(Fixture, create_and_find)
   {
     manager.create();
@@ -131,6 +164,18 @@ SUITE(NoteManager)
     CHECK_EQUAL(note, other);
   }
 
+  TEST_FIXTURE(Fixture, create_with_guid_from_template)
+  {
+    auto templ = create_template_note();
+    auto note = manager.create_with_guid("test", "93b3f3ef-9eea-4cdc-9f78-76af1629987a");
+    CHECK_EQUAL("test", note->get_title());
+    CHECK(note->data().text().find("test template content") != Glib::ustring::npos);
+    CHECK_EQUAL("93b3f3ef-9eea-4cdc-9f78-76af1629987a", note->id());
+    CHECK_EQUAL("note://gnote/93b3f3ef-9eea-4cdc-9f78-76af1629987a", note->uri());
+    CHECK_EQUAL(2, manager.get_notes().size());
+    auto other = manager.find_by_uri("note://gnote/93b3f3ef-9eea-4cdc-9f78-76af1629987a");
+    CHECK_EQUAL(note, other);
+  }
 
   TEST_FIXTURE(Fixture, create_with_guid_multiline_title)
   {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]