root/branches/release-40/t/lib/MT/Test.pm @ 2563

Revision 2563, 30.3 kB (checked in by auno, 18 months ago)

More fix for perl test. BugzID:79876

  • 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 { my ($a) = @_; $a ? CORE::time + $_[0] : 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    MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
203    diag "Saved blog";
204
205    require MT::Entry;
206    require MT::Author;
207    my $chuckd = MT::Author->new();
208    $chuckd->set_values({
209        name => 'Chuck D',
210        nickname => 'Chucky Dee', 
211        email => 'chuckd@example.com',
212        url => 'http://chuckd.com/',
213        api_password => 'seecret',
214        auth_type => 'MT',
215    });
216    $chuckd->set_password("bass");
217    $chuckd->type(MT::Author::AUTHOR());
218    $chuckd->id(2);
219    $chuckd->is_superuser(1);
220    $chuckd->save()
221        or die "Couldn't save author record 2: " . $chuckd->errstr;
222    diag "Saved user Chuck D";
223
224    my $bobd = MT::Author->new();
225    $bobd->set_values({
226        name => 'Bob D',
227        nickname => 'Dylan', 
228        email => 'bobd@example.com',
229        auth_type => 'MT',
230    });
231    $bobd->set_password("flute");
232    $bobd->type(MT::Author::AUTHOR());
233    $bobd->id(3);
234    $bobd->save() or die "Couldn't save author record 3: " . $bobd->errstr;
235    diag "Saved user Bob D";
236
237    my $johnd = MT::Author->new();
238    $johnd->set_values({
239        name => 'John Doe',
240        nickname => 'John Doe',
241        email => 'jdoe@doe.com',
242        auth_type => 'TypeKey',
243    });
244    $johnd->type(MT::Author::COMMENTER());
245    $johnd->password('(none)');
246    $johnd->id(4);
247    $johnd->save() or die "Couldn't save author record 4: " . $johnd->errstr;
248    diag "Saved user John Doe";
249
250    my $hiro = MT::Author->new();
251    $hiro->set_values({
252        name => 'Hiro Nakamura',
253        nickname => 'Hiro',
254        email => 'hiro@heroes.com',
255        auth_type => 'MT',
256    });
257    $hiro->type(MT::Author::AUTHOR());
258    $hiro->password('time');
259    $hiro->id(5);
260    $hiro->status(2);
261    $hiro->save() or die "Couldn't save author record 5: " . $hiro->errstr;
262    diag "Saved user Hiro";
263
264    require MT::Role;
265    my ($admin_role, $author_role) = map { MT::Role->load({ name => $_ }) }
266        ('Blog Administrator', 'Author');
267
268    require MT::Association;
269    my $assoc = MT::Association->new();
270    $assoc->author_id($chuckd->id);
271    $assoc->blog_id(1);
272    $assoc->role_id($admin_role->id);
273    $assoc->type(1);
274    $assoc->save();
275
276    $assoc = MT::Association->new();
277    $assoc->author_id($bobd->id);
278    $assoc->blog_id(1);
279    $assoc->role_id($author_role->id);
280    $assoc->type(1);
281    $assoc->save();
282
283    $assoc = MT::Association->new();
284    $assoc->author_id($hiro->id);
285    $assoc->blog_id(1);
286    $assoc->role_id($admin_role->id);
287    $assoc->type(1);
288    $assoc->save();
289
290    # set permission record for johnd commenter on blog 1
291    $johnd->approve(1);
292
293    my $entry = MT::Entry->load(1);
294    # TODO: this test entry is never created; upgrading already adds entry #1.
295    if (!$entry) {
296        $entry = MT::Entry->new();
297        $entry->set_values({
298            blog_id => 1,
299            title => 'A Rainy Day',
300            text => 'On a drizzly day last weekend,',
301            text_more => 'I took my grandpa for a walk.',
302            excerpt => 'A story of a stroll.',
303            keywords => 'keywords',
304            created_on => '19780131074500',
305            authored_on => '19780131074500',
306            modified_on => '19780131074600',
307            authored_on => '19780131074500',
308            author_id => $chuckd->id,
309            pinged_urls => 'http://technorati.com/',
310            allow_comments => 1,
311            allow_pings => 1,
312            status => MT::Entry::RELEASE(),
313        });
314        $entry->id(1);
315        $entry->tags('rain', 'grandpa', 'strolling');
316        $entry->save() or die "Couldn't save entry record 1: ".$entry->errstr;
317        diag "Saved entry #1";
318    }
319    $entry->clear_cache();
320
321    $entry = MT::Entry->load(2);
322    if (!$entry) {
323        $entry = MT::Entry->new();
324        $entry->set_values({
325            blog_id => 1,
326            title => 'A preponderance of evidence',
327            text => 'It is sufficient to say...',
328            text_more => 'I suck at making up test data.',
329            created_on => '19790131074500',
330            authored_on => '19790131074500',
331            modified_on => '19790131074600',
332            authored_on => '19780131074500',
333            author_id => $bobd->id,
334            allow_comments => 1,
335            status => MT::Entry::FUTURE(),
336        });
337        $entry->id(2);
338        $entry->save() or die "Couldn't save entry record 2: ".$entry->errstr;
339        diag "Saved entry #2";
340    }
341    $entry->clear_cache();
342
343    $entry = MT::Entry->load(3);
344    if (!$entry) {
345        $entry = MT::Entry->new();
346        $entry->set_values({
347            blog_id => 1,
348            title => 'Spurious anemones',
349            text => '...are better than the non-spurious',
350            text_more => 'variety.',
351            created_on => '19770131074500',
352            authored_on => '19790131074500',
353            modified_on => '19770131074600',
354            authored_on => '19780131074500',
355            author_id => $chuckd->id,
356            allow_comments => 1,
357            allow_pings => 0,
358            status => MT::Entry::HOLD(),
359        });
360        $entry->id(3);
361        $entry->tags('anemones');
362        $entry->save() or die "Couldn't save entry record 3: ".$entry->errstr;
363        diag "Saved entry #3";
364    }
365    $entry->clear_cache();
366
367    require MT::Trackback;
368    my $tb = MT::Trackback->load(1);
369    if (!$tb) {
370        $tb = new MT::Trackback;
371        $tb->entry_id(1);
372        $tb->blog_id(1);
373        $tb->title("Entry TrackBack Title");
374        $tb->description("Entry TrackBack Description");
375        $tb->category_id(0);
376        $tb->id(1);
377        $tb->save or die "Couldn't save Trackback record 1: " . $tb->errstr;;
378    }
379
380    require MT::TBPing;
381    my $ping = MT::TBPing->load(1);
382    if (!$ping) {
383        $ping = new MT::TBPing;
384        $ping->tb_id(1);
385        $ping->blog_id(1);
386        $ping->ip('127.0.0.1');
387        $ping->title('Foo');
388        $ping->excerpt('Bar');
389        $ping->source_url('http://example.com/');
390        $ping->blog_name("Example Blog");
391        $ping->created_on('20050405000000');
392        $ping->id(1);
393        $ping->visible(1);
394        $ping->save or die "Couldn't save TBPing record 1: " . $ping->errstr;
395        diag "Saved a trackback ping";
396    }
397
398    my @verses = (
399        'Oh, where have you been, my blue-eyed son?
400Oh, where have you been, my darling young one?',
401        'I saw a newborn baby with wild wolves all around it
402I saw a highway of diamonds with nobody on it',
403        'Heard one hundred drummers whose hands were a-blazin\',
404Heard ten thousand whisperin\' and nobody listenin\'',
405        'I met one man who was wounded in love,
406I met another man who was wounded with hatred',
407        'Where hunger is ugly, where souls are forgotten,
408Where black is the color, where none is the number,
409And it\'s a hard, it\'s a hard, it\'s a hard, it\'s a hard,
410It\'s a hard rain\'s a-gonna fall',
411    );
412
413    require MT::Category;
414    my $cat = MT::Category->load({ label => 'foo', blog_id => 1});
415    if (!$cat) {
416        $cat = new MT::Category;
417        $cat->blog_id(1);
418        $cat->label('foo');
419        $cat->description('bar');
420        $cat->author_id($chuckd->id);
421        $cat->parent(0);
422        $cat->id(1);
423        $cat->save or die "Couldn't save category record 1: ". $cat->errstr;
424        diag "Saved category foo";
425    }
426
427    $cat = MT::Category->load({ label => 'bar', blog_id => 1});
428    if (!$cat) {
429        $cat = new MT::Category;
430        $cat->blog_id(1);
431        $cat->label('bar');
432        $cat->description('foo');
433        $cat->author_id($chuckd->id);
434        $cat->parent(0);
435        $cat->id(2);
436        $cat->save or die "Couldn't save category record 2: ". $cat->errstr;
437        diag "Saved category bar";
438    }
439
440    $tb = MT::Trackback->load(2);
441    if (!$tb) {
442        $tb = new MT::Trackback;
443        $tb->title("Category TrackBack Title");
444        $tb->description("Category TrackBack Description");
445        $tb->entry_id(0);
446        $tb->blog_id(1);
447        $tb->category_id(2);
448        $tb->id(2);
449        $tb->save or die "Couldn't save Trackback record 2: " . $tb->errstr;;
450        diag "Saved category bar's trackback target";
451    }
452
453    $cat = MT::Category->load({ label => 'subfoo', blog_id => 1});
454    if (!$cat) {
455        $cat = new MT::Category;
456        $cat->blog_id(1);
457        $cat->label('subfoo');
458        $cat->description('subcat');
459        $cat->author_id($bobd->id);
460        $cat->parent(1);
461        $cat->id(3);
462        $cat->save or die "Couldn't save category record 3: ". $cat->errstr;
463        diag "Saved subcategory subfoo";
464    }
465
466    require MT::Placement;
467    foreach my $i (1..@verses) {
468        $entry = MT::Entry->load($i+3);
469        if (!$entry) {
470            $entry = MT::Entry->new();
471            $entry->set_values({
472                blog_id => 1,
473                title => "Verse $i",
474                text => $verses[$i],
475                author_id => ($i == 3 ? $bobd->id : $chuckd->id),
476                created_on => sprintf("%04d0131074501", $i + 1960),
477                authored_on => sprintf("%04d0131074501", $i + 1960),
478                modified_on => sprintf("%04d0131074601", $i + 1960),
479                authored_on => sprintf("%04d0131074501", $i + 1960),
480                allow_comments => ($i <= 2 ? 0 : 1),
481                status => MT::Entry::RELEASE(),
482            });
483            $entry->id($i+3);
484            if ( $i == 1 || $i == 3 || $i == 5 ) {
485                $entry->tags('verse', 'rain');
486            }
487            else {
488                $entry->tags('verse', 'anemones');
489            }
490            $entry->save()
491                or die "Couldn't save entry record ".($entry->id).": ". $entry->errstr;
492            if ($i == 3) {
493                my $place = new MT::Placement;
494                $place->entry_id($entry->id);
495                $place->blog_id(1);
496                $place->category_id(1);
497                $place->is_primary(1);
498                $place->save
499                    or die "Couldn't save placement record: ".$place->errstr;
500                diag "Placed entry Verse 3 in category foo";
501            }
502            if ($i == 4) {
503                my $place = new MT::Placement;
504                $place->entry_id($entry->id);
505                $place->blog_id(1);
506                $place->category_id(3);
507                $place->is_primary(1);
508                $place->save
509                    or die "Couldn't save placement record: ".$place->errstr;
510                diag "Placed entry Verse 4 in category subfoo";
511            }
512        }
513    }
514
515    # entry id 1 - 1 visible comment
516    # entry id 4 - no comments, commenting is off
517    require MT::Comment;
518    unless (MT::Comment->count({entry_id => 1})) {
519        my $cmt = new MT::Comment();
520        $cmt->set_values({
521            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.',
522            entry_id => 1,
523            author => 'v14GrUH 4 cheep',
524            visible => 1,
525            email => 'jake@fatman.com',
526            url => 'http://fatman.com/',
527            blog_id => 1,
528            ip => '127.0.0.1',
529            created_on => '20040714182800',
530        });
531        $cmt->id(1);
532        $cmt->save() or die "Couldn't save comment record 1: ".$cmt->errstr;
533        diag "Saved comment #1";
534
535        $cmt->id(11);
536        $cmt->text('Comment reply for comment 1');
537        $cmt->author('Comment 11');
538        $cmt->created_on('20040812182900');
539        $cmt->parent_id(1);
540        $cmt->save() or die "Couldn't save comment record 11: ".$cmt->errstr;
541        diag "Saved child comment #11";
542
543        $cmt->id(12);
544        $cmt->text('Comment reply for comment 11');
545        $cmt->author('Comment 12');
546        $cmt->created_on('20040810183000');
547        $cmt->parent_id(11);
548        $cmt->save() or die "Couldn't save comment record 12: ".$cmt->errstr;
549        diag "Saved child comment #12";
550    }
551    # entry id 5 - 1 comment, commenting is off (closed)
552    unless (MT::Comment->count({entry_id => 5})) {
553        my $cmt = new MT::Comment();
554        $cmt->set_values({
555            text => 'Comment for entry 5, visible',
556            entry_id => 5,
557            author => 'Comment 2',
558            visible => 1,
559            email => 'johnd@doe.com',
560            url => 'http://john.doe.com/',
561            commenter_id => $johnd->id,
562            blog_id => 1,
563            ip => '127.0.0.1',
564            created_on => '20040912182800',
565        });
566        $cmt->id(2);
567        $cmt->junk_score(1.5);
568        $cmt->save() or die "Couldn't save comment record 2: ".$cmt->errstr;
569    }
570    # entry id 6 - 3 comment visible, 1 moderated
571    unless (MT::Comment->count({entry_id => 6})) {
572        my $cmt = new MT::Comment();
573        $cmt->set_values({
574            text => 'Comment for entry 6, visible',
575            entry_id => 6,
576            author => 'Comment 3',
577            visible => 1,
578            email => '',
579            url => '',
580            blog_id => 1,
581            ip => '127.0.0.1',
582            created_on => '20040911182800',
583        });
584        $cmt->id(3);
585        $cmt->save() or die "Couldn't save comment record 3: ".$cmt->errstr;
586
587        $cmt->id(4);
588        $cmt->visible(0);
589        $cmt->author('Comment 4');
590        $cmt->text('Comment for entry 6, moderated');
591        $cmt->created_on('20040910182800');
592        $cmt->save() or die "Couldn't save comment record 4: ".$cmt->errstr;
593       
594        $cmt->text("All your comments are belonged to me.");
595        $cmt->commenter_id($chuckd->id);
596        $cmt->visible(1);
597        $cmt->created_on('20040910183000');
598        $cmt->id(14);
599        $cmt->save or die "Couldn't save comment record 1: ".$cmt->errstr;
600
601        $cmt->text("All your comments are belonged to us MT Authors.");
602        $cmt->commenter_id($bobd->id);
603        $cmt->visible(1);
604        $cmt->created_on('20040910182800');
605        $cmt->id(15);
606        $cmt->save or die "Couldn't save comment record 1: ".$cmt->errstr;
607    }
608    # entry id 7 - 0 comment visible, 1 moderated
609    unless (MT::Comment->count({entry_id => 7})) {
610        my $cmt = new MT::Comment();
611        $cmt->set_values({
612            text => 'Comment for entry 7, moderated',
613            entry_id => 7,
614            author => 'Comment 7',
615            visible => 0,
616            email => '',
617            url => '',
618            blog_id => 1,
619            ip => '127.0.0.1',
620            created_on => '20040909182800',
621        });
622        $cmt->id(5);
623        $cmt->save() or die "Couldn't save comment record 5: ".$cmt->errstr;
624    }
625    # entry id 8 - 1 comment visible, 1 moderated, 1 junk
626    unless (MT::Comment->count({entry_id => 8})) {
627        my $cmt = new MT::Comment();
628        $cmt->set_values({
629            text => 'Comment for entry 8, visible',
630            entry_id => 8,
631            author => 'Comment 8',
632            visible => 1,
633            email => '',
634            url => '',
635            blog_id => 1,
636            ip => '127.0.0.1',
637            created_on => '20040614182800',
638        });
639        $cmt->id(6);
640        $cmt->save() or die "Couldn't save comment record 6: ".$cmt->errstr;
641
642        $cmt->id(7);
643        $cmt->visible(0);
644        $cmt->text('Comment for entry 8, moderated');
645        $cmt->author('JD7');
646        $cmt->created_on('20040812182800');
647        $cmt->save() or die "Couldn't save comment record 7: ".$cmt->errstr;
648
649        $cmt->id(8);
650        $cmt->visible(0);
651        $cmt->junk_status(-1);
652        $cmt->text('Comment for entry 8, junk');
653        $cmt->author('JD8');
654        $cmt->created_on('20040810182800');
655        $cmt->save() or die "Couldn't save comment record 8: ".$cmt->errstr;
656    }
657
658    require MT::Template;
659    require MT::TemplateMap;
660
661    my $tmpl = new MT::Template;
662    $tmpl->blog_id(1);
663    $tmpl->name('blog-name');
664    $tmpl->text('<MTBlogName>');
665    $tmpl->type('custom');
666    $tmpl->save or die "Couldn't save template record 1: ".$tmpl->errstr;
667    diag "Saved blog-name template";
668
669    ### Asset
670    use MT::Asset;
671
672    my $img_pkg = MT::Asset->class_handler('image');
673    my $file_pkg = MT::Asset->class_handler('file');
674    my $asset = new $img_pkg;
675    $asset->blog_id(1);
676    $asset->url('http://narnia.na/nana/images/test.jpg');
677    $asset->file_path(File::Spec->catfile($ENV{MT_HOME}, "t", 'images', 'test.jpg'));
678    $asset->file_name('test.jpg');
679    $asset->file_ext('jpg');
680    $asset->image_width(640);
681    diag "Set image asset's width metadata field";
682    $asset->image_height(480);
683    $asset->mime_type('image/jpeg');
684    $asset->label('Image photo');
685    $asset->description('This is a test photo.');
686    $asset->created_by(1);
687    $asset->tags('alpha', 'beta', 'gamma');
688    diag "Tagged image asset";
689    $asset->save or die "Couldn't save asset record 1: " . $asset->errstr;
690    diag "Saved image asset";
691
692    $asset->set_score('unit test', $bobd, 5, 1);
693    $asset->set_score('unit test', $johnd, 3, 1);
694    $asset->set_score('unit test', MT::Author->load(1), 4, 1);
695
696    $asset = new $file_pkg;
697    $asset->blog_id(1);
698    $asset->url('http://narnia.na/nana/files/test.tmpl');
699    $asset->file_path(File::Spec->catfile($ENV{MT_HOME}, "t", 'test.tmpl'));
700    $asset->file_name('test.tmpl');
701    $asset->file_ext('tmpl');
702    $asset->mime_type('text/plain');
703    $asset->label('Template');
704    $asset->description('This is a test template.');
705    $asset->created_by(1);
706    $asset->created_on('19780131074500');
707    $asset->tags('beta');
708    $asset->save or die "Couldn't save file asset record: " . $asset->errstr;
709    diag "Saved file asset";
710
711    $asset->set_score('unit test', $chuckd, 2, 1);
712    $asset->set_score('unit test', $johnd, 3, 1);
713   
714    ## ObjectScore
715    my $e5 = MT::Entry->load(5);
716    $e5->set_score('unit test', $bobd, 5, 1);
717    $e5->set_score('unit test', $johnd, 3, 1);
718    $e5->set_score('unit test', MT::Author->load(1), 4, 1);
719
720    my $e6 = MT::Entry->load(6);
721    $e6->set_score('unit test', $chuckd, 1, 1);
722    $e6->set_score('unit test', $johnd, 1, 1);
723   
724    my $e4 = MT::Entry->load(4);
725    $e4->set_score('unit test', $chuckd, 2, 1);
726    $e4->set_score('unit test', $johnd, 3, 1);
727    diag "Saved scores for entry #4";
728
729    ## Page
730    require MT::Page;
731    my $page = MT::Page->new();
732    $page->set_values({
733        blog_id => 1,
734        title => 'Watching the River Flow',
735        text => 'What the matter with me,',
736        text_more => 'I don\'t have much to say,',
737        keywords => 'no folder',
738        excerpt => 'excerpt',
739        created_on => '19780131074500',
740        authored_on => '19780131074500',
741        modified_on => '19780131074600',
742        author_id => $chuckd->id,
743        status => MT::Entry::RELEASE(),
744    });
745    $page->id(20);
746    $page->tags('river', 'flow', 'watch');
747    $page->save() or die "Couldn't save page record 20: ".$page->errstr;
748
749    require MT::Folder;
750    my $folder = MT::Folder->new();
751    $folder->blog_id(1);
752    $folder->label('info');
753    $folder->description('information');
754    $folder->author_id($chuckd->id);
755    $folder->parent(0);
756    $folder->id(20);
757    $folder->save or die "Could'n sae folder record 20:" . $folder->errstr;
758    diag "Saved folder #20";
759
760    $folder = MT::Folder->new();
761    $folder->blog_id(1);
762    $folder->label('download');
763    $folder->description('download top');
764    $folder->author_id($chuckd->id);
765    $folder->parent(0);
766    $folder->id(21);
767    $folder->save or die "Could'n sae folder record 21:" . $folder->errstr;
768
769    $folder = MT::Folder->new();
770    $folder->blog_id(1);
771    $folder->label('nightly');
772    $folder->description('nightly build');
773    $folder->author_id($chuckd->id);
774    $folder->parent(21);
775    $folder->id(22);
776    $folder->save or die "Could'n sae folder record 22:" . $folder->errstr;
777
778    $page = MT::Page->new();
779    $page->set_values({
780        blog_id => 1,
781        title => 'Page #1',
782        text => 'Wish I was back in the city',
783        text_more => 'Instead of this old bank of sand,',
784        keywords => 'keywords',
785        created_on => '19790131074500',
786        authored_on => '19790131074500',
787        modified_on => '19790131074600',
788        author_id => $chuckd->id,
789        status => MT::Entry::RELEASE(),
790    });
791    $page->id(21);
792    $page->tags('page1', 'page2', 'page3');
793    $page->save() or die "Couldn't save page record 21: ".$page->errstr;
794
795    my $folder_place = new MT::Placement;
796    $folder_place->entry_id(21);
797    $folder_place->blog_id(1);
798    $folder_place->category_id(20);
799    $folder_place->is_primary(1);
800    $folder_place->save
801        or die "Couldn't save placement record: ".$folder_place->errstr;
802
803    $page = MT::Page->new();
804    $page->set_values({
805        blog_id => 1,
806        title => 'Page #2',
807        text => 'With the sub beating down over the chimney tops',
808        text_more => 'And the one I love so close at hand',
809        keywords => 'keywords',
810        created_on => '19800131074500',
811        authored_on => '19800131074500',
812        modified_on => '19800131074600',
813        author_id => $chuckd->id,
814        status => MT::Entry::RELEASE(),
815    });
816    $page->id(22);
817    $page->tags('page2', 'page3');
818    $page->save() or die "Couldn't save page record 22: ".$page->errstr;
819
820    $folder_place = new MT::Placement;
821    $folder_place->entry_id(22);
822    $folder_place->blog_id(1);
823    $folder_place->category_id(21);
824    $folder_place->is_primary(1);
825    $folder_place->save
826        or die "Couldn't save placement record: ".$folder_place->errstr;
827
828    $page = MT::Page->new();
829    $page->set_values({
830        blog_id => 1,
831        title => 'Page #3',
832        text => 'If I had wings and I could fly,',
833        text_more => 'I know where I would go.',
834        keywords => 'keywords',
835        created_on => '19810131074500',
836        authored_on => '19810131074500',
837        modified_on => '19810131074600',
838        author_id => $bobd->id,
839        status => MT::Entry::RELEASE(),
840    });
841    $page->id(23);
842    $page->tags('page3');
843    $page->save() or die "Couldn't save page record 23: ".$page->errstr;
844
845    $folder_place = new MT::Placement;
846    $folder_place->entry_id(23);
847    $folder_place->blog_id(1);
848    $folder_place->category_id(22);
849    $folder_place->is_primary(1);
850    $folder_place->save
851        or die "Couldn't save placement record: ".$folder_place->errstr;
852
853    unless (MT::Comment->count({entry_id => $page->id})) {
854        my $page_cmt = new MT::Comment();
855        $page_cmt->set_values({
856            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.",
857            entry_id => 23,
858            author => 'Steve Jobs',
859            visible => 1,
860            email => 'f@example.com',
861            url => 'http://example.com/',
862            blog_id => 1,
863            ip => '127.0.0.1',
864            created_on => '20040114182800',
865            modified_on => '20040114182800',
866        });
867        $page_cmt->id(13);
868        $page_cmt->save() or die "Couldn't save comment record 1: ".$page_cmt->errstr;
869    }
870
871    my $page_tb = MT::Trackback->new;
872    $page_tb->entry_id($page->id);
873    $page_tb->blog_id(1);
874    $page_tb->title("Page TrackBack Title");
875    $page_tb->description("Page TrackBack Description");
876    $page_tb->category_id(0);
877    $page_tb->id(3);
878    $page_tb->save or die "Couldn't save Trackback record 1: " . $tb->errstr;;
879
880    my $page_ping = MT::TBPing->new;
881    $page_ping->tb_id($page_tb->id);
882    $page_ping->blog_id(1);
883    $page_ping->ip('127.0.0.1');
884    $page_ping->title('Trackbacking to a page');
885    $page_ping->excerpt('Four bridges in the bayarea.  Golden Gate, Bay, San Mateo and Dan Burton.');
886    $page_ping->source_url('http://example.com/');
887    $page_ping->blog_name("Example Blog");
888    $page_ping->created_on('20040101000000');
889    $page_ping->modified_on('20040101000000');
890    $page_ping->visible(1);
891    $page_ping->id(3);
892    $page_ping->save or die "Couldn't save TBPing record 1: " . $ping->errstr;
893
894    MT->instance->rebuild(
895        BlogId => 1,
896        EntryCallback => sub { print STDERR "# Rebuilding entry " . $_[0]->id . "\n" }
897    );
898
899    ### Make ObjectAsset mappings
900    require MT::ObjectAsset;
901    my $map;
902    $entry = MT::Entry->load(1);
903    if ($entry) {
904        $map = new MT::ObjectAsset;
905        $map->blog_id($entry->blog_id);
906        $map->asset_id(1);
907        $map->object_ds($entry->datasource);
908        $map->object_id($entry->id);
909        $map->save;
910    }
911    $page = MT::Page->load(20);
912    if ($entry) {
913        $map = new MT::ObjectAsset;
914        $map->blog_id($page->blog_id);
915        $map->asset_id(2);
916        $map->object_ds($page->datasource);
917        $map->object_id($page->id);
918        $map->save;
919    }
920
921    1;
922}
923
9241;
Note: See TracBrowser for help on using the browser.