Better testing with Mockito.
This commit is contained in:
parent
9d3f3f180b
commit
92515785a0
@ -31,6 +31,15 @@ dependencies {
|
||||
// https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine
|
||||
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2'
|
||||
|
||||
/**
|
||||
* Mockito
|
||||
*/
|
||||
// https://mvnrepository.com/artifact/org.mockito/mockito-core
|
||||
testImplementation 'org.mockito:mockito-core:4.11.0'
|
||||
|
||||
// https://mvnrepository.com/artifact/org.mockito/mockito-junit-jupiter
|
||||
testImplementation 'org.mockito:mockito-junit-jupiter:4.11.0'
|
||||
|
||||
/**
|
||||
* Test Logging
|
||||
*/
|
||||
|
@ -1,16 +1,23 @@
|
||||
package com.jessebrault.ssg.specialpage
|
||||
|
||||
import com.jessebrault.ssg.part.GspPartRenderer
|
||||
import com.jessebrault.ssg.part.Part
|
||||
import com.jessebrault.ssg.part.PartRenderer
|
||||
import com.jessebrault.ssg.part.PartType
|
||||
import com.jessebrault.ssg.text.MarkdownFrontMatterGetter
|
||||
import com.jessebrault.ssg.text.MarkdownTextRenderer
|
||||
import com.jessebrault.ssg.text.FrontMatterGetter
|
||||
import com.jessebrault.ssg.text.Text
|
||||
import com.jessebrault.ssg.text.TextRenderer
|
||||
import com.jessebrault.ssg.text.TextType
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.extension.ExtendWith
|
||||
import org.mockito.Mock
|
||||
import org.mockito.junit.jupiter.MockitoExtension
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals
|
||||
import static org.mockito.ArgumentMatchers.any
|
||||
import static org.mockito.ArgumentMatchers.argThat
|
||||
import static org.mockito.Mockito.when
|
||||
|
||||
@ExtendWith(MockitoExtension)
|
||||
class GspSpecialPageRendererTests {
|
||||
|
||||
private final SpecialPageRenderer renderer = new GspSpecialPageRenderer()
|
||||
@ -23,22 +30,31 @@ class GspSpecialPageRendererTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
void rendersPartWithNoBinding() {
|
||||
def part = new Part('test', new PartType(['.gsp'], new GspPartRenderer()), 'Hello, World!')
|
||||
void rendersPartWithNoBinding(@Mock PartRenderer partRenderer) {
|
||||
when(partRenderer.render(any(), any(), any())).thenReturn('Hello, World!')
|
||||
def partType = new PartType([], partRenderer)
|
||||
def part = new Part('test', partType , '')
|
||||
|
||||
def r = this.renderer.render("<%= parts['test'].render() %>", [], [part], [:])
|
||||
assertEquals('Hello, World!', r)
|
||||
}
|
||||
|
||||
@Test
|
||||
void rendersPartWithBinding() {
|
||||
def part = new Part('test', new PartType(['.gsp'], new GspPartRenderer()), "<%= binding['greeting'] %>")
|
||||
void rendersPartWithBinding(@Mock PartRenderer partRenderer) {
|
||||
when(partRenderer.render(any(), argThat { Map m -> m.get('greeting') == 'Hello, World!'}, any())).thenReturn('Hello, World!')
|
||||
def partType = new PartType([], partRenderer)
|
||||
def part = new Part('test', partType, '')
|
||||
|
||||
def r = this.renderer.render("<%= parts['test'].render([greeting: 'Hello, World!'])", [], [part], [:])
|
||||
assertEquals('Hello, World!', r)
|
||||
}
|
||||
|
||||
@Test
|
||||
void rendersText() {
|
||||
def text = new Text('**Hello, World!**', 'test', new TextType(['.gsp'], new MarkdownTextRenderer(), new MarkdownFrontMatterGetter()))
|
||||
void rendersText(@Mock TextRenderer textRenderer, @Mock FrontMatterGetter frontMatterGetter) {
|
||||
when(textRenderer.render(any(), any())).thenReturn('<p><strong>Hello, World!</strong></p>\n')
|
||||
def textType = new TextType([], textRenderer, frontMatterGetter)
|
||||
def text = new Text('', 'test', textType)
|
||||
|
||||
def r = this.renderer.render("<%= texts.find { it.path == 'test' }.render() %>", [text], [], [:])
|
||||
assertEquals('<p><strong>Hello, World!</strong></p>\n', r)
|
||||
}
|
||||
|
@ -1,37 +1,52 @@
|
||||
package com.jessebrault.ssg.template
|
||||
|
||||
import com.jessebrault.ssg.part.GspPartRenderer
|
||||
import com.jessebrault.ssg.part.Part
|
||||
import com.jessebrault.ssg.part.PartRenderer
|
||||
import com.jessebrault.ssg.part.PartType
|
||||
import com.jessebrault.ssg.text.FrontMatter
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.extension.ExtendWith
|
||||
import org.mockito.Mock
|
||||
import org.mockito.junit.jupiter.MockitoExtension
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals
|
||||
import static org.mockito.ArgumentMatchers.any
|
||||
import static org.mockito.ArgumentMatchers.argThat
|
||||
import static org.mockito.Mockito.when
|
||||
|
||||
@ExtendWith(MockitoExtension)
|
||||
class GspTemplateRendererTests {
|
||||
|
||||
private final TemplateRenderer renderer = new GspTemplateRenderer()
|
||||
|
||||
@Test
|
||||
void rendersPartWithNoBinding() {
|
||||
void rendersPartWithNoBinding(@Mock PartRenderer partRenderer) {
|
||||
def template = new Template(
|
||||
"<%= parts['test'].render() %>",
|
||||
null,
|
||||
null
|
||||
)
|
||||
def part = new Part('test', new PartType(['.gsp'], new GspPartRenderer()), 'Hello, World!')
|
||||
|
||||
when(partRenderer.render(any(), any(), any())).thenReturn('Hello, World!')
|
||||
def partType = new PartType([], partRenderer)
|
||||
def part = new Part('test', partType, null)
|
||||
|
||||
def r = this.renderer.render(template, new FrontMatter([:]), '', [part], [:])
|
||||
assertEquals('Hello, World!', r)
|
||||
}
|
||||
|
||||
@Test
|
||||
void rendersPartWithBinding() {
|
||||
void rendersPartWithBinding(@Mock PartRenderer partRenderer) {
|
||||
def template = new Template(
|
||||
"<%= parts['greeting'].render([person: 'World']) %>",
|
||||
null,
|
||||
null
|
||||
)
|
||||
def part = new Part('greeting', new PartType(['.gsp'], new GspPartRenderer()), 'Hello, $binding.person!')
|
||||
|
||||
when(partRenderer.render(any(), argThat { Map m -> m.get('person') == 'World' }, any())).thenReturn('Hello, World!')
|
||||
def partType = new PartType([], partRenderer)
|
||||
def part = new Part('greeting', partType, null)
|
||||
|
||||
def r = this.renderer.render(template, new FrontMatter([:]), '', [part], [:])
|
||||
assertEquals('Hello, World!', r)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user