diff --git a/repository/Brea-Tests/BreaPageTest.class.st b/repository/Brea-Tests/BreaPageTest.class.st new file mode 100644 index 0000000..1d1d175 --- /dev/null +++ b/repository/Brea-Tests/BreaPageTest.class.st @@ -0,0 +1,188 @@ +" +A BreaPageTest is a test class for testing the behavior of BreaPage +" +Class { + #name : #BreaPageTest, + #superclass : #TestCase, + #category : #'Brea-Tests' +} + +{ #category : #initialization } +BreaPageTest >> createHTMLTemplateFile [ + | testFile contents | + testFile := FileLocator temp / 'template.mus.html'. + testFile ensureCreateFile. + contents := +' + +
+ + ++ {{#show}} You should see me. {{/show}} +
++ {{#unhide}} You should not see me. {{/unhide}} +
+ {{ contents }} + +'. + + MarkupFile exportAsFileOn: testFile containing: contents. + +] + +{ #category : #initialization } +BreaPageTest >> createJSONFile [ + | testFile contents | + testFile := self jsonTestFile. + testFile ensureCreateFile. + contents := '{ "title": "This is a test", "show": true, "unhide": false }'. + MarkupFile exportAsFileOn: testFile containing: contents. + +] + +{ #category : #initialization } +BreaPageTest >> createMarkdownFile [ + | testFile contents | + testFile := self markdownTestFile. + testFile ensureCreateFile. + contents := +'--- +title: This is a test +show: true +unhide: false + +--- + +# Level one header + +And paragraph contents with _emphasis_ and **strong emphasis**.'. + + MarkupFile exportAsFileOn: testFile containing: contents. + +] + +{ #category : #'as yet unclassified' } +BreaPageTest >> htmlBodyContents [ + ^ 'And paragraph contents with emphasis and strong emphasis.
+' +] + +{ #category : #'as yet unclassified' } +BreaPageTest >> htmlOutput [ + ^ ' + + + + ++ You should see me. +
++
', + self htmlBodyContents, +' +' +] + +{ #category : #'as yet unclassified' } +BreaPageTest >> jsonTestFile [ + ^ FileLocator temp / 'test1.json'. +] + +{ #category : #'as yet unclassified' } +BreaPageTest >> markdownTestFile [ + ^ FileLocator temp / 'test.md'. +] + +{ #category : #'as yet unclassified' } +BreaPageTest >> setUp [ + "I create disposable simple files for testing purposes." + super setUp. + self createMarkdownFile. + self createHTMLTemplateFile. +] + +{ #category : #tests } +BreaPageTest >> testJSONMetadataExtraction [ + + | page testMetadata | + testMetadata := {'title' -> 'This is a test' . 'show' -> true. 'unhide' -> false} asDictionary. + page := BreaPage new. + page + shortName: 'test1'; + folder: FileLocator temp. + self assert: page metadata equals: testMetadata +] + +{ #category : #tests } +BreaPageTest >> testJSONPopulateMetadata [ + + | page testMetadata | + testMetadata := {'title' -> 'This is a test' . 'show' -> true. 'unhide' -> false} asDictionary. + page := BreaPage new. + page + shortName: 'test1'; + folder: FileLocator temp. + page templateData at: 'extra' put: 'value'. + self assert: page populateMetadata equals: (testMetadata at: 'extra' put: 'value'; yourself) +] + +{ #category : #tests } +BreaPageTest >> testMarkdownContentExtraction [ + + | page | + page := BreaPage new. + page + shortName: 'test'; + folder: FileLocator temp. + self assert: page contents equals: self markdownTestFile contents. +] + +{ #category : #tests } +BreaPageTest >> testMarkdownMetadataExtraction [ + + | page testMetadata | + testMetadata := {'title' -> 'This is a test' . 'show' -> true. 'unhide' -> false} asDictionary. + page := BreaPage new. + page + shortName: 'test'; + folder: FileLocator temp. + self assert: page metadata equals: testMetadata +] + +{ #category : #tests } +BreaPageTest >> testMarkdownPopulateBody [ + + | page | + page := BreaPage new. + page + shortName: 'test'; + folder: FileLocator temp; + bodyTag: 'contents'. + page populateTaggedBody. + self assert: (page templateData at: 'contents') equals: self htmlBodyContents. +] + +{ #category : #tests } +BreaPageTest >> testMarkdownPopulateMetadata [ + + | page testMetadata | + testMetadata := {'title' -> 'This is a test' . 'show' -> true. 'unhide' -> false} asDictionary. + page := BreaPage new. + page + shortName: 'test'; + folder: FileLocator temp. + page templateData at: 'extra' put: 'value'. + self assert: page populateMetadata equals: (testMetadata at: 'extra' put: 'value'; yourself) +] diff --git a/repository/Brea-Tests/package.st b/repository/Brea-Tests/package.st new file mode 100644 index 0000000..3af073a --- /dev/null +++ b/repository/Brea-Tests/package.st @@ -0,0 +1 @@ +Package { #name : #'Brea-Tests' } diff --git a/repository/Brea/BreaFile.class.st b/repository/Brea/BreaFile.class.st index cdbf0cd..b2c8616 100644 --- a/repository/Brea/BreaFile.class.st +++ b/repository/Brea/BreaFile.class.st @@ -57,7 +57,7 @@ BreaFile >> folder: anObject [ BreaFile >> metadata [ self name ifNil: [ ^ nil ]. (self name endsWith: '.md') ifTrue: [ ^ self contents metadata ]. - (self name endsWith: '.json') ifTrue: [ ^ self contents ]. + (self name endsWith: '.json') ifTrue: [ ^ self contents asDictionary ]. ] { #category : #accessing } diff --git a/repository/Brea/BreaPage.class.st b/repository/Brea/BreaPage.class.st index a1ab14e..0485c27 100644 --- a/repository/Brea/BreaPage.class.st +++ b/repository/Brea/BreaPage.class.st @@ -165,6 +165,12 @@ BreaPage >> populateMetadata [ ^ templateData ] +{ #category : #operation } +BreaPage >> populateTaggedBody [ + self bodyTag ifNil: [ ^ self ]. + ^ self populateBodyAs: self bodyTag. +] + { #category : #accessing } BreaPage >> shortName [ ^ shortName