CI For Wordpress

Post on 17-Jul-2015

76 views 0 download

Tags:

Transcript of CI For Wordpress

Move fast and don’t break things

@noppanit

Engineer @Thisisfusion

Continuous Integration is key

But

Without test?

OH F**K!

RED

GREENREFACTOR

As a user, I want to see a banner for every post that has the ‘tdd’ tag associated with the post, so that the editor doesn’t have to manually add the banner to each ‘tdd’ post.

Always test first

1 public function test_adding_banner_filter() { 2 $post_id = $this->factory->post->create( array( 3 'post_title' => 'Test of our banner output', 4 'post_content' => 'This is the content of our test post.', 5 'post_date' => '2014-10-01 17:28:00', 6 'post_status' => 'publish', 7 'post_type' => 'post' 8 ) ); 9 10 wp_set_post_tags( $post_id, 'tag', true ); 11 $this->go_to( get_permalink( $post_id )); 12 13 $post = \Fusion\Objects\Post::get_by_post_id( $post_id ); 14 15 $content = apply_filters( 'the_content', $post->get_content() ); 16 17 $html5 = new HTML5(); 18 $dom = $html5->loadHTML($content); 19 20 $this->assertContains( 'assets/images/topic-banners/banner.jpg', qp( $dom, 'img' )->attr('src') ); 21 22 }

FAILURES! Tests: 1, Assertions: 1, Failures: 1.

1 public function adding_banner( $content ) { 2 $post = \Fusion\Objects\Post::get_by_post_id( get_the_ID() ); 3 4 if ( $post->has_tag('tdd') ) { 5 $banner = '<img src="' . esc_url( get_template_directory_uri() . '/assets/images/topic-banners/banner.jpg') . '" alt="" />'; 6 $content = $content . $banner; 7 } 8 9 return $content; 10 }

.!

Time: 3.12 seconds, Memory: 19.25Mb!

OK (1 test, 1 assertion)

–Robert C. Martin

“Legacy code is simply code without tests”