root/branches/release-39/t/lib/MT/Test.pm @ 2451

Revision 2451, 30.0 kB (checked in by fumiakiy, 18 months ago)

Added RCO test. Changed comment created date and modified expected results from tests accordingly.

  • Property svn:keywords set to Id Revision
Line 
1package MT::Test;
2
3use strict;
4# Handle cwd = MT_DIR, MT_DIR/t
5use lib 't/lib', 'extlib', 'lib', '../lib', '../extlib';
6use File::Spec;
7use MT;
8
9use Test::More;
10
11BEGIN {
12    # if MT_HOME is not set, set it
13    unless ($ENV{MT_HOME}) {
14        require Cwd;
15        my $cwd = Cwd::getcwd();
16        my @pieces = File::Spec->splitdir($cwd);
17        pop @pieces unless -d 't';
18        $ENV{MT_HOME} = File::Spec->catdir(@pieces);
19    }
20    # if MT_CONFIG is not set, set it
21    if ($ENV{MT_CONFIG}) {
22        if (!File::Spec->file_name_is_absolute($ENV{MT_CONFIG})) {
23            $ENV{MT_CONFIG} = File::Spec->catfile($ENV{MT_HOME}, "t", $ENV{MT_CONFIG});
24        }
25    } else {
26        $ENV{MT_CONFIG} = File::Spec->catfile($ENV{MT_HOME}, "t", "mt.cfg");
27    }
28    chdir $ENV{MT_HOME};
29    my $ds_dir = File::Spec->catdir($ENV{MT_HOME}, "t", "db");
30    if (!-d $ds_dir) {
31        mkdir $ds_dir;
32    }
33}
34
35# Override time and sleep so we can simulate time passing without making
36# test scripts wait for real wall seconds to pass.
37our $CORE_TIME;
38BEGIN {
39    *CORE::GLOBAL::time  = sub { CORE::time };
40    *CORE::GLOBAL::sleep = sub { CORE::sleep };
41}
42
43sub import {
44    my $pkg = shift;
45    foreach my $opt (@_) {
46        if ($opt =~ m{ \A : (.+) \z }xms) {
47            my $command = "init_$1";
48            $pkg->$command() if $pkg->can($command);
49        }
50    }
51}
52
53sub init_cms {
54    my $pkg = shift;
55    my ($cfg) = @_;
56
57    require MT::App::CMS;
58    MT::App::CMS->instance($cfg ? (Config => $cfg) : ());
59}
60
61sub init_time {
62    $CORE_TIME = time;
63   
64    no warnings 'redefine';
65    *CORE::GLOBAL::time  = sub { $CORE_TIME };
66    *CORE::GLOBAL::sleep = sub { $CORE_TIME += shift };
67}
68
69sub init_testdb {
70    my $pkg = shift;
71    # This is a bit of MT::Upgrade magic to prevent the full
72    # instantiation of the MT schema. We force the classes list
73    # to only contain the test 'Foo', 'Bar' classes and neuter
74    # the
75    require MT::Upgrade;
76    # Add our test 'Foo' and 'Bar' classes to the list of
77    # object classes to install.
78    %MT::Upgrade::classes = (foo=>'Foo',bar=>'Bar');
79    #MT::Upgrade->register_class(['Foo', 'Bar']);
80    MT->instance;
81    MT->registry->{object_types}->{foo} = 'Foo';
82    MT->registry->{object_types}->{bar} = 'Bar';
83
84    # Replace the standard seed_database/install_template functions
85    # with stubs since we're not creating a full schema.
86    MT::Upgrade->register_upgrade_function({
87        core_seed_database     => { code => sub { 1 } },
88        core_upgrade_templates => { code => sub { 1 } },
89        core_finish            => { code => sub { 1 } },
90    });
91    $pkg->init_db();
92}
93
94sub init_newdb {
95    my $pkg = shift;
96    my ($cfg) = @_;
97    diag "Initializing database";
98
99    my $mt = MT->instance($cfg ? (Config => $cfg) : ())
100        or die "No MT object " . MT->errstr;
101
102    my $types = MT->registry('object_types');
103    $types->{$_} = MT->model($_) for
104        grep { MT->model($_) }
105        map  { $_ . ':meta' }
106        grep { MT->model($_)->meta_pkg }
107        sort keys %$types;
108    my @classes = map { $types->{$_} } grep { $_ !~ /\./ } sort keys %$types;
109    foreach my $class (@classes) {
110        if (ref($class) eq 'ARRAY') {
111            next; #TODO for now - it won't hurt when we do driver-tests.
112        }
113        elsif (!defined *{ $class . '::__properties' }) {
114            eval '# line ' . __LINE__ . ' ' . __FILE__ . "\n" . 'require '.$class or die $@;
115        }
116    }
117
118    # Clear existing database tables
119    my $driver = MT::Object->driver();
120    foreach my $class (@classes) {
121        if (ref($class) eq 'ARRAY') {
122            next; #TODO for now - it won't hurt when we do driver-tests.
123        }
124        else {
125            if ($driver->dbd->ddl_class->table_exists($class)) {
126                $driver->sql(
127                    $driver->dbd->ddl_class->drop_table_sql($class),
128                );
129                $driver->dbd->ddl_class->drop_sequence($class),
130            }
131        }
132    }
133
134    1;
135}
136
137sub init_upgrade {
138    my $pkg = shift;
139
140    require MT::Upgrade;
141    # Initialize the MT database
142    MT::Upgrade->do_upgrade(
143        Install => 1, 
144        App     => __PACKAGE__, 
145        User    => {},
146        Blog    => {}
147    );
148    eval {
149        # line __LINE__ __FILE__
150        MT::Entry->remove;
151        MT::Comment->remove;
152    };
153    MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
154
155    1;
156}
157
158sub init_db {
159    my $pkg = shift;
160    $pkg->init_newdb(@_) && $pkg->init_upgrade(@_);
161}
162
163sub progress {}
164sub error {
165    my ($x, $msg) = @_;
166    print "ERROR: $msg\n";
167}
168
169sub init_data {
170    my $pkg = shift;
171    diag "Initializing sample data";
172
173    my $blog = MT::Blog->new();
174    $blog->set_values({
175        name => 'none',
176        site_url => 'http://narnia.na/nana/',
177        archive_url => 'http://narnia.na/nana/archives/',
178        site_path => 't/site/',
179        archive_path => 't/site/archives/',
180        archive_type=>'Individual,Monthly,Weekly,Daily,Category,Page',
181        archive_type_preferred => 'Individual',
182        description => "Narnia None Test Blog",
183        custom_dynamic_templates => 'custom',
184        convert_paras => 1,
185        allow_reg_comments => 1,
186        allow_unreg_comments => 0,
187        allow_pings => 1,
188        sort_order_posts => 'descend',
189        sort_order_comments => 'ascend',
190        remote_auth_token => 'token',
191        convert_paras_comments => 1,
192        google_api_key => 'r9Vj5K8PsjEu+OMsNZ/EEKjWmbCeQAv1',
193        cc_license => 'by-nc-sa http://creativecommons.org/licenses/by-nc-sa/2.0/ http://creativecommons.org/images/public/somerights20.gif',
194        server_offset => '-3.5',
195        children_modified_on => '20000101000000',
196        language => 'en_us',
197        file_extension => 'html',
198    });
199    $blog->id(1);
200    $blog->commenter_authenticators('enabled_TypeKey');
201    $blog->save() or die "Couldn't save blog 1: ". $blog->errstr;
202    diag "Saved blog";
203
204    require MT::Entry;
205    require MT::Author;
206    my $chuckd = MT::Author->new();
207    $chuckd->set_values({
208        name => 'Chuck D',
209        nickname => 'Chucky Dee', 
210        email => 'chuckd@example.com',
211        url => 'http://chuckd.com/',
212        api_password => 'seecret',
213        auth_type => 'MT',
214    });
215    $chuckd->set_password("bass");
216    $chuckd->type(MT::Author::AUTHOR());
217    $chuckd->id(2);
218    $chuckd->is_superuser(1);
219    $chuckd->save()
220        or die "Couldn't save author record 2: " . $chuckd->errstr;
221    diag "Saved user Chuck D";
222
223    my $bobd = MT::Author->new();
224    $bobd->set_values({
225        name => 'Bob D',
226        nickname => 'Dylan', 
227        email => 'bobd@example.com',
228        auth_type => 'MT',
229    });
230    $bobd->set_password("flute");
231    $bobd->type(MT::Author::AUTHOR());
232    $bobd->id(3);
233    $bobd->save() or die "Couldn't save author record 3: " . $bobd->errstr;
234    diag "Saved user Bob D";
235
236    my $johnd = MT::Author->new();
237    $johnd->set_values({
238        name => 'John Doe',
239        nickname => 'John Doe',
240        email => 'jdoe@doe.com',
241        auth_type => 'TypeKey',
242    });
243    $johnd->type(MT::Author::COMMENTER());
244    $johnd->password('(none)');
245    $johnd->id(4);
246    $johnd->save() or die "Couldn't save author record 4: " . $johnd->errstr;
247    diag "Saved user John Doe";
248
249    my $hiro = MT::Author->new();
250    $hiro->set_values({
251        name => 'Hiro Nakamura',
252        nickname => 'Hiro',
253        email => 'hiro@heroes.com',
254        auth_type => 'MT',
255    });
256    $hiro->type(MT::Author::AUTHOR());
257    $hiro->password('time');
258    $hiro->id(5);
259    $hiro->status(2);
260    $hiro->save() or die "Couldn't save author record 5: " . $hiro->errstr;
261    diag "Saved user Hiro";
262
263    require MT::Role;
264    my ($admin_role, $author_role) = map { MT::Role->load({ name => $_ }) }
265        ('Blog Administrator', 'Author');
266
267    require MT::Association;
268    my $assoc = MT::Association->new();
269    $assoc->author_id($chuckd->id);
270    $assoc->blog_id(1);
271    $assoc->role_id($admin_role->id);
272    $assoc->type(1);
273    $assoc->save();
274
275    $assoc = MT::Association->new();
276    $assoc->author_id($bobd->id);
277    $assoc->blog_id(1);
278    $assoc->role_id($author_role->id);
279    $assoc->type(1);
280    $assoc->save();
281
282    $assoc = MT::Association->new();
283    $assoc->author_id($hiro->id);
284    $assoc->blog_id(1);
285    $assoc->role_id($admin_role->id);
286    $assoc->type(1);
287    $assoc->save();
288
289    # set permission record for johnd commenter on blog 1
290    $johnd->approve(1);
291
292    my $entry = MT::Entry->load(1);
293    # TODO: this test entry is never created; upgrading already adds entry #1.
294    if (!$entry) {
295        $entry = MT::Entry->new();
296        $entry->set_values({
297            blog_id => 1,
298            title => 'A Rainy Day',
299            text => 'On a drizzly day last weekend,',
300            text_more => 'I took my grandpa for a walk.',
301            excerpt => 'A story of a stroll.',
302            keywords => 'keywords',
303            created_on => '19780131074500',
304            authored_on => '19780131074500',
305            modified_on => '19780131074600',
306            authored_on => '19780131074500',
307            author_id => $chuckd->id,
308            pinged_urls => 'http://technorati.com/',
309            allow_comments => 1,
310            allow_pings => 1,
311            status => MT::Entry::RELEASE(),
312        });
313        $entry->id(1);
314        $entry->tags('rain', 'grandpa', 'strolling');
315        $entry->save() or die "Couldn't save entry record 1: ".$entry->errstr;
316        diag "Saved entry #1";
317    }
318
319    $entry = MT::Entry->load(2);
320    if (!$entry) {
321        $entry = MT::Entry->new();
322        $entry->set_values({
323            blog_id => 1,
324            title => 'A preponderance of evidence',
325            text => 'It is sufficient to say...',
326            text_more => 'I suck at making up test data.',
327            created_on => '19790131074500',
328            authored_on => '19790131074500',
329            modified_on => '19790131074600',
330            authored_on => '19780131074500',
331            author_id => $bobd->id,
332            allow_comments => 1,
333            status => MT::Entry::FUTURE(),
334        });
335        $entry->id(2);
336        $entry->save() or die "Couldn't save entry record 2: ".$entry->errstr;
337        diag "Saved entry #2";
338    }
339
340    $entry = MT::Entry->load(3);
341    if (!$entry) {
342        $entry = MT::Entry->new();
343        $entry->set_values({
344            blog_id => 1,
345            title => 'Spurious anemones',
346            text => '...are better than the non-spurious',
347            text_more => 'variety.',
348            created_on => '19770131074500',
349            authored_on => '19790131074500',
350            modified_on => '19770131074600',
351            authored_on => '19780131074500',
352            author_id => $chuckd->id,
353            allow_comments => 1,
354            allow_pings => 0,
355            status => MT::Entry::HOLD(),
356        });
357        $entry->id(3);
358        $entry->tags('anemones');
359        $entry->save() or die "Couldn't save entry record 3: ".$entry->errstr;
360        diag "Saved entry #3";
361    }
362
363    require MT::Trackback;
364    my $tb = MT::Trackback->load(1);
365    if (!$tb) {
366        $tb = new MT::Trackback;
367        $tb->entry_id(1);
368        $tb->blog_id(1);
369        $tb->title("Entry TrackBack Title");
370        $tb->description("Entry TrackBack Description");
371        $tb->category_id(0);
372        $tb->id(1);
373        $tb->save or die "Couldn't save Trackback record 1: " . $tb->errstr;;
374    }
375
376    require MT::TBPing;
377    my $ping = MT::TBPing->load(1);
378    if (!$ping) {
379        $ping = new MT::TBPing;
380        $ping->tb_id(1);
381        $ping->blog_id(1);
382        $ping->ip('127.0.0.1');
383        $ping->title('Foo');
384        $ping->excerpt('Bar');
385        $ping->source_url('http://example.com/');
386        $ping->blog_name("Example Blog");
387        $ping->created_on('20050405000000');
388        $ping->id(1);
389        $ping->visible(1);
390        $ping->save or die "Couldn't save TBPing record 1: " . $ping->errstr;
391        diag "Saved a trackback ping";
392    }
393
394    my @verses = (
395        'Oh, where have you been, my blue-eyed son?
396Oh, where have you been, my darling young one?',
397        'I saw a newborn baby with wild wolves all around it
398I saw a highway of diamonds with nobody on it',
399        'Heard one hundred drummers whose hands were a-blazin\',
400Heard ten thousand whisperin\' and nobody listenin\'',
401        'I met one man who was wounded in love,
402I met another man who was wounded with hatred',
403        'Where hunger is ugly, where souls are forgotten,
404Where black is the color, where none is the number,
405And it\'s a hard, it\'s a hard, it\'s a hard, it\'s a hard,
406It\'s a hard rain\'s a-gonna fall',
407    );
408
409    require MT::Category;
410    my $cat = MT::Category->load({ label => 'foo', blog_id => 1});
411    if (!$cat) {
412        $cat = new MT::Category;
413        $cat->blog_id(1);
414        $cat->label('foo');
415        $cat->description('bar');
416        $cat->author_id($chuckd->id);
417        $cat->parent(0);
418        $cat->id(1);
419        $cat->save or die "Couldn't save category record 1: ". $cat->errstr;
420        diag "Saved category foo";
421    }
422
423    $cat = MT::Category->load({ label => 'bar', blog_id => 1});
424    if (!$cat) {
425        $cat = new MT::Category;
426        $cat->blog_id(1);
427        $cat->label('bar');
428        $cat->description('foo');
429        $cat->author_id($chuckd->id);
430        $cat->parent(0);
431        $cat->id(2);
432        $cat->save or die "Couldn't save category record 2: ". $cat->errstr;
433        diag "Saved category bar";
434    }
435
436    $tb = MT::Trackback->load(2);
437    if (!$tb) {
438        $tb = new MT::Trackback;
439        $tb->title("Category TrackBack Title");
440        $tb->description("Category TrackBack Description");
441        $tb->entry_id(0);
442        $tb->blog_id(1);
443        $tb->category_id(2);
444        $tb->id(2);
445        $tb->save or die "Couldn't save Trackback record 2: " . $tb->errstr;;
446        diag "Saved category bar's trackback target";
447    }
448
449    $cat = MT::Category->load({ label => 'subfoo', blog_id => 1});
450    if (!$cat) {
451        $cat = new MT::Category;
452        $cat->blog_id(1);
453        $cat->label('subfoo');
454        $cat->description('subcat');
455        $cat->author_id($bobd->id);
456        $cat->parent(1);
457        $cat->id(3);
458        $cat->save or die "Couldn't save category record 3: ". $cat->errstr;
459        diag "Saved subcategory subfoo";
460    }
461
462    require MT::Placement;
463    foreach my $i (1..@verses) {
464        $entry = MT::Entry->load($i+3);
465        if (!$entry) {
466            $entry = MT::Entry->new();
467            $entry->set_values({
468                blog_id => 1,
469                title => "Verse $i",
470                text => $verses[$i],
471                author_id => ($i == 3 ? $bobd->id : $chuckd->id),
472                created_on => sprintf("%04d0131074501", $i + 1960),
473                authored_on => sprintf("%04d0131074501", $i + 1960),
474                modified_on => sprintf("%04d0131074601", $i + 1960),
475                authored_on => sprintf("%04d0131074501", $i + 1960),
476                allow_comments => ($i <= 2 ? 0 : 1),
477                status => MT::Entry::RELEASE(),
478            });
479            $entry->id($i+3);
480            if ( $i == 1 || $i == 3 || $i == 5 ) {
481                $entry->tags('verse', 'rain');
482            }
483            else {
484                $entry->tags('verse', 'anemones');
485            }
486            $entry->save()
487                or die "Couldn't save entry record ".($entry->id).": ". $entry->errstr;
488            if ($i == 3) {
489                my $place = new MT::Placement;
490                $place->entry_id($entry->id);
491                $place->blog_id(1);
492                $place->category_id(1);
493                $place->is_primary(1);
494                $place->save
495                    or die "Couldn't save placement record: ".$place->errstr;
496                diag "Placed entry Verse 3 in category foo";
497            }
498            if ($i == 4) {
499                my $place = new MT::Placement;
500                $place->entry_id($entry->id);
501                $place->blog_id(1);
502                $place->category_id(3);
503                $place->is_primary(1);
504                $place->save
505                    or die "Couldn't save placement record: ".$place->errstr;
506                diag "Placed entry Verse 4 in category subfoo";
507            }
508        }
509    }
510
511    # entry id 1 - 1 visible comment
512    # entry id 4 - no comments, commenting is off
513    require MT::Comment;
514    unless (MT::Comment->count({entry_id => 1})) {
515        my $cmt = new MT::Comment();
516        $cmt->set_values({
517            text => 'Postmodern false consciousness has always been firmly rooted in post-Freudian Lacanian neo-Marxist bojangles. Needless to say, this quickly and asymptotically approches a purpletacular jouissance of etic jumpinmypants.',
518            entry_id => 1,
519            author => 'v14GrUH 4 cheep',
520            visible => 1,
521            email => 'jake@fatman.com',
522            url => 'http://fatman.com/',
523            blog_id => 1,
524            ip => '127.0.0.1',
525            created_on => '20040714182800',
526        });
527        $cmt->id(1);
528        $cmt->save() or die "Couldn't save comment record 1: ".$cmt->errstr;
529        diag "Saved comment #1";
530
531        $cmt->id(11);
532        $cmt->text('Comment reply for comment 1');
533        $cmt->author('Comment 11');
534        $cmt->created_on('20040812182900');
535        $cmt->parent_id(1);
536        $cmt->save() or die "Couldn't save comment record 11: ".$cmt->errstr;
537        diag "Saved child comment #11";
538
539        $cmt->id(12);
540        $cmt->text('Comment reply for comment 11');
541        $cmt->author('Comment 12');
542        $cmt->created_on('20040810183000');
543        $cmt->parent_id(11);
544        $cmt->save() or die "Couldn't save comment record 12: ".$cmt->errstr;
545        diag "Saved child comment #12";
546    }
547    # entry id 5 - 1 comment, commenting is off (closed)
548    unless (MT::Comment->count({entry_id => 5})) {
549        my $cmt = new MT::Comment();
550        $cmt->set_values({
551            text => 'Comment for entry 5, visible',
552            entry_id => 5,
553            author => 'Comment 2',
554            visible => 1,
555            email => 'johnd@doe.com',
556            url => 'http://john.doe.com/',
557            commenter_id => $johnd->id,
558            blog_id => 1,
559            ip => '127.0.0.1',
560            created_on => '20040912182800',
561        });
562        $cmt->id(2);
563        $cmt->junk_score(1.5);
564        $cmt->save() or die "Couldn't save comment record 2: ".$cmt->errstr;
565    }
566    # entry id 6 - 3 comment visible, 1 moderated
567    unless (MT::Comment->count({entry_id => 6})) {
568        my $cmt = new MT::Comment();
569        $cmt->set_values({
570            text => 'Comment for entry 6, visible',
571            entry_id => 6,
572            author => 'Comment 3',
573            visible => 1,
574            email => '',
575            url => '',
576            blog_id => 1,
577            ip => '127.0.0.1',
578            created_on => '20040911182800',
579        });
580        $cmt->id(3);
581        $cmt->save() or die "Couldn't save comment record 3: ".$cmt->errstr;
582
583        $cmt->id(4);
584        $cmt->visible(0);
585        $cmt->author('Comment 4');
586        $cmt->text('Comment for entry 6, moderated');
587        $cmt->created_on('20040910182800');
588        $cmt->save() or die "Couldn't save comment record 4: ".$cmt->errstr;
589       
590        $cmt->text("All your comments are belonged to me.");
591        $cmt->commenter_id($chuckd->id);
592        $cmt->visible(1);
593        $cmt->id(14);
594        $cmt->save or die "Couldn't save comment record 1: ".$cmt->errstr;
595
596        $cmt->text("All your comments are belonged to us MT Authors.");
597        $cmt->commenter_id($bobd->id);
598        $cmt->visible(1);
599        $cmt->id(15);
600        $cmt->save or die "Couldn't save comment record 1: ".$cmt->errstr;
601    }
602    # entry id 7 - 0 comment visible, 1 moderated
603    unless (MT::Comment->count({entry_id => 7})) {
604        my $cmt = new MT::Comment();
605        $cmt->set_values({
606            text => 'Comment for entry 7, moderated',
607            entry_id => 7,
608            author => 'Comment 7',
609            visible => 0,
610            email => '',
611            url => '',
612            blog_id => 1,
613            ip => '127.0.0.1',
614            created_on => '20040909182800',
615        });
616        $cmt->id(5);
617        $cmt->save() or die "Couldn't save comment record 5: ".$cmt->errstr;
618    }
619    # entry id 8 - 1 comment visible, 1 moderated, 1 junk
620    unless (MT::Comment->count({entry_id => 8})) {
621        my $cmt = new MT::Comment();
622        $cmt->set_values({
623            text => 'Comment for entry 8, visible',
624            entry_id => 8,
625            author => 'Comment 8',
626            visible => 1,
627            email => '',
628            url => '',
629            blog_id => 1,
630            ip => '127.0.0.1',
631            created_on => '20040614182800',
632        });
633        $cmt->id(6);
634        $cmt->save() or die "Couldn't save comment record 6: ".$cmt->errstr;
635
636        $cmt->id(7);
637        $cmt->visible(0);
638        $cmt->text('Comment for entry 8, moderated');
639        $cmt->author('JD7');
640        $cmt->created_on('20040812182800');
641        $cmt->save() or die "Couldn't save comment record 7: ".$cmt->errstr;
642
643        $cmt->id(8);
644        $cmt->visible(0);
645        $cmt->junk_status(-1);
646        $cmt->text('Comment for entry 8, junk');
647        $cmt->author('JD8');
648        $cmt->created_on('20040810182800');
649        $cmt->save() or die "Couldn't save comment record 8: ".$cmt->errstr;
650    }
651
652    require MT::Template;
653    require MT::TemplateMap;
654
655    my $tmpl = new MT::Template;
656    $tmpl->blog_id(1);
657    $tmpl->name('blog-name');
658    $tmpl->text('<MTBlogName>');
659    $tmpl->type('custom');
660    $tmpl->save or die "Couldn't save template record 1: ".$tmpl->errstr;
661    diag "Saved blog-name template";
662
663    ### Asset
664    use MT::Asset;
665
666    my $img_pkg = MT::Asset->class_handler('image');
667    my $file_pkg = MT::Asset->class_handler('file');
668    my $asset = new $img_pkg;
669    $asset->blog_id(1);
670    $asset->url('http://narnia.na/nana/images/test.jpg');
671    $asset->file_path(File::Spec->catfile($ENV{MT_HOME}, "t", 'images', 'test.jpg'));
672    $asset->file_name('test.jpg');
673    $asset->file_ext('jpg');
674    $asset->image_width(640);
675    diag "Set image asset's width metadata field";
676    $asset->image_height(480);
677    $asset->mime_type('image/jpeg');
678    $asset->label('Image photo');
679    $asset->description('This is a test photo.');
680    $asset->created_by(1);
681    $asset->tags('alpha', 'beta', 'gamma');
682    diag "Tagged image asset";
683    $asset->save or die "Couldn't save asset record 1: " . $asset->errstr;
684    diag "Saved image asset";
685
686    $asset->set_score('unit test', $bobd, 5, 1);
687    $asset->set_score('unit test', $johnd, 3, 1);
688    $asset->set_score('unit test', MT::Author->load(1), 4, 1);
689
690    $asset = new $file_pkg;
691    $asset->blog_id(1);
692    $asset->url('http://narnia.na/nana/files/test.tmpl');
693    $asset->file_path(File::Spec->catfile($ENV{MT_HOME}, "t", 'test.tmpl'));
694    $asset->file_name('test.tmpl');
695    $asset->file_ext('tmpl');
696    $asset->mime_type('text/plain');
697    $asset->label('Template');
698    $asset->description('This is a test template.');
699    $asset->created_by(1);
700    $asset->created_on('19780131074500');
701    $asset->tags('beta');
702    $asset->save or die "Couldn't save file asset record: " . $asset->errstr;
703    diag "Saved file asset";
704
705    $asset->set_score('unit test', $chuckd, 2, 1);
706    $asset->set_score('unit test', $johnd, 3, 1);
707   
708    ## ObjectScore
709    my $e5 = MT::Entry->load(5);
710    $e5->set_score('unit test', $bobd, 5, 1);
711    $e5->set_score('unit test', $johnd, 3, 1);
712    $e5->set_score('unit test', MT::Author->load(1), 4, 1);
713
714    my $e6 = MT::Entry->load(6);
715    $e6->set_score('unit test', $chuckd, 1, 1);
716    $e6->set_score('unit test', $johnd, 1, 1);
717   
718    my $e4 = MT::Entry->load(4);
719    $e4->set_score('unit test', $chuckd, 2, 1);
720    $e4->set_score('unit test', $johnd, 3, 1);
721    diag "Saved scores for entry #4";
722
723    ## Page
724    require MT::Page;
725    my $page = MT::Page->new();
726    $page->set_values({
727        blog_id => 1,
728        title => 'Watching the River Flow',
729        text => 'What the matter with me,',
730        text_more => 'I don\'t have much to say,',
731        keywords => 'no folder',
732        excerpt => 'excerpt',
733        created_on => '19780131074500',
734        authored_on => '19780131074500',
735        modified_on => '19780131074600',
736        author_id => $chuckd->id,
737        status => MT::Entry::RELEASE(),
738    });
739    $page->id(20);
740    $page->tags('river', 'flow', 'watch');
741    $page->save() or die "Couldn't save page record 20: ".$page->errstr;
742
743    require MT::Folder;
744    my $folder = MT::Folder->new();
745    $folder->blog_id(1);
746    $folder->label('info');
747    $folder->description('information');
748    $folder->author_id($chuckd->id);
749    $folder->parent(0);
750    $folder->id(20);
751    $folder->save or die "Could'n sae folder record 20:" . $folder->errstr;
752    diag "Saved folder #20";
753
754    $folder = MT::Folder->new();
755    $folder->blog_id(1);
756    $folder->label('download');
757    $folder->description('download top');
758    $folder->author_id($chuckd->id);
759    $folder->parent(0);
760    $folder->id(21);
761    $folder->save or die "Could'n sae folder record 21:" . $folder->errstr;
762
763    $folder = MT::Folder->new();
764    $folder->blog_id(1);
765    $folder->label('nightly');
766    $folder->description('nightly build');
767    $folder->author_id($chuckd->id);
768    $folder->parent(21);
769    $folder->id(22);
770    $folder->save or die "Could'n sae folder record 22:" . $folder->errstr;
771
772    $page = MT::Page->new();
773    $page->set_values({
774        blog_id => 1,
775        title => 'Page #1',
776        text => 'Wish I was back in the city',
777        text_more => 'Instead of this old bank of sand,',
778        keywords => 'keywords',
779        created_on => '19790131074500',
780        authored_on => '19790131074500',
781        modified_on => '19790131074600',
782        author_id => $chuckd->id,
783        status => MT::Entry::RELEASE(),
784    });
785    $page->id(21);
786    $page->tags('page1', 'page2', 'page3');
787    $page->save() or die "Couldn't save page record 21: ".$page->errstr;
788
789    my $folder_place = new MT::Placement;
790    $folder_place->entry_id(21);
791    $folder_place->blog_id(1);
792    $folder_place->category_id(20);
793    $folder_place->is_primary(1);
794    $folder_place->save
795        or die "Couldn't save placement record: ".$folder_place->errstr;
796
797    $page = MT::Page->new();
798    $page->set_values({
799        blog_id => 1,
800        title => 'Page #2',
801        text => 'With the sub beating down over the chimney tops',
802        text_more => 'And the one I love so close at hand',
803        keywords => 'keywords',
804        created_on => '19800131074500',
805        authored_on => '19800131074500',
806        modified_on => '19800131074600',
807        author_id => $chuckd->id,
808        status => MT::Entry::RELEASE(),
809    });
810    $page->id(22);
811    $page->tags('page2', 'page3');
812    $page->save() or die "Couldn't save page record 22: ".$page->errstr;
813
814    $folder_place = new MT::Placement;
815    $folder_place->entry_id(22);
816    $folder_place->blog_id(1);
817    $folder_place->category_id(21);
818    $folder_place->is_primary(1);
819    $folder_place->save
820        or die "Couldn't save placement record: ".$folder_place->errstr;
821
822    $page = MT::Page->new();
823    $page->set_values({
824        blog_id => 1,
825        title => 'Page #3',
826        text => 'If I had wings and I could fly,',
827        text_more => 'I know where I would go.',
828        keywords => 'keywords',
829        created_on => '19810131074500',
830        authored_on => '19810131074500',
831        modified_on => '19810131074600',
832        author_id => $bobd->id,
833        status => MT::Entry::RELEASE(),
834    });
835    $page->id(23);
836    $page->tags('page3');
837    $page->save() or die "Couldn't save page record 23: ".$page->errstr;
838
839    $folder_place = new MT::Placement;
840    $folder_place->entry_id(23);
841    $folder_place->blog_id(1);
842    $folder_place->category_id(22);
843    $folder_place->is_primary(1);
844    $folder_place->save
845        or die "Couldn't save placement record: ".$folder_place->errstr;
846
847    unless (MT::Comment->count({entry_id => $page->id})) {
848        my $page_cmt = new MT::Comment();
849        $page_cmt->set_values({
850            text => "Your time is limited, so don't waste it living someone else's life. Don't be trapped by dogma - which is living with the results of other people's thinking. Don't let the noise of others' opinions drown out your own inner voice. And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.",
851            entry_id => 23,
852            author => 'Steve Jobs',
853            visible => 1,
854            email => 'f@example.com',
855            url => 'http://example.com/',
856            blog_id => 1,
857            ip => '127.0.0.1',
858            created_on => '20040114182800',
859            modified_on => '20040114182800',
860        });
861        $page_cmt->id(13);
862        $page_cmt->save() or die "Couldn't save comment record 1: ".$page_cmt->errstr;
863    }
864
865    my $page_tb = MT::Trackback->new;
866    $page_tb->entry_id($page->id);
867    $page_tb->blog_id(1);
868    $page_tb->title("Page TrackBack Title");
869    $page_tb->description("Page TrackBack Description");
870    $page_tb->category_id(0);
871    $page_tb->id(3);
872    $page_tb->save or die "Couldn't save Trackback record 1: " . $tb->errstr;;
873
874    my $page_ping = MT::TBPing->new;
875    $page_ping->tb_id($page_tb->id);
876    $page_ping->blog_id(1);
877    $page_ping->ip('127.0.0.1');
878    $page_ping->title('Trackbacking to a page');
879    $page_ping->excerpt('Four bridges in the bayarea.  Golden Gate, Bay, San Mateo and Dan Burton.');
880    $page_ping->source_url('http://example.com/');
881    $page_ping->blog_name("Example Blog");
882    $page_ping->created_on('20040101000000');
883    $page_ping->modified_on('20040101000000');
884    $page_ping->visible(1);
885    $page_ping->id(3);
886    $page_ping->save or die "Couldn't save TBPing record 1: " . $ping->errstr;
887
888    MT->instance->rebuild(
889        BlogId => 1,
890        EntryCallback => sub { print STDERR "# Rebuilding entry " . $_[0]->id . "\n" }
891    );
892
893    ### Make ObjectAsset mappings
894    require MT::ObjectAsset;
895    my $map;
896    $entry = MT::Entry->load(1);
897    if ($entry) {
898        $map = new MT::ObjectAsset;
899        $map->blog_id($entry->blog_id);
900        $map->asset_id(1);
901        $map->object_ds($entry->datasource);
902        $map->object_id($entry->id);
903        $map->save;
904    }
905    $page = MT::Page->load(20);
906    if ($entry) {
907        $map = new MT::ObjectAsset;
908        $map->blog_id($page->blog_id);
909        $map->asset_id(2);
910        $map->object_ds($page->datasource);
911        $map->object_id($page->id);
912        $map->save;
913    }
914
915    1;
916}
917
9181;
Note: See TracBrowser for help on using the browser.