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

Revision 2530, 30.2 kB (checked in by auno, 18 months ago)

Fixed to work test properly. BugzID:79876
* fixed some expected data
* clear cache data and not to set cache data
* fixed mtcomments lastn order

  • 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    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->id(14);
598        $cmt->save or die "Couldn't save comment record 1: ".$cmt->errstr;
599
600        $cmt->text("All your comments are belonged to us MT Authors.");
601        $cmt->commenter_id($bobd->id);
602        $cmt->visible(1);
603        $cmt->id(15);
604        $cmt->save or die "Couldn't save comment record 1: ".$cmt->errstr;
605    }
606    # entry id 7 - 0 comment visible, 1 moderated
607    unless (MT::Comment->count({entry_id => 7})) {
608        my $cmt = new MT::Comment();
609        $cmt->set_values({
610            text => 'Comment for entry 7, moderated',
611            entry_id => 7,
612            author => 'Comment 7',
613            visible => 0,
614            email => '',
615            url => '',
616            blog_id => 1,
617            ip => '127.0.0.1',
618            created_on => '20040909182800',
619        });
620        $cmt->id(5);
621        $cmt->save() or die "Couldn't save comment record 5: ".$cmt->errstr;
622    }
623    # entry id 8 - 1 comment visible, 1 moderated, 1 junk
624    unless (MT::Comment->count({entry_id => 8})) {
625        my $cmt = new MT::Comment();
626        $cmt->set_values({
627            text => 'Comment for entry 8, visible',
628            entry_id => 8,
629            author => 'Comment 8',
630            visible => 1,
631            email => '',
632            url => '',
633            blog_id => 1,
634            ip => '127.0.0.1',
635            created_on => '20040614182800',
636        });
637        $cmt->id(6);
638        $cmt->save() or die "Couldn't save comment record 6: ".$cmt->errstr;
639
640        $cmt->id(7);
641        $cmt->visible(0);
642        $cmt->text('Comment for entry 8, moderated');
643        $cmt->author('JD7');
644        $cmt->created_on('20040812182800');
645        $cmt->save() or die "Couldn't save comment record 7: ".$cmt->errstr;
646
647        $cmt->id(8);
648        $cmt->visible(0);
649        $cmt->junk_status(-1);
650        $cmt->text('Comment for entry 8, junk');
651        $cmt->author('JD8');
652        $cmt->created_on('20040810182800');
653        $cmt->save() or die "Couldn't save comment record 8: ".$cmt->errstr;
654    }
655
656    require MT::Template;
657    require MT::TemplateMap;
658
659    my $tmpl = new MT::Template;
660    $tmpl->blog_id(1);
661    $tmpl->name('blog-name');
662    $tmpl->text('<MTBlogName>');
663    $tmpl->type('custom');
664    $tmpl->save or die "Couldn't save template record 1: ".$tmpl->errstr;
665    diag "Saved blog-name template";
666
667    ### Asset
668    use MT::Asset;
669
670    my $img_pkg = MT::Asset->class_handler('image');
671    my $file_pkg = MT::Asset->class_handler('file');
672    my $asset = new $img_pkg;
673    $asset->blog_id(1);
674    $asset->url('http://narnia.na/nana/images/test.jpg');
675    $asset->file_path(File::Spec->catfile($ENV{MT_HOME}, "t", 'images', 'test.jpg'));
676    $asset->file_name('test.jpg');
677    $asset->file_ext('jpg');
678    $asset->image_width(640);
679    diag "Set image asset's width metadata field";
680    $asset->image_height(480);
681    $asset->mime_type('image/jpeg');
682    $asset->label('Image photo');
683    $asset->description('This is a test photo.');
684    $asset->created_by(1);
685    $asset->tags('alpha', 'beta', 'gamma');
686    diag "Tagged image asset";
687    $asset->save or die "Couldn't save asset record 1: " . $asset->errstr;
688    diag "Saved image asset";
689
690    $asset->set_score('unit test', $bobd, 5, 1);
691    $asset->set_score('unit test', $johnd, 3, 1);
692    $asset->set_score('unit test', MT::Author->load(1), 4, 1);
693
694    $asset = new $file_pkg;
695    $asset->blog_id(1);
696    $asset->url('http://narnia.na/nana/files/test.tmpl');
697    $asset->file_path(File::Spec->catfile($ENV{MT_HOME}, "t", 'test.tmpl'));
698    $asset->file_name('test.tmpl');
699    $asset->file_ext('tmpl');
700    $asset->mime_type('text/plain');
701    $asset->label('Template');
702    $asset->description('This is a test template.');
703    $asset->created_by(1);
704    $asset->created_on('19780131074500');
705    $asset->tags('beta');
706    $asset->save or die "Couldn't save file asset record: " . $asset->errstr;
707    diag "Saved file asset";
708
709    $asset->set_score('unit test', $chuckd, 2, 1);
710    $asset->set_score('unit test', $johnd, 3, 1);
711   
712    ## ObjectScore
713    my $e5 = MT::Entry->load(5);
714    $e5->set_score('unit test', $bobd, 5, 1);
715    $e5->set_score('unit test', $johnd, 3, 1);
716    $e5->set_score('unit test', MT::Author->load(1), 4, 1);
717
718    my $e6 = MT::Entry->load(6);
719    $e6->set_score('unit test', $chuckd, 1, 1);
720    $e6->set_score('unit test', $johnd, 1, 1);
721   
722    my $e4 = MT::Entry->load(4);
723    $e4->set_score('unit test', $chuckd, 2, 1);
724    $e4->set_score('unit test', $johnd, 3, 1);
725    diag "Saved scores for entry #4";
726
727    ## Page
728    require MT::Page;
729    my $page = MT::Page->new();
730    $page->set_values({
731        blog_id => 1,
732        title => 'Watching the River Flow',
733        text => 'What the matter with me,',
734        text_more => 'I don\'t have much to say,',
735        keywords => 'no folder',
736        excerpt => 'excerpt',
737        created_on => '19780131074500',
738        authored_on => '19780131074500',
739        modified_on => '19780131074600',
740        author_id => $chuckd->id,
741        status => MT::Entry::RELEASE(),
742    });
743    $page->id(20);
744    $page->tags('river', 'flow', 'watch');
745    $page->save() or die "Couldn't save page record 20: ".$page->errstr;
746
747    require MT::Folder;
748    my $folder = MT::Folder->new();
749    $folder->blog_id(1);
750    $folder->label('info');
751    $folder->description('information');
752    $folder->author_id($chuckd->id);
753    $folder->parent(0);
754    $folder->id(20);
755    $folder->save or die "Could'n sae folder record 20:" . $folder->errstr;
756    diag "Saved folder #20";
757
758    $folder = MT::Folder->new();
759    $folder->blog_id(1);
760    $folder->label('download');
761    $folder->description('download top');
762    $folder->author_id($chuckd->id);
763    $folder->parent(0);
764    $folder->id(21);
765    $folder->save or die "Could'n sae folder record 21:" . $folder->errstr;
766
767    $folder = MT::Folder->new();
768    $folder->blog_id(1);
769    $folder->label('nightly');
770    $folder->description('nightly build');
771    $folder->author_id($chuckd->id);
772    $folder->parent(21);
773    $folder->id(22);
774    $folder->save or die "Could'n sae folder record 22:" . $folder->errstr;
775
776    $page = MT::Page->new();
777    $page->set_values({
778        blog_id => 1,
779        title => 'Page #1',
780        text => 'Wish I was back in the city',
781        text_more => 'Instead of this old bank of sand,',
782        keywords => 'keywords',
783        created_on => '19790131074500',
784        authored_on => '19790131074500',
785        modified_on => '19790131074600',
786        author_id => $chuckd->id,
787        status => MT::Entry::RELEASE(),
788    });
789    $page->id(21);
790    $page->tags('page1', 'page2', 'page3');
791    $page->save() or die "Couldn't save page record 21: ".$page->errstr;
792
793    my $folder_place = new MT::Placement;
794    $folder_place->entry_id(21);
795    $folder_place->blog_id(1);
796    $folder_place->category_id(20);
797    $folder_place->is_primary(1);
798    $folder_place->save
799        or die "Couldn't save placement record: ".$folder_place->errstr;
800
801    $page = MT::Page->new();
802    $page->set_values({
803        blog_id => 1,
804        title => 'Page #2',
805        text => 'With the sub beating down over the chimney tops',
806        text_more => 'And the one I love so close at hand',
807        keywords => 'keywords',
808        created_on => '19800131074500',
809        authored_on => '19800131074500',
810        modified_on => '19800131074600',
811        author_id => $chuckd->id,
812        status => MT::Entry::RELEASE(),
813    });
814    $page->id(22);
815    $page->tags('page2', 'page3');
816    $page->save() or die "Couldn't save page record 22: ".$page->errstr;
817
818    $folder_place = new MT::Placement;
819    $folder_place->entry_id(22);
820    $folder_place->blog_id(1);
821    $folder_place->category_id(21);
822    $folder_place->is_primary(1);
823    $folder_place->save
824        or die "Couldn't save placement record: ".$folder_place->errstr;
825
826    $page = MT::Page->new();
827    $page->set_values({
828        blog_id => 1,
829        title => 'Page #3',
830        text => 'If I had wings and I could fly,',
831        text_more => 'I know where I would go.',
832        keywords => 'keywords',
833        created_on => '19810131074500',
834        authored_on => '19810131074500',
835        modified_on => '19810131074600',
836        author_id => $bobd->id,
837        status => MT::Entry::RELEASE(),
838    });
839    $page->id(23);
840    $page->tags('page3');
841    $page->save() or die "Couldn't save page record 23: ".$page->errstr;
842
843    $folder_place = new MT::Placement;
844    $folder_place->entry_id(23);
845    $folder_place->blog_id(1);
846    $folder_place->category_id(22);
847    $folder_place->is_primary(1);
848    $folder_place->save
849        or die "Couldn't save placement record: ".$folder_place->errstr;
850
851    unless (MT::Comment->count({entry_id => $page->id})) {
852        my $page_cmt = new MT::Comment();
853        $page_cmt->set_values({
854            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.",
855            entry_id => 23,
856            author => 'Steve Jobs',
857            visible => 1,
858            email => 'f@example.com',
859            url => 'http://example.com/',
860            blog_id => 1,
861            ip => '127.0.0.1',
862            created_on => '20040114182800',
863            modified_on => '20040114182800',
864        });
865        $page_cmt->id(13);
866        $page_cmt->save() or die "Couldn't save comment record 1: ".$page_cmt->errstr;
867    }
868
869    my $page_tb = MT::Trackback->new;
870    $page_tb->entry_id($page->id);
871    $page_tb->blog_id(1);
872    $page_tb->title("Page TrackBack Title");
873    $page_tb->description("Page TrackBack Description");
874    $page_tb->category_id(0);
875    $page_tb->id(3);
876    $page_tb->save or die "Couldn't save Trackback record 1: " . $tb->errstr;;
877
878    my $page_ping = MT::TBPing->new;
879    $page_ping->tb_id($page_tb->id);
880    $page_ping->blog_id(1);
881    $page_ping->ip('127.0.0.1');
882    $page_ping->title('Trackbacking to a page');
883    $page_ping->excerpt('Four bridges in the bayarea.  Golden Gate, Bay, San Mateo and Dan Burton.');
884    $page_ping->source_url('http://example.com/');
885    $page_ping->blog_name("Example Blog");
886    $page_ping->created_on('20040101000000');
887    $page_ping->modified_on('20040101000000');
888    $page_ping->visible(1);
889    $page_ping->id(3);
890    $page_ping->save or die "Couldn't save TBPing record 1: " . $ping->errstr;
891
892    MT->instance->rebuild(
893        BlogId => 1,
894        EntryCallback => sub { print STDERR "# Rebuilding entry " . $_[0]->id . "\n" }
895    );
896
897    ### Make ObjectAsset mappings
898    require MT::ObjectAsset;
899    my $map;
900    $entry = MT::Entry->load(1);
901    if ($entry) {
902        $map = new MT::ObjectAsset;
903        $map->blog_id($entry->blog_id);
904        $map->asset_id(1);
905        $map->object_ds($entry->datasource);
906        $map->object_id($entry->id);
907        $map->save;
908    }
909    $page = MT::Page->load(20);
910    if ($entry) {
911        $map = new MT::ObjectAsset;
912        $map->blog_id($page->blog_id);
913        $map->asset_id(2);
914        $map->object_ds($page->datasource);
915        $map->object_id($page->id);
916        $map->save;
917    }
918
919    1;
920}
921
9221;
Note: See TracBrowser for help on using the browser.