Repository: uccser/cs-unplugged

Issue:
Solution provided for programming challenge on normal CSU site is not valid for same challenge on the plugging-it-in site.
We provide a python solution for [this programming challenge](https://csunplugged.org/en/topics/binary-numbers/programming/binary-notes-representing-number/) on the normal CSU site. However if we copy that solution into the IDE for the same question [on the plugging-it-in site](https://cs-unplugged-dev.appspot.com/en/plugging-it-in/binary-numbers/how-binary-digits-work/binary-notes-representing-number/) it isn't a valid solution. We need to decide whether we update the plugging-it-in site or the normal CSU site.

[Here](https://github.com/uccser/cs-unplugged/blob/develop/csunplugged/topics/content/en/binary-numbers/programming-challenges/binary-notes-representing-number/python-solution.md) is the code for the solution we provide.

![image](https://user-images.githubusercontent.com/16066822/91811920-5c80bb00-ec84-11ea-9cd4-b746acf3c78f.png)

We should check the other solutions as well. E.g the other binary notes question has the same error.


Discussion:

Resolving patch:
diff --git a/csunplugged/topics/management/commands/_ProgrammingChallengesLoader.py b/csunplugged/topics/management/commands/_ProgrammingChallengesLoader.py
--- a/csunplugged/topics/management/commands/_ProgrammingChallengesLoader.py
+++ b/csunplugged/topics/management/commands/_ProgrammingChallengesLoader.py
@@ -75,6 +75,14 @@ def load(self):
                 challenge_translations[language]["content"] = content.html_string
                 challenge_translations[language]["name"] = content.title
 
+            testing_examples_translations = self.get_markdown_translations(
+                os.path.join(challenge_slug, "testing-examples.md"),
+                heading_required=True,
+                required=True
+            )
+            for language, content in testing_examples_translations.items():
+                challenge_translations[language]["testing_examples"] = content.html_string
+
             challenge_extra_challenge_file = challenge_structure.get("extra-challenge", None)
             if challenge_extra_challenge_file:
                 extra_challenge_translations = self.get_markdown_translations(
@@ -102,7 +110,10 @@ def load(self):
                 difficulty=difficulty_level
             )
             self.populate_translations(programming_challenge, challenge_translations)
-            self.mark_translation_availability(programming_challenge, required_fields=["name", "content"])
+            self.mark_translation_availability(
+                programming_challenge,
+                required_fields=["name", "content", "testing_examples"]
+            )
 
             programming_challenge.save()
 
diff --git a/csunplugged/topics/models.py b/csunplugged/topics/models.py
--- a/csunplugged/topics/models.py
+++ b/csunplugged/topics/models.py
@@ -207,6 +207,7 @@ class ProgrammingChallenge(TranslatableModel):
     challenge_set_number = models.PositiveSmallIntegerField()
     challenge_number = models.PositiveSmallIntegerField()
     content = models.TextField(default="")
+    testing_examples = models.TextField(default="")
     extra_challenge = models.TextField(default="")
     learning_outcomes = models.ManyToManyField(
         LearningOutcome,


Test patch:
diff --git a/csunplugged/tests/topics/TopicsTestDataGenerator.py b/csunplugged/tests/topics/TopicsTestDataGenerator.py
--- a/csunplugged/tests/topics/TopicsTestDataGenerator.py
+++ b/csunplugged/tests/topics/TopicsTestDataGenerator.py
@@ -225,6 +225,7 @@ def create_programming_challenge(self, topic, number,
                                      challenge_set_number=1,
                                      challenge_number=1,
                                      content="<p>Example content.</p>",
+                                     testing_examples="<p>Testing example</p>",
                                      extra_challenge="<p>Example challenge.</p>",
                                      ):
         """Create programming challenge object.
@@ -253,6 +254,7 @@ def create_programming_challenge(self, topic, number,
             challenge_set_number=challenge_set_number,
             challenge_number=challenge_number,
             content=content,
+            testing_examples=testing_examples,
             extra_challenge=extra_challenge,
             difficulty=difficulty,
             languages=["en"],
diff --git a/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-expected-result/testing-examples.md b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-expected-result/testing-examples.md
new file mode 100644
--- /dev/null
+++ b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-expected-result/testing-examples.md
@@ -0,0 +1,12 @@
+# Programming Challenge 1
+
+## Testing examples:
+
+Etiam in massa. Nam ut metus. In rhoncus venenatis tellus. Etiam aliquam. Ut
+aliquam lectus ut lectus. Nam turpis lacus, tristique sit amet, convallis
+sollicitudin, commodo a, purus. Nulla vitae eros a diam blandit mollis. Proin
+luctus feugiat eros. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Duis ultricies urna. Etiam enim urna,
+pharetra suscipit, varius et, congue quis, odio. Donec lobortis, elit bibendum
+euismod faucibus, velit nibh egestas libero, vitae pellentesque elit augue ut
+massa.
diff --git a/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-hints/testing-examples.md b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-hints/testing-examples.md
new file mode 100644
--- /dev/null
+++ b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-hints/testing-examples.md
@@ -0,0 +1,12 @@
+# Programming Challenge 1
+
+## Testing examples:
+
+Etiam in massa. Nam ut metus. In rhoncus venenatis tellus. Etiam aliquam. Ut
+aliquam lectus ut lectus. Nam turpis lacus, tristique sit amet, convallis
+sollicitudin, commodo a, purus. Nulla vitae eros a diam blandit mollis. Proin
+luctus feugiat eros. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Duis ultricies urna. Etiam enim urna,
+pharetra suscipit, varius et, congue quis, odio. Donec lobortis, elit bibendum
+euismod faucibus, velit nibh egestas libero, vitae pellentesque elit augue ut
+massa.
diff --git a/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-solution/testing-examples.md b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-solution/testing-examples.md
new file mode 100644
--- /dev/null
+++ b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-solution/testing-examples.md
@@ -0,0 +1,12 @@
+# Programming Challenge 1
+
+## Testing examples:
+
+Etiam in massa. Nam ut metus. In rhoncus venenatis tellus. Etiam aliquam. Ut
+aliquam lectus ut lectus. Nam turpis lacus, tristique sit amet, convallis
+sollicitudin, commodo a, purus. Nulla vitae eros a diam blandit mollis. Proin
+luctus feugiat eros. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Duis ultricies urna. Etiam enim urna,
+pharetra suscipit, varius et, congue quis, odio. Donec lobortis, elit bibendum
+euismod faucibus, velit nibh egestas libero, vitae pellentesque elit augue ut
+massa.
diff --git a/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-testing-examples/language-1-expected.md b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-testing-examples/language-1-expected.md
new file mode 100644
--- /dev/null
+++ b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-testing-examples/language-1-expected.md
@@ -0,0 +1,54 @@
+Etiam in massa. Nam ut metus. In rhoncus venenatis tellus. Etiam aliquam. Ut
+aliquam lectus ut lectus. Nam turpis lacus, tristique sit amet, convallis
+sollicitudin, commodo a, purus. Nulla vitae eros a diam blandit mollis. Proin
+luctus feugiat eros. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Duis ultricies urna. Etiam enim urna,
+pharetra suscipit, varius et, congue quis, odio. Donec lobortis, elit bibendum
+euismod faucibus, velit nibh egestas libero, vitae pellentesque elit augue ut
+massa.
+
+Nulla consequat erat at massa. Vivamus id mi. Morbi purus enim, dapibus a,
+facilisis non, tincidunt at, enim. Vestibulum ante ipsum primis in faucibus
+orci luctus et ultrices posuere cubilia Curae; Duis imperdiet eleifend arcu.
+Cras magna ligula, consequat at, tempor non, posuere nec, libero. Vestibulum
+vel ipsum. Praesent congue justo et nunc. Vestibulum nec felis vitae nisl
+pharetra sollicitudin. Quisque nec arcu vel tellus tristique vestibulum. Aenean
+vel lacus. Mauris dolor erat, commodo ut, dapibus vehicula, lobortis sit amet,
+orci. Aliquam augue. In semper nisi nec libero. Cras magna ipsum, scelerisque
+et, tempor eget, gravida nec, lacus. Fusce eros nisi, ullamcorper blandit,
+ultricies eget, elementum eget, pede. Phasellus id risus vitae nisl ullamcorper
+congue. Proin est.
+
+Sed eleifend odio sed leo. Mauris tortor turpis, dignissim vel, ornare ac,
+ultricies quis, magna. Phasellus lacinia, augue ac dictum tempor, nisi felis
+ornare magna, eu vehicula tellus enim eu neque. Fusce est eros, sagittis eget,
+interdum a, ornare suscipit, massa. Sed vehicula elementum ligula. Aliquam erat
+volutpat. Donec odio. Quisque nunc. Integer cursus feugiat magna. Fusce ac elit
+ut elit aliquam suscipit. Duis leo est, interdum nec, varius in, facilisis
+vitae, odio. Phasellus eget leo at urna adipiscing vulputate. Nam eu erat vel
+arcu tristique mattis. Nullam placerat lorem non augue. Cras et velit. Morbi
+sapien nulla, volutpat a, tristique eu, molestie ac, felis.
+
+Suspendisse sit amet tellus non odio porta pellentesque. Nulla facilisi.
+Integer iaculis condimentum augue. Nullam urna nulla, vestibulum quis, lacinia
+eget, ullamcorper eu, dui. Quisque dignissim consequat nisl. Pellentesque porta
+augue in diam. Duis mattis. Aliquam et mi quis turpis pellentesque consequat.
+Suspendisse nulla erat, lacinia nec, pretium vitae, feugiat ac, quam. Etiam sed
+tellus vel est ultrices condimentum. Vestibulum euismod. Vivamus blandit.
+Pellentesque eu urna. Vestibulum consequat sem vitae dui. In dictum feugiat
+quam. Phasellus placerat. In sem nisl, elementum vitae, venenatis nec, lacinia
+ac, arcu. Pellentesque gravida egestas mi. Integer rutrum tincidunt libero.
+
+Duis viverra. Nulla diam lectus, tincidunt et, scelerisque vitae, aliquam
+vitae, justo. Quisque eget erat. Donec aliquet porta magna. Sed nisl. Ut
+tellus. Suspendisse quis mi eget dolor sagittis tristique. Aenean non pede eget
+nisl bibendum gravida. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos. Morbi laoreet. Suspendisse potenti.
+Donec accumsan porta felis.
+
+Fusce tristique leo quis pede. Cras nibh. Sed eget est vitae tortor mollis
+ullamcorper. Suspendisse placerat dolor a dui. Vestibulum condimentum dui et
+elit. Pellentesque porttitor ipsum at ipsum. Nam massa. Duis lorem. Donec
+porta. Proin ligula. Aenean nunc massa, dapibus quis, imperdiet id, commodo a,
+lacus. Cras sit amet.
+
diff --git a/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-testing-examples/language-1-hints.md b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-testing-examples/language-1-hints.md
new file mode 100644
--- /dev/null
+++ b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-testing-examples/language-1-hints.md
@@ -0,0 +1,54 @@
+Etiam in massa. Nam ut metus. In rhoncus venenatis tellus. Etiam aliquam. Ut
+aliquam lectus ut lectus. Nam turpis lacus, tristique sit amet, convallis
+sollicitudin, commodo a, purus. Nulla vitae eros a diam blandit mollis. Proin
+luctus feugiat eros. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Duis ultricies urna. Etiam enim urna,
+pharetra suscipit, varius et, congue quis, odio. Donec lobortis, elit bibendum
+euismod faucibus, velit nibh egestas libero, vitae pellentesque elit augue ut
+massa.
+
+Nulla consequat erat at massa. Vivamus id mi. Morbi purus enim, dapibus a,
+facilisis non, tincidunt at, enim. Vestibulum ante ipsum primis in faucibus
+orci luctus et ultrices posuere cubilia Curae; Duis imperdiet eleifend arcu.
+Cras magna ligula, consequat at, tempor non, posuere nec, libero. Vestibulum
+vel ipsum. Praesent congue justo et nunc. Vestibulum nec felis vitae nisl
+pharetra sollicitudin. Quisque nec arcu vel tellus tristique vestibulum. Aenean
+vel lacus. Mauris dolor erat, commodo ut, dapibus vehicula, lobortis sit amet,
+orci. Aliquam augue. In semper nisi nec libero. Cras magna ipsum, scelerisque
+et, tempor eget, gravida nec, lacus. Fusce eros nisi, ullamcorper blandit,
+ultricies eget, elementum eget, pede. Phasellus id risus vitae nisl ullamcorper
+congue. Proin est.
+
+Sed eleifend odio sed leo. Mauris tortor turpis, dignissim vel, ornare ac,
+ultricies quis, magna. Phasellus lacinia, augue ac dictum tempor, nisi felis
+ornare magna, eu vehicula tellus enim eu neque. Fusce est eros, sagittis eget,
+interdum a, ornare suscipit, massa. Sed vehicula elementum ligula. Aliquam erat
+volutpat. Donec odio. Quisque nunc. Integer cursus feugiat magna. Fusce ac elit
+ut elit aliquam suscipit. Duis leo est, interdum nec, varius in, facilisis
+vitae, odio. Phasellus eget leo at urna adipiscing vulputate. Nam eu erat vel
+arcu tristique mattis. Nullam placerat lorem non augue. Cras et velit. Morbi
+sapien nulla, volutpat a, tristique eu, molestie ac, felis.
+
+Suspendisse sit amet tellus non odio porta pellentesque. Nulla facilisi.
+Integer iaculis condimentum augue. Nullam urna nulla, vestibulum quis, lacinia
+eget, ullamcorper eu, dui. Quisque dignissim consequat nisl. Pellentesque porta
+augue in diam. Duis mattis. Aliquam et mi quis turpis pellentesque consequat.
+Suspendisse nulla erat, lacinia nec, pretium vitae, feugiat ac, quam. Etiam sed
+tellus vel est ultrices condimentum. Vestibulum euismod. Vivamus blandit.
+Pellentesque eu urna. Vestibulum consequat sem vitae dui. In dictum feugiat
+quam. Phasellus placerat. In sem nisl, elementum vitae, venenatis nec, lacinia
+ac, arcu. Pellentesque gravida egestas mi. Integer rutrum tincidunt libero.
+
+Duis viverra. Nulla diam lectus, tincidunt et, scelerisque vitae, aliquam
+vitae, justo. Quisque eget erat. Donec aliquet porta magna. Sed nisl. Ut
+tellus. Suspendisse quis mi eget dolor sagittis tristique. Aenean non pede eget
+nisl bibendum gravida. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos. Morbi laoreet. Suspendisse potenti.
+Donec accumsan porta felis.
+
+Fusce tristique leo quis pede. Cras nibh. Sed eget est vitae tortor mollis
+ullamcorper. Suspendisse placerat dolor a dui. Vestibulum condimentum dui et
+elit. Pellentesque porttitor ipsum at ipsum. Nam massa. Duis lorem. Donec
+porta. Proin ligula. Aenean nunc massa, dapibus quis, imperdiet id, commodo a,
+lacus. Cras sit amet.
+
diff --git a/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-testing-examples/language-1-solution.md b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-testing-examples/language-1-solution.md
new file mode 100644
--- /dev/null
+++ b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-testing-examples/language-1-solution.md
@@ -0,0 +1,54 @@
+Etiam in massa. Nam ut metus. In rhoncus venenatis tellus. Etiam aliquam. Ut
+aliquam lectus ut lectus. Nam turpis lacus, tristique sit amet, convallis
+sollicitudin, commodo a, purus. Nulla vitae eros a diam blandit mollis. Proin
+luctus feugiat eros. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Duis ultricies urna. Etiam enim urna,
+pharetra suscipit, varius et, congue quis, odio. Donec lobortis, elit bibendum
+euismod faucibus, velit nibh egestas libero, vitae pellentesque elit augue ut
+massa.
+
+Nulla consequat erat at massa. Vivamus id mi. Morbi purus enim, dapibus a,
+facilisis non, tincidunt at, enim. Vestibulum ante ipsum primis in faucibus
+orci luctus et ultrices posuere cubilia Curae; Duis imperdiet eleifend arcu.
+Cras magna ligula, consequat at, tempor non, posuere nec, libero. Vestibulum
+vel ipsum. Praesent congue justo et nunc. Vestibulum nec felis vitae nisl
+pharetra sollicitudin. Quisque nec arcu vel tellus tristique vestibulum. Aenean
+vel lacus. Mauris dolor erat, commodo ut, dapibus vehicula, lobortis sit amet,
+orci. Aliquam augue. In semper nisi nec libero. Cras magna ipsum, scelerisque
+et, tempor eget, gravida nec, lacus. Fusce eros nisi, ullamcorper blandit,
+ultricies eget, elementum eget, pede. Phasellus id risus vitae nisl ullamcorper
+congue. Proin est.
+
+Sed eleifend odio sed leo. Mauris tortor turpis, dignissim vel, ornare ac,
+ultricies quis, magna. Phasellus lacinia, augue ac dictum tempor, nisi felis
+ornare magna, eu vehicula tellus enim eu neque. Fusce est eros, sagittis eget,
+interdum a, ornare suscipit, massa. Sed vehicula elementum ligula. Aliquam erat
+volutpat. Donec odio. Quisque nunc. Integer cursus feugiat magna. Fusce ac elit
+ut elit aliquam suscipit. Duis leo est, interdum nec, varius in, facilisis
+vitae, odio. Phasellus eget leo at urna adipiscing vulputate. Nam eu erat vel
+arcu tristique mattis. Nullam placerat lorem non augue. Cras et velit. Morbi
+sapien nulla, volutpat a, tristique eu, molestie ac, felis.
+
+Suspendisse sit amet tellus non odio porta pellentesque. Nulla facilisi.
+Integer iaculis condimentum augue. Nullam urna nulla, vestibulum quis, lacinia
+eget, ullamcorper eu, dui. Quisque dignissim consequat nisl. Pellentesque porta
+augue in diam. Duis mattis. Aliquam et mi quis turpis pellentesque consequat.
+Suspendisse nulla erat, lacinia nec, pretium vitae, feugiat ac, quam. Etiam sed
+tellus vel est ultrices condimentum. Vestibulum euismod. Vivamus blandit.
+Pellentesque eu urna. Vestibulum consequat sem vitae dui. In dictum feugiat
+quam. Phasellus placerat. In sem nisl, elementum vitae, venenatis nec, lacinia
+ac, arcu. Pellentesque gravida egestas mi. Integer rutrum tincidunt libero.
+
+Duis viverra. Nulla diam lectus, tincidunt et, scelerisque vitae, aliquam
+vitae, justo. Quisque eget erat. Donec aliquet porta magna. Sed nisl. Ut
+tellus. Suspendisse quis mi eget dolor sagittis tristique. Aenean non pede eget
+nisl bibendum gravida. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos. Morbi laoreet. Suspendisse potenti.
+Donec accumsan porta felis.
+
+Fusce tristique leo quis pede. Cras nibh. Sed eget est vitae tortor mollis
+ullamcorper. Suspendisse placerat dolor a dui. Vestibulum condimentum dui et
+elit. Pellentesque porttitor ipsum at ipsum. Nam massa. Duis lorem. Donec
+porta. Proin ligula. Aenean nunc massa, dapibus quis, imperdiet id, commodo a,
+lacus. Cras sit amet.
+
diff --git a/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-testing-examples/missing-testing-examples.md b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-testing-examples/missing-testing-examples.md
new file mode 100644
--- /dev/null
+++ b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/missing-testing-examples/missing-testing-examples.md
@@ -0,0 +1,3 @@
+# Programming Challenge 1
+
+Programming challenge content
diff --git a/csunplugged/tests/topics/loaders/assets/programming_challenges/en/programming-challenge-1/testing-examples.md b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/programming-challenge-1/testing-examples.md
new file mode 100644
--- /dev/null
+++ b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/programming-challenge-1/testing-examples.md
@@ -0,0 +1,12 @@
+# Programming Challenge 1
+
+## Testing examples:
+
+Etiam in massa. Nam ut metus. In rhoncus venenatis tellus. Etiam aliquam. Ut
+aliquam lectus ut lectus. Nam turpis lacus, tristique sit amet, convallis
+sollicitudin, commodo a, purus. Nulla vitae eros a diam blandit mollis. Proin
+luctus feugiat eros. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Duis ultricies urna. Etiam enim urna,
+pharetra suscipit, varius et, congue quis, odio. Donec lobortis, elit bibendum
+euismod faucibus, velit nibh egestas libero, vitae pellentesque elit augue ut
+massa.
diff --git a/csunplugged/tests/topics/loaders/assets/programming_challenges/en/programming-challenge-2/testing-examples.md b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/programming-challenge-2/testing-examples.md
new file mode 100644
--- /dev/null
+++ b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/programming-challenge-2/testing-examples.md
@@ -0,0 +1,12 @@
+# Programming Challenge 2
+
+## Testing examples:
+
+Etiam in massa. Nam ut metus. In rhoncus venenatis tellus. Etiam aliquam. Ut
+aliquam lectus ut lectus. Nam turpis lacus, tristique sit amet, convallis
+sollicitudin, commodo a, purus. Nulla vitae eros a diam blandit mollis. Proin
+luctus feugiat eros. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Duis ultricies urna. Etiam enim urna,
+pharetra suscipit, varius et, congue quis, odio. Donec lobortis, elit bibendum
+euismod faucibus, velit nibh egestas libero, vitae pellentesque elit augue ut
+massa.
diff --git a/csunplugged/tests/topics/loaders/assets/programming_challenges/en/translation-missing-expected-result/testing-examples.md b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/translation-missing-expected-result/testing-examples.md
new file mode 100644
--- /dev/null
+++ b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/translation-missing-expected-result/testing-examples.md
@@ -0,0 +1,12 @@
+# Programming Challenge 1
+
+## Testing examples:
+
+Etiam in massa. Nam ut metus. In rhoncus venenatis tellus. Etiam aliquam. Ut
+aliquam lectus ut lectus. Nam turpis lacus, tristique sit amet, convallis
+sollicitudin, commodo a, purus. Nulla vitae eros a diam blandit mollis. Proin
+luctus feugiat eros. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Duis ultricies urna. Etiam enim urna,
+pharetra suscipit, varius et, congue quis, odio. Donec lobortis, elit bibendum
+euismod faucibus, velit nibh egestas libero, vitae pellentesque elit augue ut
+massa.
diff --git a/csunplugged/tests/topics/loaders/assets/programming_challenges/en/translation-missing-hints/testing-examples.md b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/translation-missing-hints/testing-examples.md
new file mode 100644
--- /dev/null
+++ b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/translation-missing-hints/testing-examples.md
@@ -0,0 +1,12 @@
+# Translation English
+
+## Testing examples:
+
+Etiam in massa. Nam ut metus. In rhoncus venenatis tellus. Etiam aliquam. Ut
+aliquam lectus ut lectus. Nam turpis lacus, tristique sit amet, convallis
+sollicitudin, commodo a, purus. Nulla vitae eros a diam blandit mollis. Proin
+luctus feugiat eros. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Duis ultricies urna. Etiam enim urna,
+pharetra suscipit, varius et, congue quis, odio. Donec lobortis, elit bibendum
+euismod faucibus, velit nibh egestas libero, vitae pellentesque elit augue ut
+massa.
diff --git a/csunplugged/tests/topics/loaders/assets/programming_challenges/en/translation-missing-solution/testing-examples.md b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/translation-missing-solution/testing-examples.md
new file mode 100644
--- /dev/null
+++ b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/translation-missing-solution/testing-examples.md
@@ -0,0 +1,12 @@
+# Translation English
+
+## Testing examples:
+
+Etiam in massa. Nam ut metus. In rhoncus venenatis tellus. Etiam aliquam. Ut
+aliquam lectus ut lectus. Nam turpis lacus, tristique sit amet, convallis
+sollicitudin, commodo a, purus. Nulla vitae eros a diam blandit mollis. Proin
+luctus feugiat eros. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Duis ultricies urna. Etiam enim urna,
+pharetra suscipit, varius et, congue quis, odio. Donec lobortis, elit bibendum
+euismod faucibus, velit nibh egestas libero, vitae pellentesque elit augue ut
+massa.
diff --git a/csunplugged/tests/topics/loaders/assets/programming_challenges/en/translation/testing-examples.md b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/translation/testing-examples.md
new file mode 100644
--- /dev/null
+++ b/csunplugged/tests/topics/loaders/assets/programming_challenges/en/translation/testing-examples.md
@@ -0,0 +1,12 @@
+# Translation English
+
+## Testing examples:
+
+Etiam in massa. Nam ut metus. In rhoncus venenatis tellus. Etiam aliquam. Ut
+aliquam lectus ut lectus. Nam turpis lacus, tristique sit amet, convallis
+sollicitudin, commodo a, purus. Nulla vitae eros a diam blandit mollis. Proin
+luctus feugiat eros. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas. Duis ultricies urna. Etiam enim urna,
+pharetra suscipit, varius et, congue quis, odio. Donec lobortis, elit bibendum
+euismod faucibus, velit nibh egestas libero, vitae pellentesque elit augue ut
+massa.
diff --git a/csunplugged/tests/topics/loaders/assets/programming_challenges/structure/missing-testing-examples.yaml b/csunplugged/tests/topics/loaders/assets/programming_challenges/structure/missing-testing-examples.yaml
new file mode 100644
--- /dev/null
+++ b/csunplugged/tests/topics/loaders/assets/programming_challenges/structure/missing-testing-examples.yaml
@@ -0,0 +1,6 @@
+missing-testing-examples:
+  challenge-set-number: 1
+  challenge-number: 1
+  difficulty-level: 1
+  programming-languages:
+    - language-1
diff --git a/csunplugged/tests/topics/loaders/test_programming_challenges_loader.py b/csunplugged/tests/topics/loaders/test_programming_challenges_loader.py
--- a/csunplugged/tests/topics/loaders/test_programming_challenges_loader.py
+++ b/csunplugged/tests/topics/loaders/test_programming_challenges_loader.py
@@ -65,6 +65,17 @@ def test_missing_solution(self):
         with self.assertRaises(CouldNotFindMarkdownFileError):
             pc_loader.load()
 
+    def test_missing_testing_examples(self):
+        config_file = "missing-testing-examples.yaml"
+
+        self.test_data.create_difficulty_level("1")
+        self.test_data.create_programming_language("1")
+        topic = self.test_data.create_topic("1")
+
+        pc_loader = ProgrammingChallengesLoader(topic, structure_filename=config_file, base_path=self.base_path)
+        with self.assertRaises(CouldNotFindMarkdownFileError):
+            pc_loader.load()
+
     def test_missing_expected_result(self):
         config_file = "missing-expected-result.yaml"
 
diff --git a/csunplugged/topics/migrations/0096_programmingchallenge_testing_examples.py b/csunplugged/topics/migrations/0096_programmingchallenge_testing_examples.py
new file mode 100644
--- /dev/null
+++ b/csunplugged/topics/migrations/0096_programmingchallenge_testing_examples.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.12 on 2020-08-31 23:17
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('topics', '0095_auto_20200603_2208'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='programmingchallenge',
+            name='testing_examples',
+            field=models.TextField(default=''),
+        ),
+    ]