| 1 | #!/usr/bin/perl |
|---|
| 2 | # $Id$ |
|---|
| 3 | use strict; |
|---|
| 4 | use warnings; |
|---|
| 5 | use File::Copy; |
|---|
| 6 | |
|---|
| 7 | use lib qw( t t/lib ./extlib ./lib); |
|---|
| 8 | |
|---|
| 9 | use Test::More tests => 60; |
|---|
| 10 | use MT::Test qw(:db :data); |
|---|
| 11 | |
|---|
| 12 | use MT; |
|---|
| 13 | use MT::Asset; |
|---|
| 14 | use vars qw( $DB_DIR $T_CFG ); |
|---|
| 15 | |
|---|
| 16 | my $mt = MT->new( Config => $T_CFG ) or die MT->errstr; |
|---|
| 17 | isa_ok($mt, 'MT', 'Is MT'); |
|---|
| 18 | |
|---|
| 19 | { |
|---|
| 20 | ### Cases for MT::Asset::Image |
|---|
| 21 | # object validation |
|---|
| 22 | my $asset = MT::Asset->load({id => 1}); |
|---|
| 23 | isa_ok($asset, 'MT::Asset::Image', 'Is MT::Asset::Image'); |
|---|
| 24 | |
|---|
| 25 | # method validation |
|---|
| 26 | my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); |
|---|
| 27 | my $cache_path = sprintf("%04d/%02d", $year + 1900, $mon + 1); |
|---|
| 28 | # is($asset->class, 'Image', 'class'); |
|---|
| 29 | is($asset->class_label, 'Image', 'class_label'); |
|---|
| 30 | is(($asset->thumbnail_file({Height => 100, Width => 100}))[0], "t/site/assets_c/$cache_path/test-thumb-640x480.jpg", 'thumbnail'); |
|---|
| 31 | is($asset->image_width, 640, 'image_width'); |
|---|
| 32 | is($asset->image_height, 480, 'height'); |
|---|
| 33 | is($asset->as_html, '<form mt:asset-id="1" class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://narnia.na/nana/images/test.jpg">View image</a></form>', 'as_html'); |
|---|
| 34 | is($asset->as_html({popup => 1, popup_asset_id => $asset->id, include => 1}), qq(<form mt:asset-id="1" class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://narnia.na/nana/images/test.jpg" onclick="window.open('http://narnia.na/nana/images/test.jpg','popup','width=640,height=480,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">View image</a></form>), 'as_html_popup'); |
|---|
| 35 | is($asset->as_html({include => 1, wrap_text => 1, align => 'right'}), '<form mt:asset-id="1" class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="Image photo" src="http://narnia.na/nana/images/test.jpg" width="640" height="480" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /></form>', 'as_html_include'); |
|---|
| 36 | |
|---|
| 37 | #metadata validation |
|---|
| 38 | my $meta = $asset->metadata; |
|---|
| 39 | is($meta->{Tags}, 'alpha, beta, gamma', 'metadata - Tags'); |
|---|
| 40 | is($meta->{URL}, 'http://narnia.na/nana/images/test.jpg', 'metadata - URL'); |
|---|
| 41 | is($meta->{Location}, File::Spec->catfile($ENV{MT_HOME}, "t", 'images', 'test.jpg'), 'metadata - Location'); |
|---|
| 42 | is($meta->{name}, "test.jpg", 'metadata - name'); |
|---|
| 43 | is($meta->{class}, 'image', 'metadata - class'); |
|---|
| 44 | is($meta->{ext}, 'jpg', 'metadata - ext'); |
|---|
| 45 | is($meta->{mime_type}, 'image/jpeg', 'metadata - mime_type'); |
|---|
| 46 | is($meta->{duration}, undef, 'metadata - duration'); |
|---|
| 47 | is($meta->{'Actual Dimensions'}, '640 x 480 pixels', 'metadata - Actual Dimensions'); |
|---|
| 48 | |
|---|
| 49 | # copy original image file |
|---|
| 50 | my $orig_file = File::Spec->catfile($ENV{MT_HOME}, "t", 'images', 'test.jpg'); |
|---|
| 51 | my $copy_file = File::Spec->catfile($ENV{MT_HOME}, "t", 'images', 'test_.jpg'); |
|---|
| 52 | copy($orig_file, $copy_file); |
|---|
| 53 | |
|---|
| 54 | # Object creation |
|---|
| 55 | use Data::Dumper; |
|---|
| 56 | my $img_pkg = MT::Asset->class_handler('image'); |
|---|
| 57 | $asset = new $img_pkg; |
|---|
| 58 | isa_ok($asset, 'MT::Asset::Image', 'New object is MT::Asset::Image'); |
|---|
| 59 | $asset->blog_id(1); |
|---|
| 60 | $asset->url('http://narnia.na/nana/images/test_.jpg'); |
|---|
| 61 | $asset->file_path($copy_file); |
|---|
| 62 | $asset->file_name('test_.jpg'); |
|---|
| 63 | $asset->file_ext('jpg'); |
|---|
| 64 | $asset->image_width(640); |
|---|
| 65 | $asset->image_height(480); |
|---|
| 66 | $asset->mime_type('image/jpeg'); |
|---|
| 67 | $asset->label('Image photo'); |
|---|
| 68 | $asset->description('This is a test photo.'); |
|---|
| 69 | $asset->created_by(1); |
|---|
| 70 | $asset->tags('alpha', 'beta', 'gamma'); |
|---|
| 71 | $asset->parent(1); |
|---|
| 72 | $asset->save; |
|---|
| 73 | |
|---|
| 74 | my $asset_id = $asset->id; |
|---|
| 75 | my $valid_asset = MT::Asset->load($asset_id); |
|---|
| 76 | is($valid_asset->class, 'image', 'class'); |
|---|
| 77 | is($valid_asset->blog_id, 1, 'blog_id'); |
|---|
| 78 | is($valid_asset->label, 'Image photo', 'label'); |
|---|
| 79 | is($valid_asset->url, 'http://narnia.na/nana/images/test_.jpg', 'url'); |
|---|
| 80 | is($valid_asset->description, 'This is a test photo.', 'description'); |
|---|
| 81 | is($valid_asset->file_path, $copy_file); |
|---|
| 82 | is($valid_asset->file_name, 'test_.jpg', 'file_name'); |
|---|
| 83 | is($valid_asset->file_ext, 'jpg', 'file_ext'); |
|---|
| 84 | is($valid_asset->mime_type, 'image/jpeg', 'mime_type'); |
|---|
| 85 | is($valid_asset->image_width, 640, 'image_width'); |
|---|
| 86 | is($valid_asset->image_height, 480, 'image_height'); |
|---|
| 87 | is($valid_asset->parent, 1, 'parent'); |
|---|
| 88 | |
|---|
| 89 | # Object remove |
|---|
| 90 | ok($valid_asset->remove, 'remove'); |
|---|
| 91 | |
|---|
| 92 | $valid_asset = MT::Asset->load($asset_id); |
|---|
| 93 | is($valid_asset, undef, 'remove success'); |
|---|
| 94 | ok(!-f $copy_file, "file remove"); |
|---|
| 95 | |
|---|
| 96 | |
|---|
| 97 | ### Cases for MT::Asset |
|---|
| 98 | # object validation |
|---|
| 99 | my $asset_f = MT::Asset->load(2); |
|---|
| 100 | isa_ok($asset_f, 'MT::Asset', 'Is MT::Asset'); |
|---|
| 101 | |
|---|
| 102 | # method validation\ |
|---|
| 103 | is($asset_f->class, 'file', 'class'); |
|---|
| 104 | is($asset_f->class_label, 'Asset', 'class_label'); |
|---|
| 105 | is($asset_f->as_html, '<form mt:asset-id="2" class="mt-enclosure mt-enclosure-file" style="display: inline;"><a href="http://narnia.na/nana/files/test.tmpl">test.tmpl</a></form>', 'as_html'); |
|---|
| 106 | |
|---|
| 107 | #metadata validation |
|---|
| 108 | my $meta_f = $asset_f->metadata; |
|---|
| 109 | is($meta_f->{Tags}, 'beta', 'metadata - Tags'); |
|---|
| 110 | is($meta_f->{URL}, 'http://narnia.na/nana/files/test.tmpl', 'metadata - URL'); |
|---|
| 111 | is($meta_f->{Location}, File::Spec->catfile($ENV{MT_HOME}, "t", 'test.tmpl'), 'metadata - Location'); |
|---|
| 112 | is($meta_f->{name}, "test.tmpl", 'metadata - name'); |
|---|
| 113 | is($meta_f->{class}, 'file', 'metadata - class'); |
|---|
| 114 | is($meta_f->{ext}, 'tmpl', 'metadata - ext'); |
|---|
| 115 | is($meta_f->{mime_type}, 'text/plain', 'metadata - mime_type'); |
|---|
| 116 | is($meta_f->{duration}, undef, 'metadata - duration'); |
|---|
| 117 | |
|---|
| 118 | # copy original image file |
|---|
| 119 | my $orig_file_f = File::Spec->catfile($ENV{MT_HOME}, "t", 'test.tmpl'); |
|---|
| 120 | my $copy_file_f = File::Spec->catfile($ENV{MT_HOME}, "t", 'test_.tmpl'); |
|---|
| 121 | copy($orig_file, $copy_file); |
|---|
| 122 | |
|---|
| 123 | # Object creation |
|---|
| 124 | my $img_pkg_f = MT::Asset->class_handler('File'); |
|---|
| 125 | $asset_f = new $img_pkg_f; |
|---|
| 126 | isa_ok($asset_f, 'MT::Asset', 'New object is MT::Asset'); |
|---|
| 127 | $asset_f->blog_id(1); |
|---|
| 128 | $asset_f->url('http://narnia.na/nana/files/test_.tmpl'); |
|---|
| 129 | $asset_f->file_path($copy_file_f); |
|---|
| 130 | $asset_f->file_name('test_.tmpl'); |
|---|
| 131 | $asset_f->file_ext('tmpl'); |
|---|
| 132 | $asset_f->mime_type('text/plain'); |
|---|
| 133 | $asset_f->label('Test template'); |
|---|
| 134 | $asset_f->description('This is a test template.'); |
|---|
| 135 | $asset_f->created_by(1); |
|---|
| 136 | $asset_f->tags('beta'); |
|---|
| 137 | $asset_f->parent(1); |
|---|
| 138 | $asset_f->save; |
|---|
| 139 | |
|---|
| 140 | my $asset_id_f = $asset_f->id; |
|---|
| 141 | my $valid_asset_f = MT::Asset->load($asset_id_f); |
|---|
| 142 | is($valid_asset_f->class, 'file', 'class'); |
|---|
| 143 | is($valid_asset_f->blog_id, 1, 'blog_id'); |
|---|
| 144 | is($valid_asset_f->label, 'Test template', 'label'); |
|---|
| 145 | is($valid_asset_f->url, 'http://narnia.na/nana/files/test_.tmpl', 'url'); |
|---|
| 146 | is($valid_asset_f->description, 'This is a test template.', 'description'); |
|---|
| 147 | is($valid_asset_f->file_path, $copy_file_f); |
|---|
| 148 | is($valid_asset_f->file_name, 'test_.tmpl', 'file_name'); |
|---|
| 149 | is($valid_asset_f->file_ext, 'tmpl', 'file_ext'); |
|---|
| 150 | is($valid_asset_f->mime_type, 'text/plain', 'mime_type'); |
|---|
| 151 | is($valid_asset_f->parent, 1, 'parent'); |
|---|
| 152 | |
|---|
| 153 | # Object remove |
|---|
| 154 | ok($valid_asset_f->remove, 'remove'); |
|---|
| 155 | |
|---|
| 156 | $valid_asset_f = MT::Asset->load($asset_id_f); |
|---|
| 157 | is($valid_asset_f, undef, 'remove success'); |
|---|
| 158 | ok(!-f $copy_file_f, "file remove"); |
|---|
| 159 | } |
|---|